From 6abe1e0457828f81fda68784a572b42331824047 Mon Sep 17 00:00:00 2001 From: Mahendra Paipuri Date: Thu, 2 May 2024 13:56:35 +0200 Subject: [PATCH] ci: PAttempt to publish README to registries Signed-off-by: Mahendra Paipuri --- .github/workflows/ci.yml | 12 ++++++++ .github/workflows/step_images.yml | 47 ++++++++++++++++++++++++------- Makefile.common | 4 +++ 3 files changed, 53 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 848d919b..22512926 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,6 +10,10 @@ on: type: string description: DockerHub organization default: mahendrapaipuri + docker_hub_registry_provider: + type: string + description: DockerHub registry provider + default: dockerhub quay_registry: type: string description: Quay registry @@ -18,6 +22,10 @@ on: type: string description: Quay organization default: mahendrapaipuri + quay_registry_provider: + type: string + description: Quay registry provider + default: quay push: paths: - "go.sum" @@ -69,9 +77,11 @@ jobs: with: registry: ${{ inputs.docker_hub_registry || 'docker.io' }} organization: ${{ inputs.docker_hub_organization || 'mahendrapaipuri' }} + registry_provider: ${{ inputs.docker_hub_registry_provider || 'dockerhub' }} secrets: login: ${{ secrets.DOCKER_HUB_LOGIN }} password: ${{ secrets.DOCKER_HUB_PASSWORD }} + quay_api_token: ${{ secrets.QUAY_API_TOKEN }} quay: needs: [build] @@ -81,6 +91,8 @@ jobs: with: registry: ${{ inputs.quay_registry || 'quay.io' }} organization: ${{ inputs.quay_organization || 'mahendrapaipuri' }} + registry_provider: ${{ inputs.quay_registry_provider || 'quay' }} secrets: login: ${{ secrets.QUAY_LOGIN }} password: ${{ secrets.QUAY_PASSWORD }} + quay_api_token: ${{ secrets.QUAY_API_TOKEN }} diff --git a/.github/workflows/step_images.yml b/.github/workflows/step_images.yml index e718dd20..6900e56c 100644 --- a/.github/workflows/step_images.yml +++ b/.github/workflows/step_images.yml @@ -10,11 +10,16 @@ on: organization: type: string description: Organization + registry_provider: + type: string + description: Registry Provider secrets: login: required: true password: required: true + quay_api_token: + required: true jobs: images: @@ -24,15 +29,23 @@ jobs: - name: Checkout uses: actions/checkout@v3 - - name: Get target branch - id: target_branch + - name: Get step vars + id: vars run: | if [[ "${GITHUB_EVENT_NAME}" == "push" ]]; then - echo "name=$(echo ${GITHUB_REF##*/})" >> $GITHUB_OUTPUT + echo "branch_name=$(echo ${GITHUB_REF##*/})" >> $GITHUB_OUTPUT elif [[ "${GITHUB_EVENT_NAME}" == "pull_request" ]]; then - echo "name=$(echo $GITHUB_BASE_REF)" >> $GITHUB_OUTPUT + echo "branch_name=$(echo $GITHUB_BASE_REF)" >> $GITHUB_OUTPUT else - echo "name=nightly" >> $GITHUB_OUTPUT + echo "branch_name=nightly" >> $GITHUB_OUTPUT + fi + + # Repo name for container registries + if [ ${{ inputs.registry_provider }} == 'dockerhub' ]; then + echo "repo_name=$(make docker-repo-name)" >> $GITHUB_OUTPUT + else + export DOCKER_REPO="$(echo quay.io/${GITHUB_REPOSITORY_OWNER} | tr -d '-')" + echo "repo_name=$(make docker-repo-name)" >> $GITHUB_OUTPUT fi - name: Download go build artifacts @@ -48,23 +61,37 @@ jobs: - name: Build container images run: | chmod +x -R .build - make docker DOCKER_IMAGE_TAG=${{ steps.target_branch.outputs.name }} DOCKER_REPO=${{ inputs.registry }}/${{ inputs.organization }} + make docker DOCKER_IMAGE_TAG=${{ steps.vars.outputs.branch_name }} DOCKER_REPO=${{ inputs.registry }}/${{ inputs.organization }} docker images - name: Test container images - run: make test-docker DOCKER_IMAGE_TAG=${{ steps.target_branch.outputs.name }} DOCKER_REPO=${{ inputs.registry }}/${{ inputs.organization }} + run: make test-docker DOCKER_IMAGE_TAG=${{ steps.vars.outputs.branch_name }} DOCKER_REPO=${{ inputs.registry }}/${{ inputs.organization }} - name: Publish image for current branch/tag if: github.ref == 'refs/heads/main' run: | echo ${{ secrets.password }} | docker login -u ${{ secrets.login }} --password-stdin ${{ inputs.registry }} - make docker-publish DOCKER_IMAGE_TAG=${{ steps.target_branch.outputs.name }} DOCKER_REPO=${{ inputs.registry }}/${{ inputs.organization }} - make docker-manifest DOCKER_IMAGE_TAG=${{ steps.target_branch.outputs.name }} DOCKER_REPO=${{ inputs.registry }}/${{ inputs.organization }} + make docker-publish DOCKER_IMAGE_TAG=${{ steps.vars.outputs.branch_name }} DOCKER_REPO=${{ inputs.registry }}/${{ inputs.organization }} + make docker-manifest DOCKER_IMAGE_TAG=${{ steps.vars.outputs.branch_name }} DOCKER_REPO=${{ inputs.registry }}/${{ inputs.organization }} - name: Publish image with latest tag if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') run: | echo ${{ secrets.password }} | docker login -u ${{ secrets.login }} --password-stdin ${{ inputs.registry }} - make docker-tag-latest DOCKER_IMAGE_TAG=${{ steps.target_branch.outputs.name }} DOCKER_REPO=${{ inputs.registry }}/${{ inputs.organization }} + make docker-tag-latest DOCKER_IMAGE_TAG=${{ steps.vars.outputs.branch_name }} DOCKER_REPO=${{ inputs.registry }}/${{ inputs.organization }} make docker-publish DOCKER_IMAGE_TAG=latest DOCKER_REPO=${{ inputs.registry }}/${{ inputs.organization }} make docker-manifest DOCKER_IMAGE_TAG=latest DOCKER_REPO=${{ inputs.registry }}/${{ inputs.organization }} + + - name: Push README to registry + uses: christian-korneck/update-container-description-action@d36005551adeaba9698d8d67a296bd16fa91f8e8 # v1 + env: + # For dockerhub registry + DOCKER_USER: ${{ secrets.login }} + DOCKER_PASS: ${{ secrets.password }} + # For quay.io + DOCKER_APIKEY: ${{ secrets.quay_api_token }} + with: + destination_container_repo: ${{ steps.vars.outputs.repo_name }} + provider: ${{ inputs.registry_provider }} + short_description: ${{ steps.vars.outputs.repo_name }} + readme_file: 'README.md' diff --git a/Makefile.common b/Makefile.common index 4e536cad..7da873d1 100644 --- a/Makefile.common +++ b/Makefile.common @@ -190,6 +190,10 @@ common-tarball: promu @echo ">> building release tarball" $(PROMU) tarball --prefix $(PREFIX) $(BIN_DIR) +.PHONY: common-docker-repo-name +common-docker-repo-name: + @echo "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)" + .PHONY: common-docker $(BUILD_DOCKER_ARCHS) common-docker: $(BUILD_DOCKER_ARCHS) $(BUILD_DOCKER_ARCHS): common-docker-%: