71 lines
2.1 KiB
JavaScript
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)
|