apkt-eis/deploy.js

71 lines
2.1 KiB
JavaScript

// build-and-push.js
const { exec, writeFile } = require('child_process')
const fs = require('fs')
function buildAndPush(version) {
var packageFile = require('./package.json')
packageFile = {
...packageFile,
version: version
}
const packageJsonPath = './package.json'
fs.writeFile(packageJsonPath, JSON.stringify(packageFile), (err) => {
if (err) {
console.error('Error writing package.json', err)
return
}
console.log('package.json updated successfully')
const versionData = {
version: version
}
const versionJsonPath = './public/version.json'
fs.writeFile(versionJsonPath, JSON.stringify(versionData), (err) => {
if (err) {
console.error('Error writing version.json', err)
return
}
console.log('version.json updated successfully')
const build_app = `npm run build`
const docker_image_tag = `defuj/apkt-eis:v${version}`
const docker_account = {
username: 'defuj',
token: 'dckr_pat_U_kP14Ws82lJun9f-B4mRpJfjW0'
}
const docker_logout = `docker logout`
const docker_login = `docker login -u ${docker_account.username} -p ${docker_account.token}`
const docker_build = `docker build . -t ${docker_image_tag}`
const docker_push = `docker push ${docker_image_tag}`
const command = `${build_app} && ${docker_logout} && ${docker_login} && ${docker_build} && ${docker_push}`
// const command = `${docker_logout} && ${docker_login}`
exec(command, (error, stdout, stderr) => {
if (error) {
console.error(`Error: ${error.message}`)
return
}
if (stderr) {
console.error(`stderr: ${stderr}`)
return
}
console.log(`stdout: ${stdout}`)
console.log(`Run Kubernetes Script:`)
console.log(`kubectl set image deployment/apkt-eis apkt-eis=defuj/apkt-eis:v${version}`)
})
})
})
}
// Ambil argumen versi dari command line
const version = process.argv[2]
if (!version) {
console.error('Usage: node deploy.js <version>')
process.exit(1)
}
buildAndPush(version)