Skip to content

Generate Schemas

Generate Schemas #100

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: 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
combine:
needs: generate
name: Combine Schema Batches
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4
- 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