一、在阿里云容器服务中创建私有仓库
二、jenkinsfile代码如下
//写流水线的脚本(声明式、脚本式)
pipeline{
//全部的CICD流程都写在这里
//任何一个代理可用就执行
agent any
//定义一些环境信息
environment {
ALIYUN_SECRET=credentials("aliyun-docker-repo")
}
//定义流水线的加工流程
stages{
//流水线的所有阶段
stage('环境检查'){
steps {
echo "正在检查基本信息"
}
}
//1、编译
//一般双引号是变量,单引号用于常量
stage('编译'){
steps {
//要做的所有事情
echo "编译..."
}
}
//2、测试
stage('测试'){
steps {
//要做的所有事情
echo "测试..."
}
}
//3、打包
stage('打包'){
steps {
//要做的所有事情
echo "打包..."
sh 'docker version'
sh 'pwd && ls -alh'
sh 'docker build -t golang-demo .'
}
}
//3.95
stage("推送镜像"){
input {
message "需要推送远程镜像吗?"
ok "需要"
parameters {
string(name :'APP_VER',defaultValue:'v1.0',description:'生产环境需要部署的版本')
}
}
steps{
// message: '需要推送远程镜像吗?', ok: '需要', parameters: [text(defaultValue: 'v1.0', description: '生产环境需要部署的版本', name: 'APP_VER')]
//sh 'docker login --username=jacson69 registry.cn-qingdao.aliyuncs.com'
sh "docker login -u ${ALIYUN_SECRET_USR} -p ${ALIYUN_SECRET_PSW} registry.cn-qingdao.aliyuncs.com"
sh "docker tag golang-demo registry.cn-qingdao.aliyuncs.com/docker_demo1/devops_demo:${APP_VER}"
sh "docker push registry.cn-qingdao.aliyuncs.com/docker_demo1/devops_demo:${APP_VER}"
}
}
//4、部署
stage('部署'){
steps {
//要做的所有事情
echo "部署..."
//删除
sh 'docker rm -f devops-demo'
//运行docker镜像,并将容器名设置为devops-demo
sh 'docker run -d -p 8888:8090 --name devops-demo golang-demo'
}
post {
failure {
// One or more steps need to be included within each condition's block.
echo "炸了。。。"
}
success {
echo "成了。。。"
}
}
}
}
}
三、运行流水线
推送镜像到阿里云私有仓库,输入版本即可推送