Skip to content

fix(service-spec): the spec treats any nested anyOf or oneOf as a union type #3383

fix(service-spec): the spec treats any nested anyOf or oneOf as a union type

fix(service-spec): the spec treats any nested anyOf or oneOf as a union type #3383

Workflow file for this run

# ~~ Generated by projen. To modify, edit .projenrc.ts and run "npx projen".
name: build
on:
pull_request: {}
workflow_dispatch: {}
merge_group:
branches:
- main
jobs:
build:
runs-on: awscdk-service-spec_ubuntu-latest_32-core
permissions:
contents: write
outputs:
self_mutation_happened: ${{ steps.self_mutation.outputs.self_mutation_happened }}
env:
CI: "true"
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.ref }}
repository: ${{ github.event.pull_request.head.repo.full_name }}
lfs: true
- name: Install dependencies
run: yarn install --check-files
- name: build
run: npx projen build
- name: Find mutations
id: self_mutation
run: |-
git add .
git diff --staged --patch --exit-code > .repo.patch || echo "self_mutation_happened=true" >> $GITHUB_OUTPUT
working-directory: ./
- name: Upload patch
if: steps.self_mutation.outputs.self_mutation_happened
uses: actions/upload-artifact@v4
with:
name: .repo.patch
path: .repo.patch
overwrite: true
- name: Fail build on mutation
if: steps.self_mutation.outputs.self_mutation_happened
run: |-
echo "::error::Files were changed during build (see build log). If this was triggered from a fork, you will need to update your branch."
cat .repo.patch
exit 1
- name: Upload head database
uses: actions/upload-artifact@v4
with:
name: db.head.json.gz
path: packages/@aws-cdk/aws-service-spec/db.json.gz
overwrite: true
self-mutation:
needs: build
runs-on: awscdk-service-spec_ubuntu-latest_32-core
permissions:
contents: write
if: always() && needs.build.outputs.self_mutation_happened && !(github.event.pull_request.head.repo.full_name != github.repository)
steps:
- name: Checkout
uses: actions/checkout@v4
with:
token: ${{ secrets.PROJEN_GITHUB_TOKEN }}
ref: ${{ github.event.pull_request.head.ref }}
repository: ${{ github.event.pull_request.head.repo.full_name }}
lfs: true
- name: Download patch
uses: actions/download-artifact@v4
with:
name: .repo.patch
path: ${{ runner.temp }}
- name: Apply patch
run: '[ -s ${{ runner.temp }}/.repo.patch ] && git apply ${{ runner.temp }}/.repo.patch || echo "Empty patch. Skipping."'
- name: Set git identity
run: |-
git config user.name "github-actions"
git config user.email "[email protected]"
- name: Push changes
env:
PULL_REQUEST_REF: ${{ github.event.pull_request.head.ref }}
run: |-
git add .
git commit -s -m "chore: self mutation"
git push origin HEAD:$PULL_REQUEST_REF
base-database:
runs-on: awscdk-service-spec_ubuntu-latest_32-core
permissions: {}
env:
CI: "true"
if: github.event_name == 'pull_request' || github.event_name == 'pull_request_target'
steps:
- name: Checkout
uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.base.ref }}
repository: ${{ github.event.pull_request.base.repo.full_name }}
lfs: true
- name: Install dependencies
run: yarn install --check-files
- name: Build base database
run: npx projen nx compile
working-directory: packages/@aws-cdk/aws-service-spec
- name: Upload base database
uses: actions/upload-artifact@v4
with:
name: db.base.json.gz
path: packages/@aws-cdk/aws-service-spec/db.json.gz
overwrite: true
diff-db:
needs:
- build
- base-database
runs-on: awscdk-service-spec_ubuntu-latest_32-core
permissions:
contents: write
id-token: none
pull-requests: write
env:
CI: "true"
if: "!(needs.build.outputs.self_mutation_happened) && (github.event_name == 'pull_request' || github.event_name == 'pull_request_target')"
steps:
- name: Checkout
uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.ref }}
repository: ${{ github.event.pull_request.head.repo.full_name }}
lfs: false
- name: Install dependencies
run: yarn install --check-files
- name: Build diff-db
run: npx projen nx compile
working-directory: packages/@aws-cdk/service-spec-importers
- name: Download base database
uses: actions/download-artifact@v4
with:
name: db.base.json.gz
path: base
- name: Download head database
uses: actions/download-artifact@v4
with:
name: db.head.json.gz
path: head
- name: Diff databases
id: diff-db
run: packages/@aws-cdk/service-spec-importers/bin/diff-db base/db.json.gz head/db.json.gz > DIFF || echo "diff-result=true" >> $GITHUB_OUTPUT
continue-on-error: true
- name: Create PR.md
if: steps.diff-db.outputs.diff-result
run: |-
echo '**@aws-cdk/aws-service-spec**: Model database diff detected' >> PR.md
echo '```' >> PR.md
cat DIFF >> PR.md
echo '```' >> PR.md
- name: Comment diff
if: steps.diff-db.outputs.diff-result
uses: thollander/actions-comment-pull-request@v2
with:
comment_tag: diff-db
mode: recreate
filePath: PR.md
- name: Delete outdated diff
if: "!(steps.diff-db.outputs.diff-result)"
uses: thollander/actions-comment-pull-request@v2
with:
comment_tag: diff-db
message: "**@aws-cdk/aws-service-spec**: No model change detected"
mode: upsert