jsj项目自动化部署
1.自动化部署设备支持(服务器三台)
server-1 ci-build: 192.168.2.133
server-2 ci-data: 192.168.2.122
server-3 ci-deploy: 192.168.2.159
2.自动化部署软件技术支持
gitlab, drone-1.0, rancher-1.6.30, harbor-2.0,docker-19.03.8,docker-compose-1.25.5
3.软件部署及端口分配
3.1 ci-build(192.168.2.133)
drone-server drone-agent ports: 80, 443
sonarqube ports: 9000
rancher ports: 8080
emq ports: 18083,1883
docker-19.03.8,docker-compose-1.25.5
3.2 ci-data(192.168.2.122)
harbor
docker-19.03.8,docker-compose-1.25.5
3.3 ci-deploy(192.168.2.159)
gitlab
rancher-agent(容器运行宿主机)
docker-19.03.8, docker-compose-1.25.5
4. gitlab搭建
### centos
1.安装openssh及客户端,postfix服务器和lokkit命令
sudo yum install -y curl policycoreutils-python openssh-server openssh-clients postfix cronie lokkit
2. 启动postfix邮件服务器和sshd,并设置为开机自动启动
sudo systemctl enable sshd
sudo systemctl start sshd
sudo systemctl enable postfix
sudo systemctl start postfix
sudo chkconfig postfix on
3.使用lokkit命令设置防火墙,打开http和ssh的访问权限
sudo lokkit -s http -s ssh
4. 添加gitlab镜像
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.0.0- ce.0.el7.x86_64.rpm
##4.获取Gitlab源
##curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab- ce/script.rpm.sh | sudo bash
5.下载安装gitlab
rpm -i gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm
6.初始化配置
sudo vim /etc/gitlab/gitlab.rb
6.1.配置external_url
external_url 'http://192.168.206.130/' # 将url换成本机ip,为gitlab对外提供的访问链接,也可以是域名。
6.2.修改gitlab服务端口
unicorn['port'] = 8081 # 将Unicorn打开并将默认端口从8080改为8081避免端口冲突,如本机没有使用8080端口,则可不改。
6.3.重载配置
sudo gitlab-ctl reconfigure
7.首次登录为root设置初始密码,配置邮箱,配置邮箱需要开启该邮箱的smtp授权,并记录授权码,否则会无法接收到gitlab发 送的邮件。
8.修改gitlab.rb
## GitLab email server settings
###! Docs: https://docs.gitlab.com/omnibus/settings/smtp.html
###! **Use smtp instead of sendmail/postfix.**
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "742372209@qq.com" # 接收邮箱
gitlab_rails['smtp_password'] = "zobvwuxginehbeda" # 授权码
gitlab_rails['smtp_domain'] = "smtp.qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = '742372209@qq.com' # 此行必须新增
然后 sudo gitlab-ctl reconfigure 重载配置
然后在gitlab上选择settings 将其默认邮箱改为配置邮箱,发送邮件,并在配置邮箱中确认邮件信息,就会更新邮箱配置。 后续用管理员添加新用户并登陆。
9.配置git存储仓库目录及进行数据仓库迁移
sudo vim /etc/gitlab/gitlab.rb
配置git存储仓库:
git_data_dirs({
"default" => { "path" => "/home/gitlab/git-data" }
})
gitlab数据仓库迁移:
sudo gitlab-ctl stop
sudo rsync -av /var/opt/gitlab/git-data/repositories /home/gitlab/git-data/
sudo gitlab-ctl upgrade # 组件版本更新(可选)
sudo ls /home/gitlab/git-data/
sudo gitlab-ctl start
sudo gitlab-ctl reconfigure
### ubuntu
安装依赖
sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates
sudo apt-get install -y postfix
信任Gitlab的GPG公钥
curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null
配置镜像路径加速(清华镜像)
sudo vim /etc/apt/sources.list.d/gitlab-ce.list
到此路径:https://mirror.tuna.tsinghua.edu.cn/help/gitlab-ce/ # 寻找对于你系统版本的镜像
Ubuntu18.4: deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu bionic main # 将其写入 gitlab-ce.list
安装gitlab-ce
sudo apt-get update
sudo apt-get install gitlab-ce
执行配置
sudo gitlab-ctl reconfigure
启动gitlab
sudo gitlab-ctl start
后续配置的更改和centos基本没差别
只是更改unicorn的时候连带更改
unicorn['listen'] = '127.0.0.1'
unicorn['port'] = 8081
5. docker及docker-compose安装(三台服务器都要安装)
1.卸载docker旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
2.更新apt包索引
sudo apt-get update
3.安装apt依赖包,用于通过https来获取仓库
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
4.添加docker官方gpg密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 通过搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥
sudo apt-key fingerprint 0EBFCD88
# 设定稳定版仓库
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
5.安装docker
安装最新版本的docker-ce
sudo apt-get install docker-ce docker-ce-cli containerd.io
安装特定版本的docker-ce
列出仓库可用版本
apt-cache madison docker-ce
安装指定版本docker-ce <VERSION_STRING> 是所需docker版本的版本号
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
6.测试
sudo docker run hello-world
7.安装docker-compose
7.1 docker-compose是python写的命令行程序可以直接pip安装,也在github上有地址 https://github.com/docker/compose,可以直接clone下来python setup.py install 安装
7.2 docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker- compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
7.3 授权
sudo chmod +x /usr/local/bin/docker-compose
查看版本信息
docker-compose --version
6. gitlab集成drone
1.登入gitlab,选择settings,application。新建一个new application,注意 Redirect URL(回调地址) 这与使用drone 的版本有关,
drone 0.x url 应如 http://ip or 域名/authorize
drone 1.x url 应如 http://ip or 域名/login
记录application ID 和 Secret
2.build主机(启动drone)
创建docker-compose.yml 内容如下
3.自搭建的gitlab需要在root登录的情况下到Admin Area -- Settings下 找到OutBound Request 勾选上Allow Requests To The Local Network From Hooks And Services,否则drone会因为权限问题,找不到gitlab的储存库。
4. 免密配置
4.1.查看是否存在id_rsa.pub或id_dsa.pub,如果存在就跳过第二步
cd ~/.ssh
ls
4.2.创建一个ssh-key,连续enter,就会在~/.ssh下创建id_rsa.pub等文件
ssh-keygen -t rsa -C "邮箱"
4.3.添加ssh-key到gitlab
拷贝id_rsa.pub中的内容到gitlab配置ssh的地方,保存。
4.4.测试
ssh -T git@gitlab_ip
出现Are you sure you want to continue connecting (yes/no)? 输入yes
如果前面配置了密码,接下来就会输入密码,没有配置就不用输入,会出现welcome to gitlab 表明配置成功。
7. drone-server及drone-agent的搭建
# ip:192.168.2.133 ci-build
### docker-compose.yml
version: "2.1"
services:
drone-server:
image: drone/drone:1
ports:
- 443:443
- 80:80
volumes:
- /var/lib/drone:/data
restart: always
environment:
- DRONE_AGENTS_ENABLED=true
- DRONE_LOGS_DEBUG=true
- DRONE_GIT_ALWAYS_AUTH=false
- DRONE_GITLAB_SERVER=http://192.168.2.159/ # gitlab服务器地址
- DRONE_GITLAB_CLIENT_ID= # application ID
- DRONE_GITLAB_CLIENT_SECRET= # Secret
- DRONE_RPC_SECRET=e349d16fa70e27bdd1043c1ec3d83478 # 为server和agent设置一个统一识别码 随便输,但必须前后一致
- DRONE_USER_CREATE=username:tklin,admin:true # 为drone的settings添加Trued username是gitlab用户名 admin默认为true
- DRONE_RUNNER_CAPACITY=3
- DRONE_SERVER_HOST=ip # drone服务器地址
- DRONE_SERVER_PROTO=http
- DRONE_TLS_AUTOCERT=false
networks:
- ci_net
drone-agent:
image: drone/drone-runner-docker:1
restart: always
depends_on:
- drone-server
volumes:
- /var/run/docker.sock:/var/run/docker.sock:rw
environment:
- DRONE_RPC_PROTO=http
- DRONE_RPC_HOST=192.168.2.159 # 服务器地址
- DRONE_RPC_SECRET=e349d16fa70e27bdd1043c1ec3d83478
- DRONE_RUNNER_CAPACITY=3
- DRONE_RUNNER_NAME=ip # runner名字 默认为服务器ip
- DRONE_LOGS_TRACE=true
networks:
- ci_net
networks:
ci_net:
8. docker搭建本地sonarqube服务器
### docker搭建本地sonarqube服务器
1. 配置数据库,注意sonarqube7.9以上不支持mysql数据库,并且sonarqube7.9以下对于mysql数据库版本要求在5.7到8.0之 间。
1.1. 本地拉取mysql5.7镜像
docker pull mysql:5.7
1.2. 启动mysql镜像
docker run -p 3307:3306 --name mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
1.3. 进入启动的mysql container
docker exec -it mysql(容器名) bash
1.4. 创建sonar数据库和sonar用户
mysql -u root -p # 登陆mysql
create database sonar # 创建sonar数据库
CREATE USER 'sonar'@'%' IDENTIFIED WITH mysql_native_password BY 'sonar';
GRANT ALL PRIVILEGES ON *.* TO 'sonar'@'%'; # 添加远程登录用户
2. 启动sonar并开放9000端口
docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 --link=mysql:mysql -e SONARQUBE_JDBC_USERNAME=sonar -e SONARQUBE_JDBC_PASSWORD=sonar -e SONARQUBE_JDBC_URL="jdbc:mysql://ip:3307/sonar? useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=
true&useConfigs=maxPerformance&useSSL=false" sonarqube:6.7.5
9. harbor搭建
# 192.168.2.122 ci-data
1. 私有仓库harbor的搭建,harbor的搭建基于docker和docker-compose
1.1.下载harbor离线安装包并解压
wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.5.0.tgz
tar xf harbor-online-installer-v1.5.0.tgz
1.2.根据下载的harbor版本不同,解压后harbor文件夹下的文件也不相同,harbor1.x版本解压后会有harbor.cfg这个文件,而harbor2.x版本解压后会有harbor.yml.tmpl这个文件,两个文件都是harbor的配置文件,不同的时,需要把2.x版本中新建一个harbor.yml文件,并将harbor.yml.tmp1中的内容复制到harbor.yml中,不然后续启动harbor会因找不到配置文件而出错。
1.3.修改配置文件
将harbor配置文件中hostname设置为访问地址,这个地址是作为外部访问仓库的唯一凭证,可以使用ip/域名,但不可设置为127.0.0.1 && localhost,如果是harbor2.x版本,还需要将配置文件中 https related config 部分注释掉,在未给harbor配置ssh证书的情况下。注意,2.x版本,harbor.yml harbor.yml.tmpl文件都需要修改。
#### harbor.yml
# https related config
# https:
# https port for harbor, default is 443
# port: 443
1.4.启动harbor,第一次启动harbor使用 sudo ./install.sh,这过程可能需要几分钟,需要拉取harbor所需的依赖镜像。
启动成功后harbor文件夹下会多出docker-compose.yml文件,后续stop,restart,start都可以使用docker-compose.yml文件来执行。
注意:此时要先docker-compose stop
sudo vim docker-compose.yml
在ports处添加:- 443:443
- 8443:8443
配置443端口和8443端口,不然本地是不能登录的。
1.5.使用ip登陆harbor,账号admin,密码默认Harbor12345
1.6.harbor客户端配置免https
harbor客户端其实就是任何一个安装了docker的主机,及代表有能力将镜像传送到仓库。
首先cd etc/docker, 查看该目录下是否有daemon.json文件,没有则创建(touch daemon.json)。
sudo vim daemon.json
添加:{ "insecure-registries":["harbor_server ip"] }
sudo systemctl daemon-reload
sudo systemctl restart docker
测试:
docker login docker_server_ip
登陆成功则表示配置成功
1.7.镜像上传到harbor
docker pull nginx # 从docker hub 拉取nginx镜像
docker tag nginx:版本(latest) harbor_server_ip项目名称(library)/nginx:1.0 # 给镜像打标签
docker push harbor_server_p/项目名称(library)/nginx:1.0
1.8.从harbor拉取镜像
docker rmi -f 镜像id # 删除本地镜像
docker pull harbor_server:ip/项目名称(library)/nginx:1.0(镜像名称及版本)
10. rancher搭建及添加harbor做为镜像库
### rancher配置
# 192.168.2.133 ci-build
环境要求: linux主机,内核高于3.10,主机内存不低于1GB,rancher不支持Docker for Windows及 Docker for Mac
rancher服务器是个docker image 因此rancher本身不需要安装,只需要执行docker命令下载并且成功运行docker服务器镜像
启动 rancher
# 单机模式(测试环境)
docker run -d --restart=always -p 8080:8080 rancher/server # 单机模式 仅仅适用于测试环境,生产使用rancher,需挂载外置数据库(mysql)或者将数据挂载到宿主机上。使用数据库,还需要对数据库做性能优化,保证rancher运行的最佳性能。
登陆rancher
http://ip:port
初次登陆需配置访问控制。
注册url(提供访问-ui界面): 初次登陆ui界面提示-注册url(这个url是rancher—server运行所在的url,并且此url能够被主机所访问)
添加主机:基础架构-主机-添加主机-Custom(默认)-在第四步输入主机ip-第五步会获得注册rancher脚本,复制到rancher-agent主机并运行,主机注册成功后,点击关闭,就可以主机界面看到注册好的主机了。
### 集成harbor
基础架构-镜像库-添加镜像库-选择CuSTOM-私有仓库address(harbor_server_ip)
用户名和密码是harbor服务器的账号密码
添加服务 -- 选择镜像(harbor_server_ip/项目名称/镜像名:tag) -- 端口映射
访问rancher_ip:映射的端口号,如果可以访问成功,如镜像是nginx,则可以看到welcome to nginx 表示集成成功。
11. 项目结构展示
初始项目结构展示,如下图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mcjgbule-1597976826012)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1597907115162.png)]
在与src同级目录中添加.drone.yml(自动化部署配置文件),Dockerfile(镜像定制文件),如图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FlEPjslU-1597976826014)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1597907321897.png)]
12 .drone.yml文件详细配置
部署项目前的准备工作
1. 将项目从gitlab上下拉到本地,并创建.drone.yml文件和Dockerfile文件
2. 在drone界面打开项目开关,并在settings中勾选Trusted和public,这样当项目有更改就会触发drone,进行部署
3. 在搭建好的harbor仓库新建项目,并设置为公开,注意项目名要与.drone.yml文件中定制镜像配置项中的repo相对应
4. 在rancher中添加一个新的应用,并添加一个新的服务,服务的镜像可以为空,但端口映射必须是你项目开放的访问端 口,作为镜像上传后容器的的启动服务,并且在.drone.yml中启动容器项中的service相对应。
5. 在rancher中API中创建密钥,并记录access_key和secret_key并在.drone.yml进行配置
.drone.yml
kind: pipeline
name: pipeline-example-maven
# 代码编译
steps:
- name: build
image: maven:3-jdk-10
commands:
- mvn clean package# 清洁打包 因为java项目需要编译后才能进行代码扫描
# 代码扫描
#steps:
- name: analysise
image: aosapps/drone-sonar-plugin:1.0 # 基于drone的代码扫描插件
settings:
sonar_host: http://192.168.2.133:9000
sonar_token: 8aea4f648d7cab5103c266063c4b059eeec90604
# 定制镜像
#steps:
- name: structure
image: plugins/docker
settings:
dockerfile: ./Dockerfile
registry: 192.168.2.122
repo: 192.168.2.122/java/springboot-jsj-test
username: admin
password: Harbor12345
tags:
- 'latest'
insecure: true
volumes:
- name: docker
path: /var/run/docker.sock
# 启动容器
#steps:
- name: rancher-deploy
image: pelotech/drone-rancher # drone-rancher插件,利用此插件来启动rancher
settings:
url: 'http://192.168.2.133:8080'
access_key: 1750EF1CB7EC4D9EF2F2
secret_key: wqiuKLoHvtRc4TyWS4H7a2gzUn2fRX8RALncF7xM
service: javaspringboot/boot
docker_image: 192.168.2.122/java/springboot-jsj-test:latest # 镜像地址及版本号
start_first: false
confirm: true
timeout: 301
when:
branch: master
volumes:
- name: docker
host:
path: /var/run/docker.sock
13. Dockerfile文件详细配置
FROM maven:3-jdk-10 AS MAVEN_BUILD ## 告知docker采用maven编译器,构建第一步采用基础镜像Docker将首先在本地查找镜像,本地不存在后,将从DockerHub拉取。 Maven会在最后阶段被剔除掉
MAINTAINER xichuan.lin ## 镜像定制者信息
COPY pom.xml /build/ ## 在镜像中创建一个build目录,并拷入pom.xml文件
COPY src /build/src/ ## 拷入src目录到镜像中build目录
WORKDIR /build/ ## 设置build为工作目录,后续任何命令都在此目录中运行
RUN mvn package ##执行mvn包来运行编译和打包应用,生成成可执行的JAR文件。在第一次构建镜像时,Maven将从公共Maven库拉取所有需要的依赖项,并将它们缓存在镜像的本地。后续的构建将使用这个缓存版的镜像层,这意味着依赖项将在本地引用,而不必再次从外部拉取。至此,已经完成了镜像定义,只需等其构建成一个可执行的JAR文件。这是多阶段构建的第一部分。下一阶段将获取JAR并运行它。
FROM openjdk:8-jre-alpine ##告知Docker多阶段构建的下一步采用openjdk:8-jre-alpine的基础镜像。再次使用Java 8 JRE的Alpine版本,这一步的选择其实比前面的Maven版本选择更为重要,因为存在于最终版的镜像只是openjdk:8-jre-alpine,因此如果要尽可能控制最终镜像大小的话,选择轻量级JRE镜像就非常重要。
COPY --from=MAVEN_BUILD /build/target/jsj-test.jar /app/ ##告知Docker从MAVEN_BUILD阶段的/build/target目录复制jsj-test.jar到/app目录。至于jar包的名字,这个在pom.xml中配置
EXPOSE 8090 ## 打开8090端口监听容器
ENTRYPOINT ["java","-jar","jsj-test.jar"] ##告知Docker在容器运行本镜像时,运行哪些命令。本部分用冒号进行多命令的隔离。本案例中,需要把执行JAR文件复制到/app目录运行。
14. pom.xml 文件配置改动
1. 添加阿里镜像源
<repositories>
<repository>
<id>aliyun</id>
<name>aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</repository>
</repositories>
2. 配置jar包name
<build>
<finalName>jsj-test</finalName>
</build>
3.取消maven编译过程中的测试
在build下添加:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
15. 配置mqtt服务器
docker-compose.yml
version: '3'
services:
emq:
image: emqx/emqx
container_name: emqx
ports:
- "18083:18083"
- "1883:1883"
- "8084:8084"
- "8883:8883"
- "8083:8083"
16. docker配置mysql和redis数据库作为项目依赖
## rancher-agent主机为192.168.2.159 此服务器作为项目容器运行服务器,因此项目依赖也就直接使用docker安装在宿主机上
1.安装mysql 开放3306端口
docker pull mysql:5.7 ## 拉取mysql镜像
## 通过镜像创建容器并运行
docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
## -p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。
## -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf
## -v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。
## -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。
## -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
2. 进入mysql容器更新登录密码并刷新权限
docker exec -it 容器id /bin/bash
GRANT ALL ON *.* TO 'root'@'%'; ## 授权
ALTER USER 'root'@'localhost' IDENTIFIED BY 'pwd' PASSWORD EXPIRE NEVER;#更新加密规则
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';#更新root密码
flush privileges; # 刷新权限
3. 安装redis 开放6379端口
docker pull redis:latest # 拉去最新版本redis镜像
docker run -itd --name redis-test -p 6379:6379 redis # 运行redis容器
docker exec -it redis-test /bin/bash # 测试redis服务
17. 项目配置部署服务器的数据库及mqtt
-
配置数据库
在项目文件springboot-jsj-test\src\main\resources\application-dev.yml中配置数据库,如下图:
配置mysql
配置redis
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DZCvlRjE-1597976826017)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1597912483548.png)]
-
配置mqtt服务器
在项目文件src\main\java\com\mht\springbootmybatisplus\common_entity\PubMsg.java中配置mqtt服务器,如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h1XVt0Wq-1597976826020)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1597912644994.png)]
至此,项目部署的配置全部完成,接下来将修改的配置代码及添加的文件上传到gitlab中,自动触发drone,并运行.drone.yml文件,实现自动化的编译-代码扫描-镜像定制-上传-容器部署
\resources\application-dev.yml中配置数据库,如下图:
配置mysql
配置redis
[外链图片转存中…(img-DZCvlRjE-1597976826017)]
-
配置mqtt服务器
在项目文件src\main\java\com\mht\springbootmybatisplus\common_entity\PubMsg.java中配置mqtt服务器,如下图所示:
[外链图片转存中…(img-h1XVt0Wq-1597976826020)]
至此,项目部署的配置全部完成,接下来将修改的配置代码及添加的文件上传到gitlab中,自动触发drone,并运行.drone.yml文件,实现自动化的编译-代码扫描-镜像定制-上传-容器部署