今天我 devops 了一下
public int sum(int a, int b) {
return b + a;
}
public int sum(int a, int b) {
return a + b;
}
git commit -am "修改了底层的计算逻辑,提升了代码的可读性,同时对调用方保持兼容和透明"
git push
name: pm-api-display
# 设置 master 分支在产生代码 push 时精确触发(PRECISE)构建
triggers:
push:
- matchType: PRECISE
branch: master
commitMessage: ''
# 构建阶段配置
stages:
- stage:
name: spring-boot-stage
displayName: 'Spring Boot Stage'
failFast: false
# 构建步骤配置
steps:
# 第一步
- step: mavenbuild@1
...
# 第二步
- step: agent-deploy@1
...
- step: mavenbuild@1 # 采用 Maven 编译环境
name: spring-boot-build-step # 定义一个 ID 标识为 spring-boot-build-step ,名为「编译构建」的阶段
displayName: '编译构建'
inputs: # 构建输入参数设定
jdkVersion: 8 # 指定 JDK 环境版本为 1.8
mavenVersion: 3.6 # 指定 Maven 环境版本为 3.6
goals: | # 使用 mvnw 打包编译,并将构建的 Jar 包
mvn clean package
mkdir output-artifact
cp target/*.jar output-artifact/
cp target/start.sh output-artifact/
cp target/Dockerfile output-artifact/
uploadArtifact: true # 构建完成后是否将构建物作为制品产出,非必填项,与下方上传参数需同时定义
uploadArtifactOptions: # 构建物上传参数,非必填项,与 `uploadArtifact` 参数需同时定义
artifactPath: './output-artifact' # 构建完成后要打包的构建物所在路径
artifactRepository: 'zhipinku' # 制品库名称,可以理解为一批构建物的集合
artifactName: 'spring-boot-jar' # 构建物打包后的制品名
- step: agent-deploy@1 # 定义通过 SA 部署插件
name: deploy # Step 唯一标识
dependsOn: spring-boot-build-step
displayName: '部署发布' # Step 显示名称
inputs: # Step 入参
hostGroupID: 'aliyun' # 指定部署主机组ID
minComplicating: 0 # 允许的最小并发部署数量
maxComplicating: 2 # 允许的最大并发部署数量
deployArtifact: # 上传的制品项
- name: 'compiled-artifact' # 上传部署的制品名(仅作为显示,无具体作用,允许重复)
source: build@spring-boot-stage/spring-boot-build-step # 部署制品文件引用自上游流水线 Stage/Step 的制品
artifactRepository: 'compiled-artifact' # 当制品引用自流水线,此参数可忽略
artifactName: 'server' # 当制品引用自流水线,此参数可忽略
target: /data # 目标机器制品上传目录
isForce: true # 当目标存在时是否强制覆盖,默认为 true,可选
script: | # 部署脚本,到目标机器制品上传目录解压并启动构建程序,并通过curl检测
cd /data
ls
tar -zxf spring-boot-jar.tar.gz
cd output-artifact
if test -z "$(docker ps -a -f NAME=pm-api -q)"; then echo "new docker run"; else docker rm -f $(docker ps -a -f NAME=pm-api -q); fi
if test -z "$(docker images pm-api:0.1 -aq)"; then echo "new docker images"; else docker rmi -f $(docker images pm-api:0.1 -aq); fi
docker build -t pm-api:0.1 .
docker run -dit --name pm-api -p 8080:8080 pm-api:0.1
echo "Deploy Success"
sleep 10
curl 127.0.0.1:8080
docker build -t pm-api:0.1 .
docker run -dit --name pm-api -p 8080:8080 pm-api:0.1
评论