登录 Jenkins ,新建
配置 Configure
在项目下新建 Jenkinsfile
pipeline{
agent any
environment {
PROJECT_PATH="xxx"
TEST_URL="http://xxx:8090"
}
stages {
stage('PREPARE') {
steps {
script {
env.LAST_STAGE_NAME = "$env.STAGE_NAME"
env.GIT_COMMIT_EMAIL=sh(script:"git --no-pager show -s --format=%ae",returnStdout: true).trim()
env.GIT_COMMIT_AUTHOR=sh(script:"git --no-pager show -s --format=%an",returnStdout: true).trim()
env.GIT_COMMIT_DATE=sh(script:"git --no-pager show -s --format=%ad",returnStdout: true).trim()
env.PROJECT_URL=sh(script:"git --no-pager config --local remote.origin.url",returnStdout: true).trim()
}
sh '''#!/bin/bash
source /root/.bashrc
nvm use v16.13.0
nvm alias default v16.13.0
node --version
'''
}
}
stage("INSTALL"){
steps{
script {
env.LAST_STAGE_NAME = "$env.STAGE_NAME"
}
sh '''#!/bin/bash
source /root/.bashrc
node --version
npm -v
npm config get registry
df -h
ls "$PROJECT_PATH"
npm --registry https://registry.npm.taobao.org install --legacy-peer-deps
'''
}
}
stage("BUILD"){
steps{
script {
env.LAST_STAGE_NAME = "$env.STAGE_NAME"
}
sh '''#!/bin/bash
source /root/.bashrc
node --version
npm -v
npm run build:testnet
'''
}
}
stage("UPLOAD"){
steps{
script {
env.LAST_STAGE_NAME = "$env.STAGE_NAME"
}
sh '''#!/bin/bash
tar -czvf build.tar.gz build
ansible 192.168.1.xx -m copy -a "src=/home/data/jenkins/workspace/$JOB_BASE_NAME/build.tar.gz dest=/root/web/xxx.web/build.tar.gz mode=0777"
ansible 192.168.1.xx -m shell -a "cd /root/web/xxx.web && tar -xzvf build.tar.gz"
'''
}
}
stage("RESET"){
steps{
script {
env.LAST_STAGE_NAME = "$env.STAGE_NAME"
}
sh '''#!/bin/bash
source /root/.bashrc
nvm use system
nvm alias default system
ansible 192.168.1.xx -m shell -a "cd /root/web/xxx.web && rm -rf build.tar.gz"
rm -rf "$PROJECT_PATH/node_modules" "$PROJECT_PATH/package-lock.json"
'''
}
}
}
post {
always {
script {
sh """
curl 'https://oapi.dingtalk.com/robot/send?access_token=access_token' \
-H 'Content-Type: application/json' \
-d '{
"markdown": {
"title": "${JOB_BASE_NAME}",
"text": " - 工程: ${JOB_BASE_NAME} \n - 邮箱: ${env.GIT_COMMIT_EMAIL} \n - Name: ${env.GIT_COMMIT_AUTHOR} \n - STAGE: ${env.LAST_STAGE_NAME} \n - [JENKINS_URL](${env.BUILD_URL}) \n - ${env.PROJECT_URL} \n - [TEST_URL](${TEST_URL}) \n"
},
"msgtype":"markdown"
}'
"""
}
}
}
}
在gitlab>settings>integrations>add Webhooks,