Skip to content

Commit

Permalink
Merge pull request #154 from ckeditor/i/153
Browse files Browse the repository at this point in the history
Internal: Aligned release tools to the latest CKEditor 5 dev. Closes #153.
  • Loading branch information
pomek committed Jun 26, 2023
2 parents 72720d0 + 46698cd commit af82dd8
Show file tree
Hide file tree
Showing 11 changed files with 253 additions and 82 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ coverage/
node_modules/
yarn.lock
.idea
/release/
8 changes: 2 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,19 +125,15 @@ After generating the changelog, you are ready for publishing packages.
First, you need to bump their versions:

```bash
npm run release:bump-version
npm run release:prepare-packages
```

You can also use the `--dry-run` option to see what this task does.

After bumping versions, you can publish changes:

```bash
npm run release:publish
npm run release:publish-packages
```

As in the previous task, the `--dry-run` option is also available.

## License

The `ckeditor5-package-generator` tool is available under [MIT license](https://opensource.org/licenses/MIT).
Expand Down
16 changes: 9 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,20 @@
"license": "MIT",
"homepage": "https://ckeditor.com/ckeditor-5",
"devDependencies": {
"@ckeditor/ckeditor5-dev-bump-year": "^35.0.0",
"@ckeditor/ckeditor5-dev-ci": "^35.0.0",
"@ckeditor/ckeditor5-dev-release-tools": "^35.0.0",
"@ckeditor/ckeditor5-dev-web-crawler": "^35.0.0",
"@ckeditor/ckeditor5-dev-bump-year": "^38.0.0",
"@ckeditor/ckeditor5-dev-ci": "^38.0.0",
"@ckeditor/ckeditor5-dev-release-tools": "^38.0.0",
"@ckeditor/ckeditor5-dev-web-crawler": "^38.0.0",
"chalk": "^4.1.2",
"eslint": "^7.32.0",
"eslint-config-ckeditor5": "^4.0.0",
"glob": "^10.2.5",
"husky": "^8.0.2",
"lint-staged": "^10.5.4",
"mocha": "^9.1.1",
"nyc": "^15.1.0",
"strip-ansi": "^6.0.1"
"strip-ansi": "^6.0.1",
"upath": "^2.0.1"
},
"engines": {
"node": ">=16.0.0",
Expand All @@ -40,8 +42,8 @@
"coverage": "nyc npm run test",
"lint": "eslint --quiet \"**/*.js\"",
"precommit": "lint-staged",
"release:bump-version": "node scripts/release/bump-versions.js",
"release:publish": "node scripts/release/publish.js",
"release:prepare-packages": "node scripts/release/preparepackages.js",
"release:publish-packages": "node scripts/release/publishpackages.js",
"test": "mocha 'packages/*/tests/**/*.js'",
"clean": "npx rimraf package-lock.json yarn.lock ./**/node_modules",
"reinstall": "yarn run clean && yarn install"
Expand Down
3 changes: 2 additions & 1 deletion packages/ckeditor5-package-generator/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"node": ">=16.0.0"
},
"dependencies": {
"@ckeditor/ckeditor5-dev-utils": "^35.0.0",
"@ckeditor/ckeditor5-dev-utils": "^38.0.0",
"chalk": "^4.1.2",
"commander": "^8.1.0",
"glob": "^7.1.7",
Expand All @@ -20,6 +20,7 @@
"webpack": "^5.67.0"
},
"files": [
"bin",
"lib"
],
"bin": {
Expand Down
6 changes: 3 additions & 3 deletions packages/ckeditor5-package-tools/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@
],
"main": "lib/index.js",
"dependencies": {
"@ckeditor/ckeditor5-dev-transifex": "^35.0.0",
"@ckeditor/ckeditor5-dev-translations": "^35.0.0",
"@ckeditor/ckeditor5-dev-utils": "^35.0.0",
"@ckeditor/ckeditor5-dev-transifex": "^38.0.0",
"@ckeditor/ckeditor5-dev-translations": "^38.0.0",
"@ckeditor/ckeditor5-dev-utils": "^38.0.0",
"buffer": "^6.0.3",
"chai": "^4.3.4",
"css-loader": "^5.2.7",
Expand Down
31 changes: 0 additions & 31 deletions scripts/release/bump-versions.js

This file was deleted.

106 changes: 106 additions & 0 deletions scripts/release/preparepackages.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
#!/usr/bin/env node

/**
* @license Copyright (c) 2020-2023, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md.
*/

/* eslint-env node */

'use strict';

const { Listr } = require( 'listr2' );
const releaseTools = require( '@ckeditor/ckeditor5-dev-release-tools' );
const parseArguments = require( './utils/parsearguments' );
const { PACKAGE_GENERATOR_ROOT, PACKAGES_DIRECTORY, RELEASE_DIRECTORY } = require( './utils/constants' );
const upath = require( 'upath' );
const { globSync } = require( 'glob' );

const cliArguments = parseArguments( process.argv.slice( 2 ) );
const latestVersion = releaseTools.getLastFromChangelog();
const versionChangelog = releaseTools.getChangesForVersion( latestVersion );

const PACKAGE_GENERATOR_PACKAGES_NAMES = globSync( '*/', {
cwd: upath.join( PACKAGE_GENERATOR_ROOT, PACKAGES_DIRECTORY ),
absolute: true
} ).map( packagePath => {
return require( upath.join( packagePath, 'package.json' ) ).name;
} );

const tasks = new Listr( [
{
title: 'Verifying the repository.',
task: async () => {
const errors = await releaseTools.validateRepositoryToRelease( {
version: latestVersion,
changes: versionChangelog,
branch: 'master'
} );

if ( !errors.length ) {
return;
}

return Promise.reject( 'Aborted due to errors.\n' + errors.map( message => `* ${ message }` ).join( '\n' ) );
}
},
{
title: 'Updating the `#version` field.',
task: () => {
return releaseTools.updateVersions( {
packagesDirectory: PACKAGES_DIRECTORY,
version: latestVersion
} );
}
},
{
title: 'Updating dependencies.',
task: () => {
return releaseTools.updateDependencies( {
version: '^' + latestVersion,
packagesDirectory: PACKAGES_DIRECTORY,
shouldUpdateVersionCallback: packageName => {
return PACKAGE_GENERATOR_PACKAGES_NAMES.includes( packageName );
}
} );
}
},
{
title: 'Copying `package-generator` packages to the release directory.',
task: () => {
return releaseTools.prepareRepository( {
outputDirectory: RELEASE_DIRECTORY,
packagesDirectory: PACKAGES_DIRECTORY,
packagesToCopy: cliArguments.packages
} );
}
},
{
title: 'Cleaning-up.',
task: () => {
return releaseTools.cleanUpPackages( {
packagesDirectory: RELEASE_DIRECTORY
} );
}
},
{
title: 'Commit & tag.',
task: () => {
return releaseTools.commitAndTag( {
version: latestVersion,
files: [
'package.json',
`${ PACKAGES_DIRECTORY }/*/package.json`
]
} );
}
}
] );

tasks.run()
.catch( err => {
process.exitCode = 1;

console.log( '' );
console.error( err );
} );
34 changes: 0 additions & 34 deletions scripts/release/publish.js

This file was deleted.

71 changes: 71 additions & 0 deletions scripts/release/publishpackages.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
#!/usr/bin/env node

/**
* @license Copyright (c) 2020-2023, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md.
*/

/* eslint-env node */

'use strict';

const { Listr } = require( 'listr2' );
const releaseTools = require( '@ckeditor/ckeditor5-dev-release-tools' );
const { provideToken } = require( '@ckeditor/ckeditor5-dev-release-tools/lib/utils/cli' );
const parseArguments = require( './utils/parsearguments' );
const { RELEASE_DIRECTORY } = require( './utils/constants' );

const cliArguments = parseArguments( process.argv.slice( 2 ) );
const latestVersion = releaseTools.getLastFromChangelog();
const versionChangelog = releaseTools.getChangesForVersion( latestVersion );

let githubToken;

const tasks = new Listr( [
{
title: 'Publishing packages.',
task: async ( _, task ) => {
return releaseTools.publishPackages( {
packagesDirectory: RELEASE_DIRECTORY,
npmOwner: 'ckeditor',
npmTag: cliArguments.npmTag,
listrTask: task,
confirmationCallback: () => {
return task.prompt( { type: 'Confirm', message: 'Do you want to continue?' } );
}
} );
},
retry: 3
},
{
title: 'Pushing changes.',
task: () => {
return releaseTools.push( {
releaseBranch: 'master',
version: latestVersion
} );
}
},
{
title: 'Creating the release page.',
task: async ( _, task ) => {
const releaseUrl = await releaseTools.createGithubRelease( {
token: githubToken,
version: latestVersion,
description: versionChangelog
} );

task.output = `Release page: ${ releaseUrl }`;
}
}
] );

( async () => {
try {
githubToken = await provideToken();

await tasks.run();
} catch ( err ) {
console.error( err );
}
} )();
12 changes: 12 additions & 0 deletions scripts/release/utils/constants.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/**
* @license Copyright (c) 2020-2023, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md.
*/

const upath = require( 'upath' );

module.exports = {
PACKAGES_DIRECTORY: 'packages',
RELEASE_DIRECTORY: 'release',
PACKAGE_GENERATOR_ROOT: upath.join( __dirname, '..', '..', '..' )
};
Loading

0 comments on commit af82dd8

Please sign in to comment.