Generate Schemas #72
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: Generate Schemas | |
on: | |
schedule: | |
- cron: '45 5 * * TUE,THU' | |
workflow_dispatch: | |
inputs: | |
api_specs_ref: | |
description: 'Git ref or full SHA for https://github.com/Azure/azure-rest-api-specs.' | |
required: true | |
default: 'main' | |
env: | |
# This must be kept in sync with the arguments passed to the "batch" matrix | |
BATCH_COUNT: 20 | |
jobs: | |
generate: | |
name: Update Schemas Batch ${{ matrix.batch }} | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
batch: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Initialize CodeQL | |
uses: github/codeql-action/init@v3 | |
with: | |
languages: javascript | |
- name: Clone azure-rest-api-specs | |
uses: actions/checkout@v4 | |
with: | |
repository: Azure/azure-rest-api-specs | |
path: workflow-temp/azure-rest-api-specs | |
ref: ${{ github.event.inputs.api_specs_ref }} | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20.x | |
- name: Install generator npm packages | |
run: npm ci | |
working-directory: generator | |
- name: Build bicep-types | |
run: | | |
npm ci | |
npm run build | |
working-directory: bicep-types-az/bicep-types/src/bicep-types | |
- name: Build autorest.bicep | |
run: | | |
npm ci | |
npm run build | |
working-directory: bicep-types-az/src/autorest.bicep | |
- name: Run generator | |
run: | | |
rm -Rf "$GITHUB_WORKSPACE/schemas" | |
rm -Rf "$GITHUB_WORKSPACE/summary.log" | |
mkdir -p "$GITHUB_WORKSPACE/schemas" | |
npm run generate-all -- \ | |
--specs-dir "$GITHUB_WORKSPACE/workflow-temp/azure-rest-api-specs" \ | |
--batch-count ${{ env.BATCH_COUNT }} \ | |
--batch-index ${{ matrix.batch }} \ | |
--summary-log-path "$GITHUB_WORKSPACE/summary.log" \ | |
--combine-batch-mode true | |
working-directory: generator | |
- name: Upload Schemas | |
uses: actions/upload-artifact@v4 | |
with: | |
name: batch-${{ matrix.batch }}-schemas | |
path: schemas | |
if-no-files-found: error | |
- name: Upload summary log | |
uses: actions/upload-artifact@v4 | |
with: | |
name: batch-${{ matrix.batch }}-summary | |
path: summary.log | |
if-no-files-found: error | |
- name: Perform CodeQL Analysis | |
uses: github/codeql-action/analyze@v3 | |
combine: | |
needs: generate | |
name: Combine Schema Batches | |
permissions: | |
contents: write | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Initialize CodeQL | |
uses: github/codeql-action/init@v3 | |
with: | |
languages: javascript | |
- name: Download batch results | |
uses: actions/download-artifact@v4 | |
with: | |
path: workflow-temp | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20.x | |
- name: Install generator npm packages | |
run: npm ci | |
working-directory: generator | |
- name: Combine batches | |
run: | | |
npm run combine-batches -- \ | |
--input-path "$GITHUB_WORKSPACE/workflow-temp" \ | |
--batch-count ${{ env.BATCH_COUNT }} | |
working-directory: generator | |
- name: Update resources.json | |
run: | | |
npm run list-resources | |
working-directory: generator | |
- name: Push to autogenerate-batch branch | |
uses: stefanzweifel/git-auto-commit-action@v5 | |
with: | |
commit_message: Update Generated Schemas | |
branch: autogenerate-batch | |
push_options: '--force' | |
create_branch: true | |
- name: Perform CodeQL Analysis | |
uses: github/codeql-action/analyze@v3 |