From 0cb572162abd0786459c7fddf44c6e503bee8437 Mon Sep 17 00:00:00 2001 From: TwiceBurnt <169301814+2xburnt@users.noreply.github.com> Date: Thu, 3 Oct 2024 11:17:32 -0500 Subject: [PATCH] add heighliner push (#266) --- .github/workflows/docker-build.yaml | 2 +- .github/workflows/heighliner-push.yaml | 94 ++++++++++++++++++++++++++ 2 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/heighliner-push.yaml diff --git a/.github/workflows/docker-build.yaml b/.github/workflows/docker-build.yaml index e8d55834..aa005089 100644 --- a/.github/workflows/docker-build.yaml +++ b/.github/workflows/docker-build.yaml @@ -42,7 +42,7 @@ jobs: with: distribution: goreleaser version: "~> v2" - args: build --clean --id xiond_${{ matrix.os }}_${{ matrix.arch }} + args: build --clean --skip validate --id xiond_${{ matrix.os }}_${{ matrix.arch }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/heighliner-push.yaml b/.github/workflows/heighliner-push.yaml new file mode 100644 index 00000000..1f4c842d --- /dev/null +++ b/.github/workflows/heighliner-push.yaml @@ -0,0 +1,94 @@ +name: Push Heighliner images + +# reusable workflow, do not add triggers +on: + workflow_call: + workflow_dispatch: + +env: + REPO: ghcr.io/${{ github.repository }}/heighliner + +jobs: + merge: + name: Create registry manifests + runs-on: ubuntu-latest + permissions: + id-token: write + contents: read + packages: write + steps: + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + aws-region: us-east-1 + role-to-assume: ${{ secrets.AWS_OIDC_ROLE }} + + - name: Login to Amazon ECR + id: login-ecr + uses: aws-actions/amazon-ecr-login@v2 + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Prepare environment + run: | + echo "TAG_VERSION=${GITHUB_SHA:0:7}" | tee -a $GITHUB_ENV + + - name: Metadata for xion container + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REPO }} + tags: | + type=raw,value=${{ env.TAG_VERSION }} + type=semver,pattern={{version}},enable=${{ github.event_name == 'push' }} + type=raw,value=latest,enable={{is_default_branch}} + + - name: Download images + uses: actions/download-artifact@v4 + with: + path: ${{ runner.temp }} + pattern: heighliner* + merge-multiple: true + + - name: Load images + working-directory: ${{ runner.temp }} + run: | + for image in heighliner*.tar; do + PLATFORM=$(basename $image .tar | cut -d- -f2-) + docker load < $image; + docker tag heighliner:$PLATFORM ${REPO}:$PLATFORM + docker push ${REPO}:$PLATFORM; + done; + + - name: Prepare mainfest vars + run: | + IMAGE_TARGETS=$(jq -cr '.tags | map("-t " + .) | join(" ")' <<< $DOCKER_METADATA_OUTPUT_JSON) + IMAGE_TAGS=$(docker image ls $REPO --digests --format json | jq -r '"\(.Repository):\(.Tag)"' | tr '\n' ' ') + echo "IMAGE_TAGS=$IMAGE_TAGS" | tee -a $GITHUB_ENV + echo "IMAGE_TARGETS=${IMAGE_TARGETS}" | tee -a $GITHUB_ENV + + - name: Create manifest list and push + run: | + eval "docker buildx imagetools create ${IMAGE_TARGETS} ${IMAGE_TAGS}" + + - name: Inspect image + run: | + jq -cr '.tags | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON" | \ + xargs -n1 docker buildx imagetools inspect%