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 ', 'docker platforms to build') .option('--version ', 'version to use as tag', parseVersion) .option('--channel ', 'channel to use as tag') .option('--sha ', 'git sha') .option('--exit-on-error ', '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'); } })();