Thienvv - fix
This commit is contained in:
@@ -26,13 +26,13 @@ pipeline {
|
||||
}
|
||||
|
||||
stages {
|
||||
stage('Retrieve Artifact From CI Job') {
|
||||
stage('Retrieve Artifact Metadata From CI Job') {
|
||||
steps {
|
||||
script {
|
||||
def ciJobBuildNumber = params.CI_JOB_BUILD_NUMBER
|
||||
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
|
||||
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 {
|
||||
def selector = null
|
||||
|
||||
|
||||
@@ -2,17 +2,19 @@ pipeline {
|
||||
agent any
|
||||
parameters {
|
||||
choice(name: 'ENV', choices: ['uat', 'prod'], description: 'Choose Environment')
|
||||
string(name: 'CI_JOB_BUILD_NUMBER', defaultValue: '', description: 'Build number of CI Job')
|
||||
|
||||
}
|
||||
environment {
|
||||
JOB_BUILD_NAME = 'CI_FE_ACP' // tên của job build code
|
||||
METADATA_FILENAME = "${params.ENV}_metadata.json" // tên file metadata đã được lưu từ job build code
|
||||
PROJECT_NAME = 'acp'
|
||||
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_ANSIBLE_URL = 'work.gct.com.vn/thienvv/nsg_ansible.git'
|
||||
GIT_ANSIBLE_BRANCH = 'v2'
|
||||
|
||||
NEXUS_CREDENTIALS = credentials('Nexus_credential')
|
||||
PROJECT_NAME = 'acp'
|
||||
ANSIBLE_SSH_CONNECTION = 'root@103.166.183.172 -p 24700'
|
||||
|
||||
ANSIBLE_FOLDER_PATH = '/srv/ansible_v2'
|
||||
@@ -24,10 +26,16 @@ pipeline {
|
||||
}
|
||||
|
||||
stages {
|
||||
stage('Fetch Metadata File From Job Build') {
|
||||
stage('Retrieve Artifact Metadata From CI Job') {
|
||||
steps {
|
||||
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
|
||||
echo "env.NEXUS_URL : ${env.NEXUS_URL}"
|
||||
|
||||
@@ -88,8 +96,6 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
//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 {
|
||||
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
|
||||
copyArtifacts projectName: jobBuildName,
|
||||
copyArtifacts projectName: ciJobName,
|
||||
selector: selector,
|
||||
filter: metadataFilename,
|
||||
target: '.'
|
||||
|
||||
// Kiểm tra sự tồn tại của file metadata
|
||||
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
|
||||
@@ -172,6 +189,7 @@ def handleArtifactAndMetadata(String jobBuildName, String metadataFilename) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def triggerAnsible(
|
||||
String sshAnsibleConnection,
|
||||
String ansibleansibleFolderPath,
|
||||
|
||||
@@ -8,23 +8,24 @@ pipeline {
|
||||
GIT_URL = 'http://work.gct.com.vn/anhln/NSG_2025.git'
|
||||
GIT_BRANCH = 'main'
|
||||
|
||||
PROJECT_NAME = '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}"
|
||||
OUTPUT_FOLDER_PATH = '.output' // đường dẫn đến .output (sau khi build xong)
|
||||
COMMAND_NUXT_INSTALL = 'npm install' //command install dependencies
|
||||
|
||||
COMMAND_NUXT_BUILD_UAT = 'yarn linux-builder' // 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}"
|
||||
|
||||
NEXUS_CREDENTIALS = credentials('Nexus_credential')
|
||||
|
||||
NEXUS_REPO_URL = 'https://nexus.gct.com.vn/repository/acp-frontend'
|
||||
NEXUS_REPO_URL = "https://nexus.gct.com.vn/repository/${PROJECT_NAME}-frontend"
|
||||
GROUP_ID = 'vn.kinhtedothi'
|
||||
ARTIFACT_ID = "${params.ENV}-acp-frontend"
|
||||
ARTIFACT_ID = "${params.ENV}-${PROJECT_NAME}-frontend"
|
||||
PACKAGING = 'zip'
|
||||
VERSION = '1.0.0' // Phiên bản cơ bản
|
||||
|
||||
@@ -99,24 +100,36 @@ pipeline {
|
||||
env.VERSION,
|
||||
env.NEXUS_URL,
|
||||
env.NEXUS_ARTIFACT_NAME)
|
||||
|
||||
echo "metadataFileName: ${env.METADATA_FILENAME}"
|
||||
archiveArtifacts artifacts: "${env.METADATA_FILENAME}", allowEmptyArchive: false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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 {
|
||||
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