|
@@ -1,71 +1,203 @@
|
|
|
kind: pipeline
|
|
kind: pipeline
|
|
|
type: docker
|
|
type: docker
|
|
|
-name: test-pipeline
|
|
|
|
|
|
|
+name: default
|
|
|
|
|
|
|
|
-# 关闭自动设置Git镜像
|
|
|
|
|
-# 此处可以不设置,将获取最新的git镜像
|
|
|
|
|
-clone:
|
|
|
|
|
- disable: true
|
|
|
|
|
|
|
+# 触发分支
|
|
|
|
|
+trigger:
|
|
|
|
|
+ branch:
|
|
|
|
|
+ - master
|
|
|
|
|
+ - develop
|
|
|
|
|
|
|
|
steps:
|
|
steps:
|
|
|
- # 设置Git镜像版本,下载仓库文件
|
|
|
|
|
- # 如果上面没有设置clone,此处需要删除(如果不删除,在pipeline中将多一个clone,pipeline会出错)
|
|
|
|
|
- - name: clone
|
|
|
|
|
- image: drone/git:1.2.1
|
|
|
|
|
|
|
|
|
|
- # 构建和编译Java项目
|
|
|
|
|
- - name: maven-build
|
|
|
|
|
- image: maven:3.8.4
|
|
|
|
|
|
|
+ # 获取缓存 (首次部署注释掉此处)
|
|
|
|
|
+ - name: restore-cache
|
|
|
|
|
+ image: drillster/drone-volume-cache
|
|
|
|
|
+ settings:
|
|
|
|
|
+ restore: true
|
|
|
|
|
+ mount:
|
|
|
|
|
+ - /root/.m2/repository
|
|
|
volumes:
|
|
volumes:
|
|
|
- # Maven缓存目录
|
|
|
|
|
- - name: mvn-cache
|
|
|
|
|
- path: /root/.m2
|
|
|
|
|
|
|
+ - name: repository
|
|
|
|
|
+ path: /cache
|
|
|
|
|
|
|
|
- # 在Docker容器内执行的命令
|
|
|
|
|
|
|
+ # 打包 (prod)
|
|
|
|
|
+ - name: build-prod
|
|
|
|
|
+ image: matderosa/maven-3.8-openjdk-17-gcc8.5
|
|
|
|
|
+ volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置
|
|
|
|
|
+ - name: maven-cache
|
|
|
|
|
+ path: /root/.m2 # 将maven下载依赖的目录挂载出来,防止重复下载
|
|
|
|
|
+ # (/app/build/ 对应的是 /home/www/project/DaoguCms/ 目录)
|
|
|
|
|
+ - name: maven-build
|
|
|
|
|
+ path: /app/build # 将应用打包好的Jar和执行脚本挂载出来
|
|
|
commands:
|
|
commands:
|
|
|
- - mvn clean install
|
|
|
|
|
|
|
+ - mvn clean package -P prod
|
|
|
|
|
+ # (此时拷贝的内容是仓库分支拉下来的代码)
|
|
|
|
|
+ - mkdir -p /app/build/target
|
|
|
|
|
+ # 将打包好的 Jar包 拷贝到指定目录
|
|
|
|
|
+ - cp target/test.jar /app/build/target/test.jar
|
|
|
|
|
+ # 将配置文件从最新的分支 拷贝到目标目录
|
|
|
|
|
+ - cp Dockerfile /app/build/Dockerfile
|
|
|
|
|
+ - cp docker-compose.yml /app/build/docker-compose.yml
|
|
|
|
|
+ when:
|
|
|
|
|
+ branch:
|
|
|
|
|
+ master
|
|
|
|
|
+
|
|
|
|
|
+ # 打包 (develop)
|
|
|
|
|
+ # - 在同个服务器时,docker-compose.yml 需要修改服务名
|
|
|
|
|
+ - name: build-dev
|
|
|
|
|
+ image: matderosa/maven-3.8-openjdk-17-gcc8.5
|
|
|
|
|
+ volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置
|
|
|
|
|
+ - name: maven-cache
|
|
|
|
|
+ path: /root/.m2 # 将maven下载依赖的目录挂载出来,防止重复下载
|
|
|
|
|
+ # (/app/build/ 对应的是 /home/DaoguCms/ 目录)
|
|
|
|
|
+ - name: maven-build-dev
|
|
|
|
|
+ path: /app/build # 将应用打包好的Jar和执行脚本挂载出来
|
|
|
|
|
+ commands:
|
|
|
|
|
+ - mvn clean package -P dev
|
|
|
|
|
+ # (此时拷贝的内容是仓库分支拉下来的代码)
|
|
|
|
|
+ - mkdir -p /app/build/target
|
|
|
|
|
+ # 将打包好的 Jar包 拷贝到指定目录
|
|
|
|
|
+ - cp target/test-dev.jar /app/build/target/test-dev.jar
|
|
|
|
|
+ # 将配置文件从最新的分支 拷贝到目标目录
|
|
|
|
|
+ - cp Dockerfile /app/build/Dockerfile
|
|
|
|
|
+ - cp docker-compose.yml /app/build/docker-compose.yml
|
|
|
|
|
+ when:
|
|
|
|
|
+ branch:
|
|
|
|
|
+ develop
|
|
|
|
|
+
|
|
|
|
|
+ # # 更新缓存
|
|
|
|
|
+ # - name: rebuild-cache
|
|
|
|
|
+ # image: drillster/drone-volume-cache
|
|
|
|
|
+ # settings:
|
|
|
|
|
+ # rebuild: true
|
|
|
|
|
+ # mount:
|
|
|
|
|
+ # - /root/.m2/repository
|
|
|
|
|
+ # volumes:
|
|
|
|
|
+ # - name: repository
|
|
|
|
|
+ # path: /cache
|
|
|
|
|
+
|
|
|
|
|
+ # 传输 (master)
|
|
|
|
|
+ - name: scp-master
|
|
|
|
|
+ image: appleboy/drone-scp
|
|
|
|
|
+ settings:
|
|
|
|
|
+ port: 22
|
|
|
|
|
+ host:
|
|
|
|
|
+ from_secret: daogucms_ssh_host
|
|
|
|
|
+ username:
|
|
|
|
|
+ from_secret: daogucms_ssh_username
|
|
|
|
|
+ password:
|
|
|
|
|
+ from_secret: daogucms_ssh_password
|
|
|
|
|
+ command_timeout: 5m
|
|
|
|
|
+ source:
|
|
|
|
|
+ - target/test.jar
|
|
|
|
|
+ target: /home/app/
|
|
|
|
|
+ when:
|
|
|
|
|
+ branch: master
|
|
|
|
|
+ path:
|
|
|
|
|
+ - "!db/**"
|
|
|
|
|
+ - "!README.md"
|
|
|
|
|
+
|
|
|
|
|
+ # 部署 (prod)
|
|
|
|
|
+ - name: deploy-ssh-prod
|
|
|
|
|
+ image: appleboy/drone-ssh
|
|
|
|
|
+ settings:
|
|
|
|
|
+ port: 22
|
|
|
|
|
+ host:
|
|
|
|
|
+ from_secret: daogucms_ssh_host
|
|
|
|
|
+ username:
|
|
|
|
|
+ from_secret: daogucms_ssh_username
|
|
|
|
|
+ password:
|
|
|
|
|
+ from_secret: daogucms_ssh_password
|
|
|
|
|
+ command_timeout: 1m
|
|
|
|
|
+ script:
|
|
|
|
|
+ # (此时是在 SSH登录服务器 的作用域)
|
|
|
|
|
+ # Docker 启动
|
|
|
|
|
+ - cd /home/app
|
|
|
|
|
+ # 根据 Dockerfile 配置创建镜像 (名称需要小写)
|
|
|
|
|
+ - sudo docker build -t test .
|
|
|
|
|
+ # 停止容器
|
|
|
|
|
+ - sudo docker-compose down
|
|
|
|
|
+ # 启动容器 (根据 docker-compose.yml 配置)
|
|
|
|
|
+ - sudo docker-compose up -d
|
|
|
|
|
+ - sudo docker image prune -f
|
|
|
|
|
+ - sudo echo "Docker App started."
|
|
|
|
|
+ when:
|
|
|
|
|
+ branch: master
|
|
|
|
|
+ path:
|
|
|
|
|
+ - "!db/**"
|
|
|
|
|
+ - "!README.md"
|
|
|
|
|
+
|
|
|
|
|
+ # ------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
- # 发布项目
|
|
|
|
|
- - name: test
|
|
|
|
|
- image: appleboy/drone-ssh:1.6.4
|
|
|
|
|
|
|
+ # 传输 (develop)
|
|
|
|
|
+ - name: scp-develop
|
|
|
|
|
+ image: appleboy/drone-scp
|
|
|
settings:
|
|
settings:
|
|
|
- # 部署主机的IP 11
|
|
|
|
|
- host: 8.155.171.167
|
|
|
|
|
- # 部署主机的登录账号,需从Drone中获取密钥名ssh_user的值,创建方式见下面
|
|
|
|
|
|
|
+ port: 22
|
|
|
|
|
+ host:
|
|
|
|
|
+ from_secret: daogucms_ssh_host
|
|
|
username:
|
|
username:
|
|
|
- from_secret: ssh_user
|
|
|
|
|
- # 部署主机的登录密码,需从Drone中获取密钥名ssh_pwd的值,创建方式见下面
|
|
|
|
|
|
|
+ from_secret: daogucms_ssh_username
|
|
|
password:
|
|
password:
|
|
|
- from_secret: ssh_pwd
|
|
|
|
|
- # 端口号
|
|
|
|
|
|
|
+ from_secret: daogucms_ssh_password
|
|
|
|
|
+ command_timeout: 5m
|
|
|
|
|
+ source:
|
|
|
|
|
+ - target/test-dev.jar
|
|
|
|
|
+ target: /home/app/
|
|
|
|
|
+ when:
|
|
|
|
|
+ branch: develop
|
|
|
|
|
+ path:
|
|
|
|
|
+ - "!db/**"
|
|
|
|
|
+ - "!README.md"
|
|
|
|
|
+
|
|
|
|
|
+ # 部署 (develop)
|
|
|
|
|
+ - name: deploy-ssh-dev
|
|
|
|
|
+ image: appleboy/drone-ssh
|
|
|
|
|
+ settings:
|
|
|
port: 22
|
|
port: 22
|
|
|
- # 设置超时
|
|
|
|
|
- command_timeout: 10m
|
|
|
|
|
- # 编写脚本,可根据具体情况编写
|
|
|
|
|
|
|
+ host:
|
|
|
|
|
+ from_secret: daogucms_ssh_host
|
|
|
|
|
+ username:
|
|
|
|
|
+ from_secret: daogucms_ssh_username
|
|
|
|
|
+ password:
|
|
|
|
|
+ from_secret: daogucms_ssh_password
|
|
|
|
|
+ command_timeout: 1m
|
|
|
script:
|
|
script:
|
|
|
- # 进入宿主机的“/home/app”目录(注意:先在宿主机上创建app目录)
|
|
|
|
|
- cd /home/app
|
|
- cd /home/app
|
|
|
- # 删除jar包,我测试的工程名是test
|
|
|
|
|
- # - rm -rf test.0.0.1-SNAPSHOT.jar
|
|
|
|
|
- # 将编译后的jar包复制到"/home/app"下
|
|
|
|
|
- - cp /home/mvn/.m2/repository/com/feiyi/project/test/0.0.1-SNAPSHOT/test-0.0.1-SNAPSHOT.jar .
|
|
|
|
|
- # 执行"/home/app"下的脚本(注意:需要在“/home/app”目录下创建dayunhui.sh文件)
|
|
|
|
|
- - export PATH=$PATH:/usr/local/jdk1.8.0_401/bin
|
|
|
|
|
- - sh test.sh restart
|
|
|
|
|
- #- nohup java -jar /home/app/test-0.0.1-SNAPSHOT.jar > /dev/null 2> /dev/null &
|
|
|
|
|
|
|
+ - sudo docker build -t test-dev .
|
|
|
|
|
+ - sudo docker-compose down
|
|
|
|
|
+ - sudo docker-compose up -d
|
|
|
|
|
+ - sudo docker image prune -f
|
|
|
|
|
+ - sudo echo "Docker App started."
|
|
|
|
|
+ when:
|
|
|
|
|
+ branch: develop
|
|
|
|
|
|
|
|
- #- export PATH=$PATH:/usr/local/jdk1.8.0_401/bin
|
|
|
|
|
|
|
+ # ------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
- # - java -jar /home/app/test-0.0.1-SNAPSHOT.jar
|
|
|
|
|
|
|
+ # 清除冗余镜像
|
|
|
|
|
+ - name: cleanup
|
|
|
|
|
+ image: docker:dind
|
|
|
|
|
+ volumes:
|
|
|
|
|
+ - name: docker-sock
|
|
|
|
|
+ path: /var/run/docker.sock
|
|
|
|
|
+ when:
|
|
|
|
|
+ status: [ success ]
|
|
|
|
|
+ commands:
|
|
|
|
|
+ # 删除1小时前创建的未使用镜像
|
|
|
|
|
+ - docker image prune -f --filter "until=1h"
|
|
|
|
|
|
|
|
|
|
|
|
|
-# 挂载宿主机目录,对应"mvn-cache"的Maven容器的目录
|
|
|
|
|
-volumes:
|
|
|
|
|
- - name: mvn-cache
|
|
|
|
|
|
|
+volumes: # 定义流水线挂载目录,用于共享数据
|
|
|
|
|
+ - name: maven-build
|
|
|
host:
|
|
host:
|
|
|
- path: /home/mvn/.m2
|
|
|
|
|
-
|
|
|
|
|
-# 对应Gogs仓库分支
|
|
|
|
|
-trigger:
|
|
|
|
|
- branch:
|
|
|
|
|
- - master
|
|
|
|
|
|
|
+ path: /home/app # 从宿主机中挂载的目录
|
|
|
|
|
+ - name: maven-build-dev
|
|
|
|
|
+ host:
|
|
|
|
|
+ path: /home/app # 从宿主机中挂载的目录
|
|
|
|
|
+ - name: maven-cache
|
|
|
|
|
+ host:
|
|
|
|
|
+ path: /root/docker/maven/cache
|
|
|
|
|
+ - name: docker-sock
|
|
|
|
|
+ host:
|
|
|
|
|
+ path: /var/run/docker.sock
|