
jenkins声明式远程部署UNIAPP项目(docker打包)
2. npm镜像设置,node节点上跑过一次之后,可以注释掉,节约点时间。1. 所有可变字段全部用变量定义,方便同类型项目复用。3. 普通vue项目也可参考此模式,略作调整即可。
·
注意项: 1. 所有可变字段全部用变量定义,方便同类型项目复用。 2. npm镜像设置,node节点上跑过一次之后,可以注释掉,节约点时间。 3. 普通vue项目也可参考此模式,略作调整即可。
pipeline {
agent any
environment {
def DOCKER_REGISTER = "xxx.com"
def DOCKER_NAMESPACE = "xxx"
def DOCKER_IMAGE = "xxx"
def DOCKER_TAG = "latest"
def DOCKER_CONTAINER_NAME = "xxx"
}
//构建触发器,Jenkins自动构建条件
triggers{
//每1分钟判断一次代码是否有变化
pollSCM('H/1 * * * *')
}
stages {
stage('获取代码') {
steps {
checkout scmGit(branches: [[name: '*/master']], extensions: [cleanBeforeCheckout(deleteUntrackedNestedRepositories: true)], userRemoteConfigs: [[credentialsId: 'aliyun_codeup', url: 'https://xxx.git']])
}
}
stage('编译代码') {
steps {
nodejs('node14') {
sh 'npm config set registry https://registry.npm.taobao.org'
//sh 'npm config set sass_binary_site=https://npm.taobao.org/mirrors/node-sass'
//sh 'npm i node-sass@4.14.1 sass-loader@7.3.1 --save -dev'
sh 'npm install'
sh 'npm run build:h5'
}
}
}
stage('镜像操作') {
steps {
tool name: 'docker', type: 'dockerTool'
script{
def dockerPath = tool 'docker' //全局配置里的docker
env.PATH = "${dockerPath}/bin:${env.PATH}" //添加了系统环境变量上
}
withCredentials([usernamePassword(credentialsId: 'aliyun_docker', passwordVariable: 'password', usernameVariable: 'username')]) {
sh "docker login ${DOCKER_REGISTER} -u ${username} -p ${password}"
sh "docker build -t ${DOCKER_REGISTER}/${DOCKER_NAMESPACE}/${DOCKER_IMAGE}:${DOCKER_TAG} -f Dockerfile . "
sh "docker push ${DOCKER_REGISTER}/${DOCKER_NAMESPACE}/${DOCKER_IMAGE}:${DOCKER_TAG}"
sh "docker rmi ${DOCKER_REGISTER}/${DOCKER_NAMESPACE}/${DOCKER_IMAGE}:${DOCKER_TAG}"
}
}
}
stage('更新远程服务'){
steps {
script {
def remote = [:]
remote.name = 'labs'
remote.host = '127.0.0.1'
remote.allowAnyHosts = true // 必须要运行所有主机
withCredentials([usernamePassword(credentialsId: 'labs-server', passwordVariable: 'password', usernameVariable: 'username')]) {
remote.user = username
remote.password = password
}
withCredentials([usernamePassword(credentialsId: 'aliyun_docker', passwordVariable: 'password', usernameVariable: 'username')]) {
sshCommand remote: remote, command: """
docker rm -f ${DOCKER_CONTAINER_NAME};
docker rmi ${DOCKER_REGISTER}/${DOCKER_NAMESPACE}/${DOCKER_IMAGE}:${DOCKER_TAG};
docker login ${DOCKER_REGISTER} -u ${username} -p ${password}
docker run -d --name ${DOCKER_CONTAINER_NAME} ${DOCKER_REGISTER}/${DOCKER_NAMESPACE}/${DOCKER_IMAGE}:${DOCKER_TAG}
exit
"""
}
}
}
}
}
}
更多推荐
所有评论(0)