import {execSync} from 'child_process'; import {dirname, resolve} from 'path'; import {fileURLToPath} from 'url'; import process from 'process'; const __dirname = dirname(fileURLToPath(import.meta.url)); const ROOT = resolve(__dirname, '..'); const G = (s) => `\x1b[0;32m${s}\x1b[0m`; const R = (s) => `\x1b[0;31m${s}\x1b[0m`; const log = (msg) => console.log(`${G('[OK]')} ${msg}`); const err = (msg) => { console.error(`${R('[ERR]')} ${msg}`); process.exit(1); }; const REGISTRY = process.env.REGISTRY || 'harbor.gitdata.me/gtateam'; const TAG = process.env.TAG || execSync('git rev-parse --short HEAD', {encoding: 'utf8', cwd: ROOT}).trim(); const USER = process.env.DOCKER_USERNAME; const PASS = process.env.DOCKER_PASSWORD; if (!USER) err('DOCKER_USERNAME env var required'); if (!PASS) err('DOCKER_PASSWORD env var required'); log(`Logging into ${REGISTRY}...`); execSync(`echo "${PASS}" | docker login "${REGISTRY}" -u "${USER}" --password-stdin`, {stdio: 'inherit'}); const images = ['app', 'email-worker', 'git-hook', 'gitserver', 'metrics-aggregator', 'static-server', 'gingress']; for (const name of images) { const src = `${name}:${TAG}`; const dst = `${REGISTRY}/${name}:${TAG}`; log(`Tagging ${src} -> ${dst}`); execSync(`docker tag "${src}" "${dst}"`, {stdio: 'inherit'}); log(`Pushing ${dst}`); execSync(`docker push "${dst}"`, {stdio: 'inherit'}); } log(`All images pushed to ${REGISTRY}`);