Thienvv - fix
This commit is contained in:
@@ -26,13 +26,13 @@ pipeline {
|
|||||||
}
|
}
|
||||||
|
|
||||||
stages {
|
stages {
|
||||||
stage('Retrieve Artifact From CI Job') {
|
stage('Retrieve Artifact Metadata From CI Job') {
|
||||||
steps {
|
steps {
|
||||||
script {
|
script {
|
||||||
def ciJobBuildNumber = params.CI_JOB_BUILD_NUMBER
|
def ciJobBuildNumber = params.CI_JOB_BUILD_NUMBER
|
||||||
echo "Retrieving artifact from CI_JOB_BUILD_NUMBER: ${ciJobBuildNumber}"
|
echo "Retrieving artifact from CI_JOB_BUILD_NUMBER: ${ciJobBuildNumber}"
|
||||||
|
|
||||||
def metadata = handleArtifactAndMetadata(env.CI_JOB_NAME, ciJobBuildNumber, CI_JOB_METADATA_FILENAME)
|
def metadata = retrieveArtifactMetadataFromCIJOB(env.CI_JOB_NAME, ciJobBuildNumber, CI_JOB_METADATA_FILENAME)
|
||||||
|
|
||||||
env.NEXUS_URL = metadata.nexusUrl
|
env.NEXUS_URL = metadata.nexusUrl
|
||||||
echo "env.NEXUS_URL : ${env.NEXUS_URL}"
|
echo "env.NEXUS_URL : ${env.NEXUS_URL}"
|
||||||
@@ -156,7 +156,8 @@ def checkoutFromGit(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
def handleArtifactAndMetadata(String ciJobName, String ciJobBuildNumber, String metadataFilename) {
|
//Hàm lấy artifact metadata file từ CI job
|
||||||
|
def retrieveArtifactMetadataFromCIJOB(String ciJobName, String ciJobBuildNumber, String metadataFilename) {
|
||||||
try {
|
try {
|
||||||
def selector = null
|
def selector = null
|
||||||
|
|
||||||
|
|||||||
@@ -2,17 +2,19 @@ pipeline {
|
|||||||
agent any
|
agent any
|
||||||
parameters {
|
parameters {
|
||||||
choice(name: 'ENV', choices: ['uat', 'prod'], description: 'Choose Environment')
|
choice(name: 'ENV', choices: ['uat', 'prod'], description: 'Choose Environment')
|
||||||
|
string(name: 'CI_JOB_BUILD_NUMBER', defaultValue: '', description: 'Build number of CI Job')
|
||||||
|
|
||||||
}
|
}
|
||||||
environment {
|
environment {
|
||||||
JOB_BUILD_NAME = 'CI_FE_ACP' // tên của job build code
|
PROJECT_NAME = 'acp'
|
||||||
METADATA_FILENAME = "${params.ENV}_metadata.json" // tên file metadata đã được lưu từ job build code
|
CI_JOB_NAME = 'CI_FE_ACP' // tên của job build code
|
||||||
|
CI_JOB_METADATA_FILENAME = "${params.ENV}_${PROJECT_NAME}_metadata.json" // tên file metadata đã được lưu từ job build code
|
||||||
|
|
||||||
GIT_PAT_CREDENTIALS_ID = 'd3de261f-8f1e-470b-b6d1-2fb4965e0129' // Id của Personal Access Token lưu trên jenkins
|
GIT_PAT_CREDENTIALS_ID = 'd3de261f-8f1e-470b-b6d1-2fb4965e0129' // Id của Personal Access Token lưu trên jenkins
|
||||||
GIT_ANSIBLE_URL = 'work.gct.com.vn/thienvv/nsg_ansible.git'
|
GIT_ANSIBLE_URL = 'work.gct.com.vn/thienvv/nsg_ansible.git'
|
||||||
GIT_ANSIBLE_BRANCH = 'v2'
|
GIT_ANSIBLE_BRANCH = 'v2'
|
||||||
|
|
||||||
NEXUS_CREDENTIALS = credentials('Nexus_credential')
|
NEXUS_CREDENTIALS = credentials('Nexus_credential')
|
||||||
PROJECT_NAME = 'acp'
|
|
||||||
ANSIBLE_SSH_CONNECTION = 'root@103.166.183.172 -p 24700'
|
ANSIBLE_SSH_CONNECTION = 'root@103.166.183.172 -p 24700'
|
||||||
|
|
||||||
ANSIBLE_FOLDER_PATH = '/srv/ansible_v2'
|
ANSIBLE_FOLDER_PATH = '/srv/ansible_v2'
|
||||||
@@ -24,10 +26,16 @@ pipeline {
|
|||||||
}
|
}
|
||||||
|
|
||||||
stages {
|
stages {
|
||||||
stage('Fetch Metadata File From Job Build') {
|
stage('Retrieve Artifact Metadata From CI Job') {
|
||||||
steps {
|
steps {
|
||||||
script {
|
script {
|
||||||
def metadata = handleArtifactAndMetadata(env.JOB_BUILD_NAME, env.METADATA_FILENAME)
|
def ciJobBuildNumber = params.CI_JOB_BUILD_NUMBER
|
||||||
|
echo "Retrieving artifact from CI_JOB_BUILD_NUMBER: ${ciJobBuildNumber}"
|
||||||
|
|
||||||
|
def metadata = retrieveArtifactMetadataFromCIJOB(
|
||||||
|
env.CI_JOB_NAME, ciJobBuildNumber,
|
||||||
|
CI_JOB_METADATA_FILENAME)
|
||||||
|
|
||||||
env.NEXUS_URL = metadata.nexusUrl
|
env.NEXUS_URL = metadata.nexusUrl
|
||||||
echo "env.NEXUS_URL : ${env.NEXUS_URL}"
|
echo "env.NEXUS_URL : ${env.NEXUS_URL}"
|
||||||
|
|
||||||
@@ -88,8 +96,6 @@ pipeline {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Thienvv- hàm checkout git code ansible về máy ansible
|
//Thienvv- hàm checkout git code ansible về máy ansible
|
||||||
@@ -150,16 +156,27 @@ def checkoutFromGit(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
def handleArtifactAndMetadata(String jobBuildName, String metadataFilename) {
|
//Hàm lấy artifact metadata file từ CI job
|
||||||
|
def retrieveArtifactMetadataFromCIJOB(String ciJobName, String ciJobBuildNumber, String metadataFilename) {
|
||||||
try {
|
try {
|
||||||
|
def selector = null
|
||||||
|
|
||||||
|
if (ciJobBuildNumber != '') { // nếu ciJobBuildNumber khác rỗng thì
|
||||||
|
selector = [$class: 'SpecificBuildSelector', buildNumber: ciJobBuildNumber] // selector = ciJobBuildNumber
|
||||||
|
} else { //còn nếu ciJobBuildNumber = rỗng thì
|
||||||
|
selector = lastSuccessful() //selector = build thành công gần nhất
|
||||||
|
}
|
||||||
// Sao chép artifact từ dự án khác
|
// Sao chép artifact từ dự án khác
|
||||||
copyArtifacts projectName: jobBuildName,
|
copyArtifacts projectName: ciJobName,
|
||||||
|
selector: selector,
|
||||||
filter: metadataFilename,
|
filter: metadataFilename,
|
||||||
target: '.'
|
target: '.'
|
||||||
|
|
||||||
// Kiểm tra sự tồn tại của file metadata
|
// Kiểm tra sự tồn tại của file metadata
|
||||||
if (!fileExists(metadataFilename)) {
|
if (!fileExists(metadataFilename)) {
|
||||||
error "File '${metadataFilename}' after copyArtifacts!"
|
error "File ${metadataFilename} not found after copyArtifacts!"
|
||||||
|
} else {
|
||||||
|
echo "File ${metadataFilename} successfully copied."
|
||||||
}
|
}
|
||||||
|
|
||||||
// Đọc dữ liệu từ file JSON
|
// Đọc dữ liệu từ file JSON
|
||||||
@@ -172,6 +189,7 @@ def handleArtifactAndMetadata(String jobBuildName, String metadataFilename) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def triggerAnsible(
|
def triggerAnsible(
|
||||||
String sshAnsibleConnection,
|
String sshAnsibleConnection,
|
||||||
String ansibleansibleFolderPath,
|
String ansibleansibleFolderPath,
|
||||||
|
|||||||
@@ -8,23 +8,24 @@ pipeline {
|
|||||||
GIT_URL = 'http://work.gct.com.vn/anhln/NSG_2025.git'
|
GIT_URL = 'http://work.gct.com.vn/anhln/NSG_2025.git'
|
||||||
GIT_BRANCH = 'main'
|
GIT_BRANCH = 'main'
|
||||||
|
|
||||||
|
PROJECT_NAME = 'acp'
|
||||||
TRIGGER_JOB_NAME = 'CD_FE_ACP'
|
TRIGGER_JOB_NAME = 'CD_FE_ACP'
|
||||||
METADATA_FILENAME = "${params.ENV}_metadata.json"
|
METADATA_FILENAME = "${params.ENV}_${PROJECT_NAME}_metadata.json"
|
||||||
|
|
||||||
NUXT_BUILD_FOLDER_PATH = "${env.WORKSPACE}"
|
NUXT_BUILD_FOLDER_PATH = "${env.WORKSPACE}"
|
||||||
OUTPUT_FOLDER_PATH = '.output' // đường dẫn đến .output (sau khi build xong)
|
OUTPUT_FOLDER_PATH = '.output' // đường dẫn đến .output (sau khi build xong)
|
||||||
COMMAND_NUXT_INSTALL = 'npm install' //command install dependencies
|
COMMAND_NUXT_INSTALL = 'npm install' //command install dependencies
|
||||||
|
|
||||||
COMMAND_NUXT_BUILD_UAT = 'yarn linux-builder' // command build
|
COMMAND_NUXT_BUILD_UAT = 'yarn linux-builder' // command build
|
||||||
COMMAND_NUXT_BUILD_PROD = 'yarn linux-builder:production' // command build
|
COMMAND_NUXT_BUILD_PROD = 'yarn linux-builder:production' // command build
|
||||||
|
|
||||||
COMPRESSED_FILE_NAME = "${params.ENV}_output.zip" // tên file nén
|
COMPRESSED_FILE_NAME = "${params.ENV}_${PROJECT_NAME}_output.zip" // tên file nén
|
||||||
COMPRESSED_FILE_PATH = "${env.WORKSPACE }/${COMPRESSED_FILE_NAME}"
|
COMPRESSED_FILE_PATH = "${env.WORKSPACE }/${COMPRESSED_FILE_NAME}"
|
||||||
|
|
||||||
NEXUS_CREDENTIALS = credentials('Nexus_credential')
|
NEXUS_CREDENTIALS = credentials('Nexus_credential')
|
||||||
|
NEXUS_REPO_URL = "https://nexus.gct.com.vn/repository/${PROJECT_NAME}-frontend"
|
||||||
NEXUS_REPO_URL = 'https://nexus.gct.com.vn/repository/acp-frontend'
|
|
||||||
GROUP_ID = 'vn.kinhtedothi'
|
GROUP_ID = 'vn.kinhtedothi'
|
||||||
ARTIFACT_ID = "${params.ENV}-acp-frontend"
|
ARTIFACT_ID = "${params.ENV}-${PROJECT_NAME}-frontend"
|
||||||
PACKAGING = 'zip'
|
PACKAGING = 'zip'
|
||||||
VERSION = '1.0.0' // Phiên bản cơ bản
|
VERSION = '1.0.0' // Phiên bản cơ bản
|
||||||
|
|
||||||
@@ -99,24 +100,36 @@ pipeline {
|
|||||||
env.VERSION,
|
env.VERSION,
|
||||||
env.NEXUS_URL,
|
env.NEXUS_URL,
|
||||||
env.NEXUS_ARTIFACT_NAME)
|
env.NEXUS_ARTIFACT_NAME)
|
||||||
|
|
||||||
|
echo "metadataFileName: ${env.METADATA_FILENAME}"
|
||||||
|
archiveArtifacts artifacts: "${env.METADATA_FILENAME}", allowEmptyArchive: false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
post {
|
post {
|
||||||
success {
|
|
||||||
echo "metadataFileName: ${env.METADATA_FILENAME}"
|
|
||||||
archiveArtifacts artifacts: "${env.METADATA_FILENAME}", allowEmptyArchive: false
|
|
||||||
|
|
||||||
build job: "${TRIGGER_JOB_NAME}", parameters: [
|
|
||||||
string(name: 'ENV', value: 'uat') ] }
|
|
||||||
|
|
||||||
failure {
|
|
||||||
echo 'Pipeline failed!'
|
|
||||||
}
|
|
||||||
always {
|
always {
|
||||||
echo 'Pipeline execution finished.'
|
echo 'Pipeline execution finished.'
|
||||||
}
|
}
|
||||||
|
success {
|
||||||
|
echo "Job '${env.JOB_NAME}' completed successfully. Attempting to trigger Job '${TRIGGER_JOB_NAME}'..."
|
||||||
|
script {
|
||||||
|
try {
|
||||||
|
def buildResult = build job: "${TRIGGER_JOB_NAME}", parameters:[
|
||||||
|
string(name: 'ENV', value: 'uat'),
|
||||||
|
string(name: 'CI_JOB_BUILD_NUMBER', value: env.BUILD_NUMBER)
|
||||||
|
],
|
||||||
|
propagate: false
|
||||||
|
if (buildResult.result != 'SUCCESS') {
|
||||||
|
echo "[WARNING] Job 2 failed with result: ${buildResult.result}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
echo "[ERROR] Failed to trigger job: ${TRIGGER_JOB_NAME}. Error: ${e.message}"
|
||||||
|
throw e
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user