Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/schema-change-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,5 +43,6 @@ jobs:
exit 0
else
echo "File changes detected."
git diff -- ':!pnpm-lock.yaml'
exit 1
fi
2 changes: 1 addition & 1 deletion src/lib/types/githubActionsWorkflow.ts
Original file line number Diff line number Diff line change
Expand Up @@ -990,7 +990,7 @@ export interface Workflow {
/**
* A boolean specifying whether the secret must be supplied.
*/
required: boolean
required?: boolean
}
}
[k: string]: unknown
Expand Down
91 changes: 46 additions & 45 deletions workflows/schema-change-check.wac.ts
Original file line number Diff line number Diff line change
@@ -1,77 +1,78 @@
import { Workflow, NormalJob, Step, multilineString } from '../src'

const checkout = new Step({
name: 'Checkout',
uses: 'actions/checkout@v4',
name: 'Checkout',
uses: 'actions/checkout@v4',
})

const installNode = new Step({
name: 'Install Node',
uses: 'actions/setup-node@v4',
with: { 'node-version': 20 },
name: 'Install Node',
uses: 'actions/setup-node@v4',
with: { 'node-version': 20 },
})

const installGlobalTsx = new Step({
name: 'Install tsx',
run: 'npm install -g tsx',
name: 'Install tsx',
run: 'npm install -g tsx',
})

const installPnpm = new Step({
name: 'Install pnpm',
uses: 'pnpm/action-setup@v4',
with: { version: 8 },
name: 'Install pnpm',
uses: 'pnpm/action-setup@v4',
with: { version: 8 },
})

const installDependencies = new Step({
name: 'Install Dependencies',
run: 'pnpm install --no-frozen-lockfile',
name: 'Install Dependencies',
run: 'pnpm install --no-frozen-lockfile',
})

const generateWorkflowTypes = new Step({
name: 'Generate Workflow Types',
run: 'pnpm generate-workflow-types',
name: 'Generate Workflow Types',
run: 'pnpm generate-workflow-types',
})

const gitDiff = new Step({
name: 'Get git diff',
run: `git diff -- ':!pnpm-lock.yaml'`,
name: 'Get git diff',
run: `git diff -- ':!pnpm-lock.yaml'`,
})

const isGitDiffEmpty = new Step({
name: 'Fail if git diff is not empty',
run: multilineString(
`if test -z "$(git diff --name-only -- ':!pnpm-lock.yaml')"; then`,
` echo "No file changes detected."`,
` exit 0`,
`else`,
` echo "File changes detected."`,
` exit 1`,
`fi`,
),
name: 'Fail if git diff is not empty',
run: multilineString(
`if test -z "$(git diff --name-only -- ':!pnpm-lock.yaml')"; then`,
` echo "No file changes detected."`,
` exit 0`,
`else`,
` echo "File changes detected."`,
` git diff -- ':!pnpm-lock.yaml'`,
` exit 1`,
`fi`,
),
})

const schemaChangeCheck = new NormalJob('SchemaChangeCheck', {
'runs-on': 'ubuntu-latest',
permissions: {
contents: 'write',
},
'runs-on': 'ubuntu-latest',
permissions: {
contents: 'write',
},
}).addSteps([
checkout,
installNode,
installGlobalTsx,
installPnpm,
installDependencies,
generateWorkflowTypes,
gitDiff,
isGitDiffEmpty,
checkout,
installNode,
installGlobalTsx,
installPnpm,
installDependencies,
generateWorkflowTypes,
gitDiff,
isGitDiffEmpty,
])

export const schemaChangeCheckWorkflow = new Workflow('schema-change-check', {
name: 'Schema Change Check',
on: {
pull_request: {
types: ['opened', 'reopened', 'synchronize'],
},
schedule: [{ cron: '0 0 * * *' }],
},
name: 'Schema Change Check',
on: {
pull_request: {
types: ['opened', 'reopened', 'synchronize'],
},
schedule: [{ cron: '0 0 * * *' }],
},
}).addJob(schemaChangeCheck)