chore(ci): fix codegen diff #1484
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: codegen diff preview | |
# This job will generate a codegen output diff comparing the target base ref with current HEAD ref and push it to S3 | |
# and comment on GitHub PR with a link to the HTML output. | |
on: | |
pull_request: | |
types: | |
- opened | |
- reopened | |
- synchronize | |
permissions: | |
id-token: write | |
contents: read | |
pull-requests: write | |
# Allow one instance of this workflow per pull request, and cancel older runs when new changes are pushed | |
concurrency: | |
group: ci-codegen-diff-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
JAVA_VERSION: 11 | |
RUN: ${{ github.run_id }}-${{ github.run_number }} | |
DIFF2HTML_VERSION: 5.2.5 | |
# Below is the set of services that are generated for codegen preview | |
# These are carefully selected to exercise every Smithy protocol. | |
# - @awsJson1_0: dynamodb | |
# - @awsJson1_1: codebuild | |
# - @awsQuery: sts | |
# - @ec2Query: ec2 | |
# - @restJson1: polly | |
# - @restXml: s3 | |
PREVIEW_SERVICES: +dynamodb,+codebuild,+sts,+ec2,+polly,+s3 | |
HEAD_BRANCH_NAME: __tmp-localonly-head | |
BASE_BRANCH_NAME: __tmp-localonly-base | |
jobs: | |
generate-codegen-diff: | |
runs-on: ubuntu-latest | |
name: Generate diff and upload to S3 | |
outputs: | |
bot-message: ${{ steps.generate-diff.outputs.codegen-diff-msg }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
path: 'aws-sdk-kotlin' | |
- uses: actions/checkout@v4 | |
with: | |
repository: 'awslabs/aws-kotlin-repo-tools' | |
ref: 'ci-utils' | |
path: 'aws-kotlin-repo-tools' | |
- uses: actions/checkout@v4 | |
with: | |
repository: 'awslabs/smithy-kotlin' | |
fetch-depth: 0 | |
path: 'smithy-kotlin' | |
- uses: actions/cache@v2 | |
name: Gradle Cache | |
with: | |
path: | | |
~/.gradle/caches | |
~/.gradle/wrapper | |
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} | |
restore-keys: | | |
${{ runner.os }}-gradle- | |
- name: Set up JDK | |
uses: actions/setup-java@v1 | |
with: | |
java-version: ${{ env.JAVA_VERSION }} | |
- name: Install deps and setup environment | |
run: | | |
npm install -g diff2html-cli@${{ env.DIFF2HTML_VERSION }} | |
env | sort | |
# store off a copy of head ref of ci.py, otherwise base ref generation will use a different version of this script | |
CODEGEN_DIFF_REVISIONS=${{ runner.temp }}/codegen-diff-revisions.py | |
cp $GITHUB_WORKSPACE/aws-sdk-kotlin/.github/scripts/codegen-diff-revisions.py $CODEGEN_DIFF_REVISIONS | |
echo "CODEGEN_DIFF_REVISIONS=$CODEGEN_DIFF_REVISIONS" >> "$GITHUB_ENV" | |
echo "REPO_TOOLS=$GITHUB_WORKSPACE/aws-kotlin-repo-tools" >> "$GITHUB_ENV" | |
echo "SMITHY_KOTLIN_DIR=$GITHUB_WORKSPACE/smithy-kotlin" >> "$GITHUB_ENV" | |
echo "SDK_DIR=$GITHUB_WORKSPACE/aws-sdk-kotlin" >> "$GITHUB_ENV" | |
- name: Generate code for head ref | |
run: | | |
branch=$(python3 $REPO_TOOLS/scripts/ci.py get-branch $SDK_DIR) | |
echo "using branch $branch" | |
python3 $REPO_TOOLS/scripts/ci.py -v set-branch --branch $branch $SMITHY_KOTLIN_DIR | |
pushd $SDK_DIR | |
git checkout -b $HEAD_BRANCH_NAME | |
$CODEGEN_DIFF_REVISIONS codegen --bootstrap ${{ env.PREVIEW_SERVICES }} | |
popd | |
- name: Generate code for base ref | |
run: | | |
branch=$GITHUB_BASE_REF | |
echo "checkout smithy-kotlin at base ref: $branch" | |
pushd $SMITHY_KOTLIN_DIR | |
git switch -f main | |
python3 $REPO_TOOLS/scripts/ci.py -v set-branch --branch $branch | |
popd | |
echo "resetting aws-sdk-kotlin" | |
pushd $SDK_DIR | |
git switch -f main | |
python3 $REPO_TOOLS/scripts/ci.py -v set-branch --branch $branch | |
git checkout -b $BASE_BRANCH_NAME | |
$CODEGEN_DIFF_REVISIONS codegen --bootstrap ${{ env.PREVIEW_SERVICES }} | |
popd | |
- name: Generate diffs | |
run: | | |
pushd $SDK_DIR | |
$CODEGEN_DIFF_REVISIONS \ | |
--head-sha ${{ github.event.pull_request.head.sha }} \ | |
generate-diffs \ | |
--base-sha ${{ github.event.pull_request.base.sha }} \ | |
$BASE_BRANCH_NAME $HEAD_BRANCH_NAME | |
echo "codegen-diff-msg<<EOF" >> $GITHUB_OUTPUT | |
cat ./tmp-codegen-diff/bot-message) >> $GITHUB_OUTPUT | |
echo "EOF" >> $GITHUB_OUTPUT | |
popd | |
- name: Configure AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v2 | |
with: | |
role-to-assume: ${{ secrets.CI_AWS_ROLE_ARN }} | |
aws-region: us-west-2 | |
- name: Upload diff to S3 | |
run: | | |
SDK_DIR=$GITHUB_WORKSPACE/aws-sdk-kotlin | |
pushd $SDK_DIR | |
if [[ -d ./tmp-codegen-diff/${{ github.event.pull_request.base.sha }} ]]; then | |
aws s3 cp ./tmp-codegen-diff/${{ github.event.pull_request.base.sha }} \ | |
"s3://${{ secrets.CDN_S3_BUCKET_NAME }}/codegen-diff/${{ github.event.pull_request.base.sha }}" --recursive | |
fi | |
# TODO - generate doc preview for N services and upload and link as well | |
post-bot-comment: | |
name: Post bot comment | |
runs-on: ubuntu-latest | |
needs: | |
- generate-codegen-diff | |
steps: | |
- name: Post bot comment | |
uses: actions/github-script@v5 | |
with: | |
script: | | |
await github.rest.issues.createComment({ | |
issue_number: ${{ github.event.number }}, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: '${{ needs.generate-codegen-diff.outputs.bot-message }}\n\n' | |
}) |