Thienvv - fix

This commit is contained in:
thienqb123456
2024-12-24 01:24:29 +07:00
parent 6b2bc45f83
commit ca8079078d
3 changed files with 60 additions and 28 deletions
+4 -3
View File
@@ -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
+28 -10
View File
@@ -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,
+28 -15
View File
@@ -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
}
}
}
}
}