123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- @Library('jenkins-share-library@master')
- def qyWechatRobot = new org.devops.notification.QYWechatRobot()
- pipeline {
- agent {
- node {
- label 'master'
- }
- }
- environment {
- _fullDisplayName = "幼享乐-Web管理后台"
- _qyWechatRobotToken = "a47cb467-8e94-4877-b275-832cc1f0d9af"
- _remote = "root@47.97.230.53"
- _buildTime = new Date().format('yyyyMMddHHmmss')
- _git_tag = sh(returnStdout: true, script: 'git describe --tags --always').trim()
- _git_branch = sh(returnStdout: true, script: 'echo ${GIT_BRANCH#*/}').trim()
- _git_commit_email = sh(returnStdout: true, script: 'git --no-pager show -s --format=\'%ae\'').trim()
- _git_commit_message = sh (script: 'git log -1 --pretty=%B ${GIT_COMMIT}', returnStdout: true).trim()
- _productFileName = "yxl-web-admin-frontend_${_git_branch}_${_buildTime}.tar.gz"
- _productPath = '/app/yxl/admin-frontend'
- _productBackupPath = '/app/backup/yxl/admin-frontend'
- }
- triggers {
- gitlab(
- triggerOnPush: true,
- triggerOnMergeRequest: true,
- triggerOnNoteRequest: true,
- branchFilterType: 'All',
- secretToken: 'asdfghjkl'
- )
- }
- options {
- timestamps()
- disableConcurrentBuilds()
- retry(1)
- buildDiscarder(
- logRotator(
- daysToKeepStr: '30',
- numToKeepStr: '10',
- artifactDaysToKeepStr: '30',
- artifactNumToKeepStr: '10'
- )
- )
- timeout(
- time: 15,
- unit: 'MINUTES',
- activity: true
- )
- gitLabConnection('gitlab')
- }
- post {
- always {
- cleanWs()
- }
- success {
- updateGitlabCommitStatus name: 'build', state: 'success'
- script {
- qyWechatRobot.endBuild('构建成功😀', _qyWechatRobotToken)
- }
- }
- failure {
- updateGitlabCommitStatus name: 'build', state: 'failed'
- script {
- qyWechatRobot.endBuild('构建失败🤬', _qyWechatRobotToken)
- }
- }
- aborted {
- script {
- qyWechatRobot.endBuild('构建取消🤯', _qyWechatRobotToken)
- }
- }
- }
- stages {
- stage('Start Notification') {
- steps {
- script {
- qyWechatRobot.startBuild(_qyWechatRobotToken)
- }
- }
- }
- stage('Env & Param') {
- parallel {
- stage('Env') {
- steps {
- sh 'printenv'
- echo "系统当前用户 [${env.USER}]"
- echo "JENKINS_URL [${env.JENKINS_URL}]"
- echo "WORKSPACE [${env.WORKSPACE}]"
- }
- }
- stage('Job') {
- steps {
- echo "-------------------- --------------------"
- echo "JOB_NAME [${env.JOB_NAME}]"
- echo "BUILD_NUMBER [${env.BUILD_NUMBER}]"
- echo "BUILD_URL [${env.BUILD_URL}]"
- echo "BUILD_NUMBER [${env.BUILD_NUMBER}]"
- echo "-------------------- --------------------"
- echo "BRANCH_NAME [${env.BRANCH_NAME}]"
- echo "GIT_BRANCH [${env.GIT_BRANCH}]"
- echo "GIT_COMMIT [${env.GIT_COMMIT}]"
- echo "GIT_COMMIT [${env.commit}]"
- echo "_git_tag [${_git_tag}]"
- echo "_git_branch [${_git_branch}]"
- echo "-------------------- --------------------"
- echo "产物名称 [${_productFileName}]"
- sh "node -v"
- sh "npm -v"
- }
- }
- }
- }
- stage('Install') {
- steps {
- sh 'npm install'
- }
- }
- stage('Static Check') {
- parallel {
- stage('eslint') {
- steps {
- echo 'eslint'
- }
- }
- }
- }
- stage('Build') {
- steps {
- sh 'npm run build:prod'
- }
- }
- stage('Product') {
- steps {
- dir("${env.WORKSPACE}/dist") {
- sh "tar -zcvf ${env.WORKSPACE}/${_productFileName} ./"
- }
- archiveArtifacts(
- artifacts: '*.tar.gz',
-
- caseSensitive: true,
- fingerprint: true,
- onlyIfSuccessful: true
- )
- }
- }
- stage('Pre-Release') {
- steps {
- script {
- if ("${_git_branch}" == 'master') {
- echo "当前分支为:[${_git_branch}], 准备发布ing..."
- } else {
- error("当前分支为:[${_git_branch}], 终止当前发布操作...")
- }
- }
- }
- }
- stage('Release') {
- parallel {
- stage('master分支') {
- when {
- branch 'master'
- }
- steps {
- script {
- echo '准备发布ing...'
- sh """
- ssh ${_remote} "
- source /etc/profile
- mkdir -pv ${_productBackupPath}
- mkdir -pv ${_productPath}
- "
- """
- sh "scp -r ${WORKSPACE}/${_productFileName} ${_remote}:${_productBackupPath}"
- sh """
- ssh ${_remote} "
- source /etc/profile
- rm -rf ${_productPath}
|