Refactor build-and-push.js and deploy.js to improve code structure and update version number in package.json

This commit is contained in:
Dede Fuji Abdul 2024-04-18 14:31:22 +07:00
parent fedbdfff16
commit 34e6f328b0
6 changed files with 100 additions and 53 deletions

View File

@ -1,39 +0,0 @@
// build-and-push.js
const { exec } = require('child_process')
function buildAndPush(version) {
const build_app = `npm run build`
const docker_image_tag = `defuj/apkt-eis:${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}`
exec(command, (error, stdout, stderr) => {
if (error) {
console.error(`Error: ${error.message}`)
return
}
if (stderr) {
console.error(`stderr: ${stderr}`)
return
}
console.log(`stdout: ${stdout}`)
})
}
// Ambil argumen versi dari command line
const version = process.argv[2]
if (!version) {
console.error('Usage: node build-push.js <version>')
process.exit(1)
}
buildAndPush(version)

68
deploy.js Normal file
View File

@ -0,0 +1,68 @@
// 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-new.json', err)
return
}
console.log('package-new.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}`)
})
})
})
}
// Ambil argumen versi dari command line
const version = process.argv[2]
if (!version) {
console.error('Usage: node build-push.js <version>')
process.exit(1)
}
buildAndPush(version)

View File

@ -1,6 +1,6 @@
{
"name": "eis",
"version": "0.0.117",
"version": "0.0.120-vm",
"private": true,
"scripts": {
"dev": "vite",
@ -13,7 +13,7 @@
"type-check": "vue-tsc --noEmit -p tsconfig.vitest.json --composite false",
"lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore",
"format": "prettier --write src/",
"build-push": "node build-push.js"
"deploy": "node deploy.js"
},
"dependencies": {
"@apollo/client": "^3.8.10",

1
public/version.json Normal file
View File

@ -0,0 +1 @@
{"version":"0.0.120-vm"}

View File

@ -5,6 +5,10 @@ const instance = axios.create({
baseURL: url
})
const ax = axios.create({
baseURL: window.location.origin
})
const getUid = async () => await instance.get('/uid')
const getUidRegional = async (regional: number) => await instance.get('/uid?regional=' + regional)
const getRegional = async () => await instance.get('/regional')
@ -13,6 +17,7 @@ const getJenisTransaksi = async () => await instance.get('/jenisTransaksi')
const getUp3 = async (uid: number) => await instance.get('/up3?uid=' + uid)
const getUlp = async (up3: number) => await instance.get('/ulp?up3=' + up3)
const getPosko = async (uppp: number) => await instance.get('/posko?up3=' + uppp)
const getVersion = async () => await ax.get('/version.json')
export {
getUid,
getUp3,
@ -21,5 +26,6 @@ export {
getMedia,
getJenisTransaksi,
getUidRegional,
getRegional
getRegional,
getVersion
}

View File

@ -5,7 +5,7 @@ import { useMenuStore } from '@/stores/menu'
import { RouterView } from 'vue-router'
import { useDialogStore } from '@/stores/dialog'
import { onMounted } from 'vue'
import { version } from '../../package.json'
import { getVersion } from '@/utils/api/api.rest'
const menu = useMenuStore()
const dialog = useDialogStore()
@ -23,7 +23,10 @@ const showDialogUpdate = () => {
dialog.open = true
}
onMounted(() => {
const checkVersion = () => {
getVersion().then((response) => {
if (response.data.version) {
const version = response.data.version
const localVersion = localStorage.getItem('version')
if (localVersion) {
if (localVersion !== version) {
@ -33,7 +36,15 @@ onMounted(() => {
} else {
localStorage.setItem('version', version)
}
}
setTimeout(() => {
checkVersion()
}, 60000)
})
}
onMounted(() => checkVersion())
</script>
<template>