2024-10-07 20:41:03 +00:00
name : Pre build step - Compile changelog file
on :
workflow_dispatch :
inputs :
version :
2024-10-28 09:34:10 +00:00
description : 'Version override. Default version is fetched from the base branch name, you can override the version but make sure the that the branch release/{version} exists on remote. Format: X.Y (Major.Minor)'
2024-10-07 20:41:03 +00:00
required : false
default : ''
env :
GIT_COMMITTER_NAME : 'WooCommerce Bot'
GIT_COMMITTER_EMAIL : 'no-reply@woocommerce.com'
GIT_AUTHOR_NAME : 'WooCommerce Bot'
GIT_AUTHOR_EMAIL : 'no-reply@woocommerce.com'
jobs :
build-prep :
name : Create changelog PR
runs-on : ubuntu-20.04
permissions :
contents : write
pull-requests : write
steps :
2024-10-28 09:34:10 +00:00
- name : Get version from the branch name workflow is running on
if : ${{ github.event.inputs.version == '' }}
uses : actions/github-script@v7
id : extract-version
with :
script : |
const refName = process.env.GITHUB_REF_NAME;
const versionMatch = refName.match(/^release\/(\d+\.\d+)$/);
if (versionMatch) {
const version = versionMatch[1];
console.log(`Extracted version : ${version}`);
core.setOutput('version', version);
} else {
core.setFailed(`Branch name ${refName} does not match the expected pattern 'release/x.y'`);
process.exit(1);
}
- name : Validate version input override
if : ${{ github.event.inputs.version != '' }}
uses : actions/github-script@v7
env :
VERSION : ${{ github.event.inputs.version }}
with :
script : |
const version = process.env.VERSION;
if (!/^\d+\.\d+$/.test(version)) {
core.setFailed('Invalid version format. The version must be in the format X.Y');
core.info(`Version you entered : ${version}`);
process.exit(1);
}
2024-10-07 20:41:03 +00:00
- name : Checkout code
uses : actions/checkout@v3
with :
fetch-depth : 0
- name : Setup PNPM
uses : pnpm/action-setup@a3252b78c470c02df07e9d59298aecedc3ccdd6d
- name : Setup Node
uses : actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c
with :
node-version-file : .nvmrc
cache : pnpm
registry-url : 'https://registry.npmjs.org'
- name : Install prerequisites
run : |
pnpm install --filter monorepo-utils --ignore-scripts
# ignore scripts speeds up setup signficantly, but we still need to build monorepo utils
pnpm build
working-directory : tools/monorepo-utils
- name : Generate changelog changes and create PR
id : changelog
env :
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
2024-10-28 09:34:10 +00:00
run : pnpm utils code-freeze changelog -o ${{ github.repository_owner }} -v ${{ github.event.inputs.version || steps.extract-version.outputs.version }}