chore(ci): fix codegen diff #1480
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 | |
run: | | |
npm install -g diff2html-cli@${{ env.DIFF2HTML_VERSION }} | |
env | sort | |
- name: Generate code for head ref | |
run: | | |
REPO_TOOLS=$GITHUB_WORKSPACE/aws-kotlin-repo-tools | |
SMITHY_KOTLIN_DIR=$GITHUB_WORKSPACE/smithy-kotlin | |
SDK_DIR=$GITHUB_WORKSPACE/aws-sdk-kotlin | |
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 | |
.github/scripts/codegen-diff-revisions.py codegen --bootstrap ${{ env.PREVIEW_SERVICES }} | |
popd | |
- name: Generate code for base ref | |
run: | | |
REPO_TOOLS=$GITHUB_WORKSPACE/aws-kotlin-repo-tools | |
SMITHY_KOTLIN_DIR=$GITHUB_WORKSPACE/smithy-kotlin | |
SDK_DIR=$GITHUB_WORKSPACE/aws-sdk-kotlin | |
branch=$GITHUB_BASE_REF | |
echo "checkout smithy-kotlin at $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 | |
.github/scripts/codegen-diff-revisions.py codegen --bootstrap ${{ env.PREVIEW_SERVICES }} | |
popd | |
- name: Generate diffs | |
run: | | |
SDK_DIR=$GITHUB_WORKSPACE/aws-sdk-kotlin | |
pushd $SDK_DIR | |
.github/scripts/codegen-diff-revisions.py generate-diffs \ | |
--head-sha ${{ github.event.pull_request.head.sha }} \ | |
--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' | |
}) |