scripts/create-release-tag: dispatch release workflows

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
This commit is contained in:
Patrik Oldsberg
2022-02-02 16:47:31 +01:00
parent 74298c1ae3
commit 34224a0b70
2 changed files with 57 additions and 21 deletions
+56 -20
View File
@@ -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 => {