Skip to content

Commit

Permalink
Make the PR Bot manually invokable (#1632)
Browse files Browse the repository at this point in the history
  • Loading branch information
jdisanti authored Aug 15, 2022
1 parent 374a1c5 commit 7b2aef7
Show file tree
Hide file tree
Showing 3 changed files with 95 additions and 10 deletions.
4 changes: 4 additions & 0 deletions .github/workflows/ci-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,10 @@ jobs:
# Only run this job on pull requests (not directly on main)
if: ${{ github.head_ref }}
uses: ./.github/workflows/pull-request-bot.yml
with:
issue_number: ${{ github.event.number }}
base_revision: ${{ github.event.pull_request.base.sha }}
head_revision: ${{ github.event.pull_request.head.sha }}
secrets:
SMITHY_RS_PULL_REQUEST_CDN_S3_BUCKET_NAME: ${{ secrets.SMITHY_RS_PULL_REQUEST_CDN_S3_BUCKET_NAME }}
SMITHY_RS_PULL_REQUEST_CDN_ROLE_ARN: ${{ secrets.SMITHY_RS_PULL_REQUEST_CDN_ROLE_ARN }}
69 changes: 69 additions & 0 deletions .github/workflows/manual-pull-request-bot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# This workflow allows maintainers to manually run the PR bot on a pull request to work around permissions
# issues that prevent it from working for non-maintainers.
name: Invoke PR Bot as Maintainer
on:
workflow_dispatch:
inputs:
pull_number:
description: The PR number to invoke the PR bot on.
required: true
type: string

jobs:
get-pr-info:
name: Get PR info
runs-on: ubuntu-latest
steps:
- name: Get PR info
id: get-pr-info
uses: actions/github-script@v5
with:
script: |
const response = await github.rest.pulls.get({
pull_number: ${{ inputs.pull_number }},
owner: context.repo.owner,
repo: context.repo.repo,
});
const data = {
base_revision: response.data.base.sha,
head_revision: response.data.head.sha,
};
console.log("data:", data);
return data;
outputs:
pull_data: ${{ steps.get-pr-info.outputs.result }}

# This job detects if the PR made changes to build tools. If it did, then it builds a new
# build Docker image. Otherwise, it downloads a build image from Public ECR. In both cases,
# it uploads the image as a build artifact for other jobs to download and use.
acquire-base-image:
name: Acquire Base Image
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
path: smithy-rs
fetch-depth: 0
- name: Acquire base image
id: acquire
run: ./smithy-rs/tools/ci-build/acquire-build-image
- name: Upload base image
uses: actions/upload-artifact@v3
with:
name: smithy-rs-base-image
path: smithy-rs-base-image
retention-days: 1

invoke-pr-bot:
name: PR Bot
needs:
- acquire-base-image
- get-pr-info
uses: ./.github/workflows/pull-request-bot.yml
with:
issue_number: ${{ inputs.pull_number }}
base_revision: ${{ fromJSON(needs.get-pr-info.outputs.pull_data).base_revision }}
head_revision: ${{ fromJSON(needs.get-pr-info.outputs.pull_data).head_revision }}
secrets:
SMITHY_RS_PULL_REQUEST_CDN_S3_BUCKET_NAME: ${{ secrets.SMITHY_RS_PULL_REQUEST_CDN_S3_BUCKET_NAME }}
SMITHY_RS_PULL_REQUEST_CDN_ROLE_ARN: ${{ secrets.SMITHY_RS_PULL_REQUEST_CDN_ROLE_ARN }}
32 changes: 22 additions & 10 deletions .github/workflows/pull-request-bot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,19 @@
name: PR Bot
on:
workflow_call:
inputs:
issue_number:
description: The issue number to post the diff comment to.
required: true
type: string
base_revision:
description: Base git revision.
required: true
type: string
head_revision:
description: Head git revision.
required: true
type: string
secrets:
SMITHY_RS_PULL_REQUEST_CDN_S3_BUCKET_NAME:
required: true
Expand All @@ -10,7 +23,7 @@ on:

# Allow one instance of this workflow per pull request, and cancel older runs when new changes are pushed
concurrency:
group: pull-request-bot-yml-${{ github.ref }}
group: pull-request-bot-yml-${{ inputs.issue_number }}
cancel-in-progress: true

env:
Expand Down Expand Up @@ -40,7 +53,7 @@ jobs:
uses: ./smithy-rs/.github/actions/docker-build
with:
action: generate-codegen-diff
action-arguments: ${{ github.event.pull_request.base.sha }}
action-arguments: ${{ inputs.base_revision }}
- uses: aws-actions/configure-aws-credentials@v1
name: Acquire credentials for uploading to S3
with:
Expand All @@ -49,9 +62,9 @@ jobs:
aws-region: us-west-2
- name: Upload diff to S3
run: |
if [[ -d artifacts/codegen-diff/${{ github.event.pull_request.base.sha }} ]]; then
aws s3 cp artifacts/codegen-diff/${{ github.event.pull_request.base.sha }} \
"s3://${S3_BUCKET_NAME}/codegen-diff/${{ github.event.pull_request.base.sha }}" --recursive
if [[ -d artifacts/codegen-diff/${{ inputs.base_revision }} ]]; then
aws s3 cp artifacts/codegen-diff/${{ inputs.base_revision }} \
"s3://${S3_BUCKET_NAME}/codegen-diff/${{ inputs.base_revision }}" --recursive
fi
generate-doc-preview:
Expand Down Expand Up @@ -107,9 +120,9 @@ jobs:
cargo doc --no-deps --all-features
popd
./tools/generate-doc-preview-index.sh ${{ github.event.pull_request.base.sha }}
./tools/generate-doc-preview-index.sh ${{ inputs.base_revision }}
echo '::set-output name=bot-message::A [new doc preview](https://d2luzm2xt3nokh.cloudfront.net/docs/'${{ github.event.pull_request.head.sha }}'/index.html) is ready to view.'
echo '::set-output name=bot-message::A [new doc preview](https://d2luzm2xt3nokh.cloudfront.net/docs/'${{ inputs.head_revision }}'/index.html) is ready to view.'
- uses: aws-actions/configure-aws-credentials@v1
name: Acquire credentials for uploading to S3
with:
Expand All @@ -118,7 +131,7 @@ jobs:
aws-region: us-west-2
- name: Upload doc preview to S3
run: |
aws s3 cp target/doc "s3://${S3_BUCKET_NAME}/docs/${{ github.event.pull_request.head.sha }}" --recursive
aws s3 cp target/doc "s3://${S3_BUCKET_NAME}/docs/${{ inputs.head_revision }}" --recursive
post-bot-comment:
needs:
Expand All @@ -143,11 +156,10 @@ jobs:
echo ::set-output name=codegen-diff::"$(cat ./bot-message-codegen-diff)"
- name: Post bot comment
uses: actions/github-script@v5
if: ${{ github.head_ref != null }}
with:
script: |
await github.rest.issues.createComment({
issue_number: context.issue.number,
issue_number: ${{ inputs.issue_number }},
owner: context.repo.owner,
repo: context.repo.repo,
body: '${{ steps.bot-messages.outputs.codegen-diff }}\n\n' +
Expand Down

0 comments on commit 7b2aef7

Please sign in to comment.