Files
renovate/tools/publish-release.ts
Jamie Tanna 6432d2154a chore: correctly initialise logger for tools/ (#41842)
As part of changes in e438887dfb, we'd
missed the fact that `tools/` would need to have the logger initialized
too.

Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>
2026-03-12 10:02:01 +00:00

59 lines
1.8 KiB
TypeScript

import { Command } from 'commander';
import { init, logger } from '../lib/logger/index.ts';
import { bake, sign } from './utils/docker.ts';
import { parseVersion } from './utils/index.ts';
await init();
process.on('unhandledRejection', (err) => {
// Will print "unhandledRejection err is not defined"
logger.error({ err }, 'unhandledRejection');
process.exit(-1);
});
const program = new Command('pnpm release:prepare')
.description('Build docker images')
.option('--platform <type>', 'docker platforms to build')
.option('--version <version>', 'version to use as tag', parseVersion)
.option('--channel <channel>', 'channel to use as tag')
.option('--sha <type>', 'git sha')
.option('--exit-on-error <boolean>', 'exit on docker error', (s) =>
s ? s !== 'false' : undefined,
);
void (async () => {
await program.parseAsync();
const opts = program.opts();
if (!opts.version) {
throw new Error('--version is required');
}
logger.info(`Publishing v${opts.version.toString()}...`);
const meta = await bake('push', opts);
if (meta?.['push-slim']?.['containerimage.digest']) {
await sign(
`ghcr.io/renovatebot/renovate@${meta['push-slim']['containerimage.digest']}`,
opts,
);
await sign(
`renovate/renovate@${meta['push-slim']['containerimage.digest']}`,
opts,
);
} else {
logger.warn('Skip signing, missing metadata for slim image');
}
if (meta?.['push-full']?.['containerimage.digest']) {
await sign(
`ghcr.io/renovatebot/renovate@${meta['push-full']['containerimage.digest']}`,
opts,
);
await sign(
`renovate/renovate@${meta['push-full']['containerimage.digest']}`,
opts,
);
} else {
logger.warn('Skip signing, missing metadata for full image');
}
})();