Packages Release: Add manual workflow (#33922)
This commit is contained in:
parent
f056e041bb
commit
c91312bf26
|
@ -7,9 +7,34 @@ on:
|
||||||
required: false
|
required: false
|
||||||
default: '-a'
|
default: '-a'
|
||||||
jobs:
|
jobs:
|
||||||
prepare:
|
release:
|
||||||
name: Run the prepare script
|
name: Run packages release script
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- name: Run
|
- uses: actions/checkout@v3
|
||||||
run: echo "hello world"
|
- uses: ./.github/actions/cache-deps
|
||||||
|
with:
|
||||||
|
workflow_name: package-release
|
||||||
|
workflow_cache: ${{ secrets.WORKFLOW_CACHE }}
|
||||||
|
|
||||||
|
- name: Setup PHP
|
||||||
|
uses: shivammathur/setup-php@v2
|
||||||
|
with:
|
||||||
|
php-version: '7.4'
|
||||||
|
|
||||||
|
- name: Setup Node
|
||||||
|
uses: actions/setup-node@v2
|
||||||
|
with:
|
||||||
|
node-version: '16'
|
||||||
|
registry-url: 'https://registry.npmjs.org'
|
||||||
|
|
||||||
|
- name: Install PNPM
|
||||||
|
run: npm install -g pnpm@^6.24.2
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install
|
||||||
|
|
||||||
|
- name: Execute script
|
||||||
|
run: ./tools/package-release/bin/dev publish ${{ github.event.inputs.packages }} --branch=${{ github.ref_name }} --skip-install
|
||||||
|
env:
|
||||||
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
# Releasing Javascript packages
|
||||||
|
|
||||||
|
When a package contains sufficient changes to justify a release to [NPM](https://www.npmjs.com/), follow these instructions to create a new release from the monorepo.
|
||||||
|
|
||||||
|
## Release packages using Github Workflows (recommended)
|
||||||
|
|
||||||
|
### Prepare packages
|
||||||
|
|
||||||
|
In order to prepare a package for release, a changelog will need to be compiled along with an appropriate version bump.
|
||||||
|
|
||||||
|
1. Visit the monorepo Action [Prepare Package Release workflow](https://github.com/woocommerce/woocommerce/actions/workflows/prepare-package-release.yml). Click the "Run workflow" button.
|
||||||
|
|
||||||
|
![image](https://user-images.githubusercontent.com/1922453/179434424-f08af974-5597-4c6f-955b-43faf062c7a7.png)
|
||||||
|
|
||||||
|
2. Select the branch you'd like to release from. Typically, this would be `trunk`. You can also choose which packages to prepare for release by supplying them as comma separated values in the input box. To loop through all packages, simply leave the `-a` flag. Packages that don't have any changes will be skipped and left as is.
|
||||||
|
|
||||||
|
![image](https://user-images.githubusercontent.com/1922453/179434508-8f44fcca-0f01-47f2-8b9e-f5ef5ff3a577.png)
|
||||||
|
|
||||||
|
3. Once the action has finished, check [open pull requests](https://github.com/woocommerce/woocommerce/pulls) for a pull request generated by Github Actions Bot. This pull request should include version bumps and changelog changes for applicable packages. Approve and merge the pull request once checks pass.
|
||||||
|
|
||||||
|
### Release Packages
|
||||||
|
|
||||||
|
1. Release the packages to NPM by kicking off another workflow. The [Packages Release workflow](https://github.com/woocommerce/woocommerce/actions/workflows/package-release.yml) has the same inputs as the prepare workflow. Be sure to release from the same branch and select the same packages to release.
|
||||||
|
|
||||||
|
![image](https://user-images.githubusercontent.com/1922453/179435048-ad2cd168-55b1-471a-b05f-3aed4a9e499b.png)
|
||||||
|
|
||||||
|
2. Confirm the package has been updated by visiting NPM. For example see https://www.npmjs.com/package/@woocommerce/components.
|
||||||
|
|
||||||
|
## Release packages using the command line
|
||||||
|
|
||||||
|
### Prepare packages
|
||||||
|
|
||||||
|
1. At monorepo root, run the following command to prepare all packages. Instead of the `-a` flag, you can pass in a list of packages separated by commas.
|
||||||
|
|
||||||
|
```
|
||||||
|
./tools/package-release/bin/dev prepare -a
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Create a pull request with the resulting changes and merge it.
|
||||||
|
|
||||||
|
See more about the prepare script using `./tools/package-release/bin/dev publish --help`.
|
||||||
|
|
||||||
|
### Release Packages
|
||||||
|
|
||||||
|
1. Pull down the latest commits from Github.
|
||||||
|
|
||||||
|
2. Run the release script from monorepo root, first as a dry run.
|
||||||
|
|
||||||
|
```
|
||||||
|
./tools/package-release/bin/dev publish -a --dry-run
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Run the release for real this time.
|
||||||
|
|
||||||
|
```
|
||||||
|
./tools/package-release/bin/dev publish -a
|
||||||
|
```
|
||||||
|
|
||||||
|
See more about the publish script using `./tools/package-release/bin/dev publish --help`.
|
|
@ -60,7 +60,7 @@ export const validateChangelogEntries = ( name: string ) => {
|
||||||
export const writeChangelog = ( name: string ) => {
|
export const writeChangelog = ( name: string ) => {
|
||||||
try {
|
try {
|
||||||
const cwd = getFilepathFromPackageName( name );
|
const cwd = getFilepathFromPackageName( name );
|
||||||
execSync( './vendor/bin/changelogger write', {
|
execSync( './vendor/bin/changelogger write --add-pr-num', {
|
||||||
cwd,
|
cwd,
|
||||||
encoding: 'utf-8',
|
encoding: 'utf-8',
|
||||||
} );
|
} );
|
||||||
|
|
|
@ -92,16 +92,17 @@ export default class PackagePrepare extends Command {
|
||||||
if ( nextVersion ) {
|
if ( nextVersion ) {
|
||||||
this.bumpPackageVersion( name, nextVersion );
|
this.bumpPackageVersion( name, nextVersion );
|
||||||
}
|
}
|
||||||
|
CliUx.ux.action.stop();
|
||||||
} else {
|
} else {
|
||||||
this.log( `Skipping ${ name }, no changelogs available.` );
|
CliUx.ux.action.stop(
|
||||||
|
`Skipping ${ name }. No changes available for a release.`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
} catch ( e ) {
|
} catch ( e ) {
|
||||||
if ( e instanceof Error ) {
|
if ( e instanceof Error ) {
|
||||||
this.error( e.message );
|
this.error( e.message );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CliUx.ux.action.stop();
|
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -146,7 +146,7 @@ export const isValidUpdate = ( name: string ): boolean => {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const npmVersion = execSync( 'pnpm view @woocommerce/number version', {
|
const npmVersion = execSync( `pnpm view ${ name } version`, {
|
||||||
encoding: 'utf-8',
|
encoding: 'utf-8',
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue