diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2cae2b8e1..3e45f6620 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -100,7 +100,7 @@ jobs: # Warm the symfony cache so it gets bundled with phar. ./bin/acli composer box-compile - - name: Store artifact + - name: Store artifact in Actions uses: actions/upload-artifact@v4 with: name: acli.phar diff --git a/.github/workflows/upload-s3.yml b/.github/workflows/upload-s3.yml new file mode 100644 index 000000000..33ed6b509 --- /dev/null +++ b/.github/workflows/upload-s3.yml @@ -0,0 +1,61 @@ +name: Upload phar to S3 +on: + workflow_run: + workflows: [CI] + types: + - completed +jobs: + download: + runs-on: ubuntu-latest + steps: + - name: Find associated pull request + id: pr + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7 + with: + script: | + const response = await github.rest.search.issuesAndPullRequests({ + q: 'repo:${{ github.repository }} is:pr sha:${{ github.event.workflow_run.head_sha }}', + per_page: 1, + }) + const items = response.data.items + if (items.length < 1) { + console.error('No PRs found') + return + } + const pullRequestNumber = items[0].number + console.info("Pull request number is", pullRequestNumber) + return pullRequestNumber + - name: 'Download artifact' + uses: actions/github-script@v6 + with: + script: | + let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({ + owner: context.repo.owner, + repo: context.repo.repo, + run_id: context.payload.workflow_run.id, + }); + let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => { + return artifact.name == "acli.phar" + })[0]; + let download = await github.rest.actions.downloadArtifact({ + owner: context.repo.owner, + repo: context.repo.repo, + artifact_id: matchArtifact.id, + archive_format: 'zip', + }); + let fs = require('fs'); + fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/acli.phar.zip`, Buffer.from(download.data)); + - name: 'Unzip artifact' + run: unzip acli.phar.zip + - name: Store artifact in S3 + run: | + aws s3 cp acli.phar s3://acquia-cli/build/$GITHUB_SHA/ + env: + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_DEFAULT_REGION: us-east-1 + - name: Comment on PR + run: 'gh pr comment --edit-last https://github.com/$GITHUB_REPOSITORY/pull/$GITHUB_PR --body "Try the dev build for this PR: https://acquia-cli.s3.amazonaws.com/builds/$GITHUB_SHA/acli.phar"' + env: + GH_TOKEN: ${{ github.token }} + GITHUB_PR: ${{ steps.pr.outputs.result }}