scripts/create-release-tag: dispatch release workflows
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
This commit is contained in:
@@ -25,31 +25,17 @@ const baseOptions = {
|
||||
repo: 'backstage',
|
||||
};
|
||||
|
||||
async function main() {
|
||||
const { GITHUB_SHA, GITHUB_TOKEN } = process.env;
|
||||
if (!GITHUB_SHA) {
|
||||
throw new Error('GITHUB_SHA is not set');
|
||||
}
|
||||
if (!GITHUB_TOKEN) {
|
||||
throw new Error('GITHUB_TOKEN is not set');
|
||||
}
|
||||
|
||||
const octokit = new Octokit({ auth: GITHUB_TOKEN });
|
||||
|
||||
const rootPath = path.resolve(__dirname, '..');
|
||||
const { version: currentVersion } = await fs.readJson(
|
||||
path.join(rootPath, 'package.json'),
|
||||
);
|
||||
|
||||
const tagName = `v${currentVersion}`;
|
||||
|
||||
console.log(`Creating release tag ${tagName}`);
|
||||
async function getCurrentReleaseTag() {
|
||||
const rootPath = path.resolve(__dirname, '../package.json');
|
||||
return fs.readJson(rootPath).then(_ => _.version);
|
||||
}
|
||||
|
||||
async function createGitTag(octokit, commitSha, tagName) {
|
||||
const annotatedTag = await octokit.git.createTag({
|
||||
...baseOptions,
|
||||
tag: tagName,
|
||||
message: tagName,
|
||||
object: GITHUB_SHA,
|
||||
object: commitSha,
|
||||
type: 'commit',
|
||||
});
|
||||
|
||||
@@ -69,8 +55,58 @@ async function main() {
|
||||
console.error(`Tag creation for ${tagName} failed`);
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
async function dispatchReleaseWorkflows(octokit, releaseVersion) {
|
||||
console.log('Dispatching release manifest sync');
|
||||
await octokit.actions.createWorkflowDispatch({
|
||||
owner: 'backstage',
|
||||
repo: 'backstage',
|
||||
workflow_id: 'sync_release-manifest.yml',
|
||||
ref: 'master',
|
||||
inputs: {
|
||||
version: releaseVersion,
|
||||
},
|
||||
});
|
||||
|
||||
console.log('Dispatching upgrade helper sync');
|
||||
await octokit.actions.createWorkflowDispatch({
|
||||
owner: 'backstage',
|
||||
repo: 'upgrade-helper-diff',
|
||||
workflow_id: 'release.yml',
|
||||
ref: 'master',
|
||||
inputs: {
|
||||
// TODO(Rugvip): Switch this over to use the release version once it's ready
|
||||
version: require('../packages/create-app/package.json').version,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
async function main() {
|
||||
const shouldDispatch = process.argv.includes('--dispatch-workflows');
|
||||
|
||||
if (!process.env.GITHUB_SHA) {
|
||||
throw new Error('GITHUB_SHA is not set');
|
||||
}
|
||||
if (!process.env.GITHUB_TOKEN) {
|
||||
throw new Error('GITHUB_TOKEN is not set');
|
||||
}
|
||||
|
||||
const commitSha = process.env.GITHUB_SHA;
|
||||
const octokit = new Octokit({ auth: process.env.GITHUB_TOKEN });
|
||||
|
||||
const releaseVersion = await getCurrentReleaseTag();
|
||||
const tagName = `v${releaseVersion}`;
|
||||
|
||||
console.log(`Creating release tag ${tagName} at ${commitSha}`);
|
||||
await createGitTag(octokit, commitSha, tagName);
|
||||
|
||||
console.log(`::set-output name=tag_name::${tagName}`);
|
||||
|
||||
if (shouldDispatch) {
|
||||
console.log(`Dispatching release workflows for ${tagName}`);
|
||||
await dispatchReleaseWorkflows(octokit, releaseVersion);
|
||||
}
|
||||
}
|
||||
|
||||
main().catch(error => {
|
||||
|
||||
Reference in New Issue
Block a user