CI-CD流程-命令行方式与Jenkins-Blue-Ocean方式
命令行模式
环境准备
- 克隆代码
1
git clone
- 启动私有docker hub
1
2docker run -d -p 5000:5000 -v /data/registry:/var/lib/registry --name registry --r
estart=always registry - 制作建置环境
1
docker build -t localhost:5000/maven dockers/maven
dockers/maven/Dockerfile
1 | FROM |
集成、测试、验证
4. 进行自动化测试
1 | docker-compose run --rm test |
docker-compose.yaml
1 | data: |
- 启动 alpha server
1
docker-compose up -d server
- 人员确认启动状况
- 关闭alpha server
1
docker-compose stop server
- 产出报表与封存
1
docker-compose run --rm package
部署
- 构建生产镜像
不需要maven,把额外的都去掉,保留最干净的环境,Dockerfile一般放在根目录下
1
make build-docker-prod-image
1
2
3
4
5
6# Dockerfile
FROM java
COPY target/spring-boot-simple-data-rest-0.1.0.jar /app/
EXPOSE 8000
WORKDIR /app
CMD /bin/bash -c 'java -jar spring-boot-simple-data-rest-0.1.0.jar - 发布生产镜像
1
docker push localhost:5000/java_simple_prod
- 启动生产镜像Makefile
1
make deploy-production-local
1
2
3
4
5
6
7
8
9
10
11
12
13start-docker-registry:
- docker run -d -p 5000:5000 -v /data/registry:/var/lib/registry --name registry --r
estart=always registry
build-docker-env:
docker build -t localhost:5000/maven dockers/maven
build-docker-prod-image:
docker build -t localhost:5000/java_simple_prod .
deploy-production-local:
- docker rm -f java_simple_prod
- docker run -d --name java_simple_prod -p 8000:8000 localhost:5000/java_simple_prod
Jenkins模式Blue Ocean
1 | # Jenkinsfile https://github.com/agileworks-tw/spring-boot-sample |
拓展
- agent docker所有应用在指定镜像中执行
1
2
3
4
5
6
7
8
9
10
11
12
13
14pipeline {
agent {
docker {
image 'maven:3-alpine'
args '-v /root/.m2:/root/.m2'
}
}
stages {
stage('Build') {
steps {
checkout scm
}
}
} - post当执行完有错误或者成功时运行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15pipeline {
agent any
stages {
stage('Test') {
steps {
sh 'mvn test'
}
post {
always {
junit 'target/surefire-reports/*.xml'
}
}
}
}
} - input parameter用户输入
1
2
3
4
5stage('wait for input'){
input {
......
}
} - when condition
1
2
3
4
5
6
7
8stage('deploy project'){
when{
branch 'master'
}
steps{
......
}
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Michael Blog!
评论