HJ_Server/js_docker_prod.js
xichaoyin 86161fca85 feat:
修改阿里云cli 认证 profile 名称
2024-01-05 13:34:46 +08:00

62 lines
1.9 KiB
JavaScript

/**
* 执行脚本环境要求
* 1. aliyun cli
* 2. docker
*/
const { execSync } = require('child_process');
const { argv, platform } = require('process');
const imageName = argv[2];
const tag = argv[3];
const url = 'production-legolas-registry.ap-northeast-1.cr.aliyuncs.com';
const repositories = `${url}/blacklagoon/heijiao-server`;
function executeCommand(command) {
try {
const outPut = execSync(command, { stdio: 'inherit' });
return outPut?.toString() || '';
} catch (error) {
console.error(`Command execution failed: ${command}`)
console.error(error.message);
process.exit();
}
}
function buildImage() {
console.log('构建镜像');
if (platform == 'linux') executeCommand(`npm run build_docker_linux`);
else if (platform == 'win32') executeCommand(`npm run build_docker_win`)
executeCommand(`docker build -t ${imageName} .`);
}
function dockerLogin() {
console.log('登陆镜像仓库');
const region = 'ap-northeast-1';
const instanceId = 'cri-azy285s79zw3ti5v';
const version = '2018-12-01';
const command = `aliyun cr GetAuthorizationToken --profile heijiao-prod --region ${region} --InstanceId ${instanceId} --version ${version} --force`;
const output = execSync(command, { encoding: 'utf8' });
const result = JSON.parse(output);
const password = result.AuthorizationToken.replace(/"/g, '');
executeCommand(`docker login --username=cr_temp_user --password=${password} ${url}`)
}
function dockerTag() {
console.log('标记镜像');
executeCommand(`docker tag ${imageName} ${repositories}:${tag}`);
}
function dockerPush() {
console.log('推送镜像');
executeCommand(`docker push ${repositories}:${tag}`);
}
if (!imageName) return console.error('imageName is null');
if (!tag) return console.error('tag is null');
buildImage();
dockerLogin();
dockerTag();
dockerPush();