问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

基于Gitlab Runner 快速实现 Gitlab 自动部署

创作时间:
作者:
@小白创作中心

基于Gitlab Runner 快速实现 Gitlab 自动部署

引用
1
来源
1.
https://juejin.cn/post/7273026558398365736

部署是一件重复且无聊的事情,相信大家都听说过 CI/CD 持续集成和持续交付吧。本文基于Gitlab CI/CD及Docker快速实现项目的自动部署。该方案能与Git紧密结合且不需要额外的工具即可实现代码提交后自动构建及部署。

准备工作

首先请安装好以下三个软件,建议安顺序安装,软件的安装请参考下方给的参考链接:

  1. Docker:安装教程;
  2. Gitlab:安装教程;
  3. GitlabRunner:安装教程;

主要流程

我们的主要流程就是通过Gitlab管理代码,然后利用Gitlab自带的Gitlab CI/CD功能与GitlabRunner进行注册绑定。绑定成功后,每提交一次代码,都可以触发GitlabRunner,从而执行相应的脚本程序实现自动部署。

GitlabRunner 注册

  1. 打开Gitlab中需要自动部署的仓库,选择Setting->CI / CD ->Runners。

  2. 如下图,可以看到最关键的两个信息,这俩待会GitlabRunner注册的时候会用到,请记好:

  3. GitlabRunner注册

命令指南:

  • gitlab-runner register:注册
  • gitlab-runner list:查看已注册Runner
  • gitlab-runner unregister --all-runners:取消所有注册

首先我们先注册一个,然后起一个Runner的名字(随便),这里我取名:hello,spring boot!,然后输入runner的tags,我们一个项目可以通过tags区分不同阶段让不同的runner执行,这里输入:maven;最后输入你想执行的脚本,这里用shell。

注册成功后,我们来刷新一下刚刚Gitlab的页面,可以看到已经注册成功了!

制作脚本

当提交代码后,我们应该怎么用Shell脚本来控制构建和部署呢?Gitlab为我们提供好了一个模版,就是在仓库根目录下创建名为:

.gitlab-ci.yml

文件,我这里执行一个SpringBoot项目,所以内容如下:

stages:
- build
- deploy_test
#  - clean
# 打包镜像
build:
  stage: build
  only:
- master
  script:
- $MAVEN_HOME/bin/mvn clean package -U '-Dmaven.test.skip=true'
- cp target/GitlabRunnerTest-0.0.1-SNAPSHOT.jar docker/
- cd docker
- docker build -t test/gitlabrunner:v1.0.0 .
  tags:
- maven
# 部署测试服务器
deploy_test:
  stage: deploy_test
  only:
- master
  script:
- cd docker
- docker-compose down
- docker-compose up -d
  tags:
- maven
#清理虚悬镜像
#clean:
#  stage: clean
#  only:
#    - master
#  script:
#    - docker rmi $(docker images -q -f dangling=true)
#  tags:
#    - maven

然后在根目录中创建Docker文件夹,创建Dockerfile:

FROM openjdk:11
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp

创建docker-compose.yml

version: '3.1'
services:
  education-course:
    container_name: test-gitlabrunner
    restart: always
    image: test/gitlabrunner:v1.0.0
    network_mode: "host"
    command: java -jar -Xms1024m -Xmx1024m -Duser.timezone=GMT+08 GitlabRunnerTest-0.0.1-SNAPSHOT.jar --spring.profiles.active=test

整体项目目录结构如下所示:

验证

做好之后,我们就可以上传代码了,然后我们可以在CI / CD种的Pipelines里查看执行是否成功。

可以看到,构建成功了,我们来访问一下:

恭喜你,已经成功部署。你可以尝试在代码中修改GIt提交,来查看自动部署的效果。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号