CI-CD流程-命令行方式与Jenkins-Blue-Ocean方式
命令行模式
环境准备
- 克隆代码plaintext
1
git clone
- 启动私有docker hubplaintext
1
2docker run -d -p 5000:5000 -v /data/registry:/var/lib/registry --name registry --r
estart=always registry - 制作建置环境plaintext
1
docker build -t localhost:5000/maven dockers/maven
dockers/maven/Dockerfile
plaintext
1 | FROM |
集成、测试、验证
4. 进行自动化测试
plaintext
1 | docker-compose run --rm test |
docker-compose.yaml
plaintext
1 | data: |
- 启动 alpha serverplaintext
1
docker-compose up -d server
- 人员确认启动状况
- 关闭alpha serverplaintext
1
docker-compose stop server
- 产出报表与封存plaintext
1
docker-compose run --rm package
部署
- 构建生产镜像
不需要maven,把额外的都去掉,保留最干净的环境,Dockerfile一般放在根目录下
plaintext1
make build-docker-prod-image
plaintext1
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 - 发布生产镜像plaintext
1
docker push localhost:5000/java_simple_prod
- 启动生产镜像Makefileplaintext
1
make deploy-production-local
plaintext1
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
plaintext
1 | # Jenkinsfile https://github.com/agileworks-tw/spring-boot-sample |
拓展
- agent docker所有应用在指定镜像中执行plaintext
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当执行完有错误或者成功时运行plaintext
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用户输入plaintext
1
2
3
4
5stage('wait for input'){
input {
......
}
} - when conditionplaintext
1
2
3
4
5
6
7
8stage('deploy project'){
when{
branch 'master'
}
steps{
......
}
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Michael Blog!
评论
未找到相关的 Issues 进行评论
请联系 @xhuaustc 初始化创建