فهرست منبع

Merge pull request #13912 from id/20241001-ci-publish-docker-images-to-s3

ci: publish docker images to S3
Ivan Dyachkov 1 سال پیش
والد
کامیت
554471ab18
1فایلهای تغییر یافته به همراه39 افزوده شده و 0 حذف شده
  1. 39 0
      .github/workflows/build_and_push_docker_images.yaml

+ 39 - 0
.github/workflows/build_and_push_docker_images.yaml

@@ -27,6 +27,12 @@ on:
         required: false
       AWS_SECRET_ACCESS_KEY:
         required: false
+      AWS_DEFAULT_REGION:
+        required: false
+      AWS_S3_BUCKET:
+        required: false
+      AWS_CLOUDFRONT_ID:
+        required: false
   workflow_dispatch:
     inputs:
       ref:
@@ -111,6 +117,7 @@ jobs:
       - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
         with:
           ref: ${{ github.event.inputs.ref }}
+
       - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
         with:
           pattern: "${{ matrix.profile[0] }}-*.tar.gz"
@@ -222,3 +229,35 @@ jobs:
           export BUILD_FROM="${_EMQX_DOCKER_IMAGE_TAG}"
           export EMQX_IMAGE_TAG="${_EMQX_DOCKER_IMAGE_TAG##docker.io/}-sf"
           ./build ${PROFILE} docker
+
+      - uses: aws-actions/configure-aws-credentials@e3dd6a429d7300a6a4c196c26e071d42e0343502 # v4.0.2
+        if: inputs.publish || github.repository_owner != 'emqx'
+        with:
+          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
+          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
+          aws-region: ${{ secrets.AWS_DEFAULT_REGION }}
+
+      - name: upload to aws s3
+        if: inputs.publish || github.repository_owner != 'emqx'
+        env:
+          AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
+          AWS_CLOUDFRONT_ID: ${{ secrets.AWS_CLOUDFRONT_ID }}
+          ORIG_PROFILE: ${{ inputs.profile }}
+        run: |
+          set -xeuo pipefail
+          if [ $ORIG_PROFILE = 'emqx' ]; then
+              s3dir="emqx-ce/v$PKG_VSN"
+          elif [ $ORIG_PROFILE = 'emqx-enterprise' ]; then
+              s3dir="emqx-ee/e$PKG_VSN"
+          else
+              echo "unknown profile $ORIG_PROFILE"
+              exit 1
+          fi
+          docker pull --platform linux/amd64 "${_EMQX_DOCKER_IMAGE_TAG}"
+          docker save "${_EMQX_DOCKER_IMAGE_TAG}" | gzip > "$PROFILE-$PKG_VSN-docker-amd64.tar.gz"
+          docker pull --platform linux/arm64 "${_EMQX_DOCKER_IMAGE_TAG}"
+          docker save "${_EMQX_DOCKER_IMAGE_TAG}" | gzip > "$PROFILE-$PKG_VSN-docker-arm64.tar.gz"
+          ls -lh
+          aws s3 cp "$PROFILE-$PKG_VSN-docker-amd64.tar.gz" "s3://$AWS_S3_BUCKET/$s3dir/"
+          aws s3 cp "$PROFILE-$PKG_VSN-docker-arm64.tar.gz" "s3://$AWS_S3_BUCKET/$s3dir/"
+          aws cloudfront create-invalidation --distribution-id "$AWS_CLOUDFRONT_ID" --paths "/$s3dir/*docker*"