From 407beed0af2ae7e916680ef877bb63bbff319c47 Mon Sep 17 00:00:00 2001 From: Slava <20563034+veaceslavdoina@users.noreply.github.com> Date: Wed, 26 Feb 2025 12:08:19 +0200 Subject: [PATCH] ci: use common docker reusable workflow (#222) --- .github/workflows/docker-dist-tests.yml | 5 +- .github/workflows/docker-reusable.yml | 178 ------------------------ .github/workflows/docker.yml | 7 +- 3 files changed, 8 insertions(+), 182 deletions(-) delete mode 100644 .github/workflows/docker-reusable.yml diff --git a/.github/workflows/docker-dist-tests.yml b/.github/workflows/docker-dist-tests.yml index fbd7a9b..37a85b0 100644 --- a/.github/workflows/docker-dist-tests.yml +++ b/.github/workflows/docker-dist-tests.yml @@ -14,15 +14,16 @@ on: - '!docker/deploy.*' - '.github/**' - '!.github/workflows/docker-dist-tests.yml' - - '!.github/workflows/docker-reusable.yml' workflow_dispatch: jobs: build-and-push: name: Build and Push - uses: ./.github/workflows/docker-reusable.yml + uses: codex-storage/github-actions/.github/workflows/docker-reusable.yml@master with: docker_file: docker/deploy.Dockerfile + dockerhub_repo: codexstorage/codex-contracts-eth + tag_latest: ${{ github.ref_name == github.event.repository.default_branch || startsWith(github.ref, 'refs/tags/') }} tag_suffix: dist-tests secrets: inherit diff --git a/.github/workflows/docker-reusable.yml b/.github/workflows/docker-reusable.yml deleted file mode 100644 index 955ee42..0000000 --- a/.github/workflows/docker-reusable.yml +++ /dev/null @@ -1,178 +0,0 @@ -name: Docker - Reusable - - -on: - workflow_call: - inputs: - docker_file: - default: docker/Dockerfile - description: Dockerfile - required: false - type: string - docker_repo: - default: codexstorage/codex-contracts-eth - description: DockerHub repository - required: false - type: string - tag_latest: - default: true - description: Set latest tag for Docker images - required: false - type: boolean - tag_sha: - default: true - description: Set Git short commit as Docker tag - required: false - type: boolean - tag_suffix: - default: '' - description: Suffix for Docker images tag - required: false - type: string - - -env: - DOCKER_FILE: ${{ inputs.docker_file }} - DOCKER_REPO: ${{ inputs.docker_repo }} - TAG_LATEST: ${{ inputs.tag_latest }} - TAG_SHA: ${{ inputs.tag_sha }} - TAG_SUFFIX: ${{ inputs.tag_suffix }} - - -jobs: - # Build platform specific image - build: - strategy: - fail-fast: true - matrix: - target: - - os: linux - arch: amd64 - - os: linux - arch: arm64 - include: - - target: - os: linux - arch: amd64 - builder: ubuntu-22.04 - - target: - os: linux - arch: arm64 - builder: buildjet-4vcpu-ubuntu-2204-arm - - name: Build ${{ matrix.target.os }}/${{ matrix.target.arch }} - runs-on: ${{ matrix.builder }} - env: - PLATFORM: ${{ format('{0}/{1}', 'linux', matrix.target.arch) }} - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Docker - Meta - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ env.DOCKER_REPO }} - - - name: Docker - Set up Buildx - uses: docker/setup-buildx-action@v3 - - - name: Docker - Login to Docker Hub - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Docker - Build and Push by digest - id: build - uses: docker/build-push-action@v5 - with: - context: . - file: ${{ env.DOCKER_FILE }} - platforms: ${{ env.PLATFORM }} - push: true - labels: ${{ steps.meta.outputs.labels }} - outputs: type=image,name=${{ env.DOCKER_REPO }},push-by-digest=true,name-canonical=true,push=true - - - name: Docker - Export digest - run: | - mkdir -p /tmp/digests - digest="${{ steps.build.outputs.digest }}" - touch "/tmp/digests/${digest#sha256:}" - - - name: Docker - Upload digest - uses: actions/upload-artifact@v4 - with: - name: digests-${{ matrix.target.arch }} - path: /tmp/digests/* - if-no-files-found: error - retention-days: 1 - - - # Publish multi-platform image - publish: - name: Publish multi-platform image - runs-on: ubuntu-latest - needs: build - steps: - - name: Docker - Variables - run: | - # Adjust custom suffix when set and - if [[ -n "${{ env.TAG_SUFFIX }}" ]]; then - echo "TAG_SUFFIX=-${{ env.TAG_SUFFIX }}" >>$GITHUB_ENV - fi - # Disable SHA tags on tagged release - if [[ ${{ startsWith(github.ref, 'refs/tags/') }} == "true" ]]; then - echo "TAG_SHA=false" >>$GITHUB_ENV - fi - # Handle latest and latest-custom using raw - if [[ ${{ env.TAG_SHA }} == "false" ]]; then - echo "TAG_LATEST=false" >>$GITHUB_ENV - echo "TAG_RAW=true" >>$GITHUB_ENV - if [[ -z "${{ env.TAG_SUFFIX }}" ]]; then - echo "TAG_RAW_VALUE=latest" >>$GITHUB_ENV - else - echo "TAG_RAW_VALUE=latest-{{ env.TAG_SUFFIX }}" >>$GITHUB_ENV - fi - else - echo "TAG_RAW=false" >>$GITHUB_ENV - fi - - - name: Docker - Download digests - uses: actions/download-artifact@v4 - with: - pattern: digests-* - merge-multiple: true - path: /tmp/digests - - - name: Docker - Set up Buildx - uses: docker/setup-buildx-action@v3 - - - name: Docker - Meta - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ env.DOCKER_REPO }} - flavor: | - latest=${{ env.TAG_LATEST }} - suffix=${{ env.TAG_SUFFIX }},onlatest=true - tags: | - type=semver,pattern={{version}} - type=raw,enable=${{ env.TAG_RAW }},value=latest - type=sha,enable=${{ env.TAG_SHA }} - - - name: Docker - Login to Docker Hub - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Docker - Create manifest list and push - working-directory: /tmp/digests - run: | - docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \ - $(printf '${{ env.DOCKER_REPO }}@sha256:%s ' *) - - - name: Docker - Inspect image - run: | - docker buildx imagetools inspect ${{ env.DOCKER_REPO }}:${{ steps.meta.outputs.version }} diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index f6c866a..dabb13d 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -14,12 +14,15 @@ on: - '!docker/Dockerfile' - '.github/**' - '!.github/workflows/docker.yml' - - '!.github/workflows/docker-reusable.yml' workflow_dispatch: jobs: build-and-push: name: Build and Push - uses: ./.github/workflows/docker-reusable.yml + uses: codex-storage/github-actions/.github/workflows/docker-reusable.yml@master + with: + docker_file: docker/Dockerfile + dockerhub_repo: codexstorage/codex-contracts-eth + tag_latest: ${{ github.ref_name == github.event.repository.default_branch || startsWith(github.ref, 'refs/tags/') }} secrets: inherit