| name: Push ephmereral env image |
| |
| on: |
| workflow_run: |
| workflows: ["Docker"] |
| types: |
| - completed |
| |
| jobs: |
| docker_ephemeral_env: |
| name: Push ephemeral env Docker image to ECR |
| if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success' |
| runs-on: ubuntu-latest |
| |
| steps: |
| - name: 'Download artifact' |
| uses: actions/github-script@v3.1.0 |
| with: |
| script: | |
| const artifacts = await github.actions.listWorkflowRunArtifacts({ |
| owner: context.repo.owner, |
| repo: context.repo.repo, |
| run_id: ${{ github.event.workflow_run.id }}, |
| }); |
| |
| core.info('*** artifacts') |
| core.info(JSON.stringify(artifacts)) |
| |
| const matchArtifact = artifacts.data.artifacts.filter((artifact) => { |
| return artifact.name == "build" |
| })[0]; |
| if(!matchArtifact) return core.setFailed("Build artifacts not found") |
| |
| const download = await github.actions.downloadArtifact({ |
| owner: context.repo.owner, |
| repo: context.repo.repo, |
| artifact_id: matchArtifact.id, |
| archive_format: 'zip', |
| }); |
| var fs = require('fs'); |
| fs.writeFileSync('${{github.workspace}}/build.zip', Buffer.from(download.data)); |
| |
| - run: unzip build.zip |
| |
| - name: Display downloaded files (debug) |
| run: ls -la |
| |
| - name: Get SHA |
| id: get-sha |
| run: echo "::set-output name=sha::$(cat ./SHA)" |
| |
| - name: Get PR |
| id: get-pr |
| run: echo "::set-output name=num::$(cat ./PR-NUM)" |
| |
| - name: Configure AWS credentials |
| uses: aws-actions/configure-aws-credentials@v1 |
| with: |
| aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} |
| aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} |
| aws-region: us-west-2 |
| |
| - name: Login to Amazon ECR |
| id: login-ecr |
| uses: aws-actions/amazon-ecr-login@v1 |
| |
| - name: Load, tag and push image to ECR |
| id: push-image |
| env: |
| ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} |
| ECR_REPOSITORY: superset-ci |
| SHA: ${{ steps.get-sha.outputs.sha }} |
| IMAGE_TAG: pr-${{ steps.get-pr.outputs.num }} |
| run: | |
| docker load < $SHA.tar.gz |
| docker tag $SHA $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG |
| docker tag $SHA $ECR_REGISTRY/$ECR_REPOSITORY:$SHA |
| docker push -a $ECR_REGISTRY/$ECR_REPOSITORY |