Gitlab系列(5)—— Gitalb-runner CI/CD项目实战

19 篇文章 2 订阅
7 篇文章 0 订阅


本文基于 基于Gitlab-runner 的CI/CD集成一文,采用的是BIND的方式,增加实际项目相关的内容,本文以 Spring Boot项目为例,其他项目可借鉴思路。

集成Maven

这里使用的maven镜像是:maven:3.8.2-openjdk-8-slim
众所周知maven默认会去,中央仓库下载依赖,国内由于网络原因,可能下载会比较慢,所以需要修改其配置。

个人采用了两种方式进行处理:

  • 基于 maven:3.8.2-openjdk-8-slim 镜像构建自己镜像,在内部去修改镜像仓库,通过 docker commit 或者 Dockerfile 的方式处理
  • 自定义一个配置文件,在注册runner时,通过数据卷挂载的方式,将自定义配置文件挂载到容器内部

这里采用第二种方式,这种方式需修改注册runner的配置

gitlab-runner register -n \
--url http://blog_gitlab.kalpana.top:9080/ \
--registration-token xxxxxx\
--executor docker \
--description "bind maven" \
--tag-list "bind maven" \
--docker-image "alpine:latest" \
--docker-volumes /var/run/docker.sock:/var/run/docker.sock \
--docker-volumes /opt/runner/maven/settings.xml:$MAVEN_HOME/conf/settings.xml

其中 /opt/runner/maven/settings.xml就是自定义的配置文件,只是改了个 阿里云的仓库地址,私服地址自己改

<mirror> 
		<id>alimaven</id> 
		<name>aliyun maven</name> 
		<url>http://maven.aliyun.com/nexus/content/groups/public/</url> 
		<mirrorOf>central</mirrorOf> 
	</mirror>

执行成功后,对应runner的挂载配置应该是

volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/opt/runner/maven/settings.xml:/usr/share/maven/conf/settings.xml", "/cache"]

项目根目录添加 .gitlab-ci.yml 配置,如下

stages:
  - package

package:
  stage: package
  tags:
    - bind maven
  only:
    - dev
  image: maven:3.8.2-openjdk-8-slim
  before_script:
    - echo "开始执行任务"
    - echo $MAVEN_HOME
    - ls -al $MAVEN_HOME/conf
  script:
    - mvn clean -Dmaven.test.skip=true

执行一次流水线
在这里插入图片描述
可以看到maven仓库地址已经切换到阿里云仓库了。

缓存maven仓库及构建工件传递
如果不对maven仓库进行缓存,那每次构建都会去下载全量的依赖组件,会比较耗时,先设置maven仓库路径

variables:
  MAVEN_OPTS: "-Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository -Dmaven.test.skip=true -Dmaven.javadoc.skip=true"

然后job内设置缓存目录及工件传递目录

cache:
    key: mvn_repo
    paths:
      - .m2/repository
artifacts:
    paths:
      - target/*.jar 

这两者功能类似,但有区别,具体可以参考上一篇文章,这样设置后,就不必每次构建都去下载依赖组件了,极大提升构建速度。

构建镜像

通过上一步,已经将项目的构建包缓存到了CI流程中,接下来就可以借助docker将jar包打包成镜像,并发布到仓库。
增加一个 stage

- build

对应的job定义如下

build:
  stage: build
  image: docker:20.10.8
  before_script:
    - echo "开始构建docker镜像"
  script:
    - docker build -t docker-springboot:$CI_PIPELINE_ID .
  tags:
    - bind maven
  only:
    - dev

提交,开始构建

在这里插入图片描述
可以看到docker镜像已经构建成功,也可以在runner机器上查看

[root@origin ~]# docker images
REPOSITORY             TAG                    IMAGE ID       CREATED         SIZE
docker-springboot      3                 97bf403c98b6   3 minutes ago   131MB

发布Docker镜像到远程仓库

推送镜像到远程仓库
要让应用服务器部署最新的镜像,就需要将镜像推送到镜像仓库,目前默认采用docker hub仓库,后续会有docker私服的介绍,push之前需要登录对应的仓库,没有账号的可以去注册一个,官方注册地址
接下来开始推送镜像到远程仓库,账号密码可以通过gilab参数的形式传递
在这里插入图片描述

docker login -u $REGISTRY_USERNAME -p $REGISTRY_PASSWORD

提交触发流水线,可以看到已经登录成功

在这里插入图片描述
在推送镜像之前有个点需要说明一下;
docker 仓库的完整路径格式为 ip:port/域名 + 用户 + 仓库 + 标签(默认为latest)构成;
而我们平常使用 docker pull xxx 完整的命令应该是
docker pull docker.io/library/xxx:latest,而 library这个用户是官方仓库,个人账户应该是自己的用户名,所以我们在推送之前需要将本地镜像名称改成带自己前缀的名称,当然也可以在 镜像构建阶段就指定完整的名称,所以修改后的构建命令应该是

docker build -t tanxs/docker-springboot:$CI_PIPELINE_ID .

提交触发流水线
构建成功

[root@origin ~]# docker images
REPOSITORY                      TAG                    IMAGE ID       CREATED              SIZE
tanxs/docker-springboot         3                 4ade8d8f4322   About a minute ago   131MB

添加推送远程仓库脚本

docker push tanxs/docker-springboot:$CI_PIPELINE_ID

在这里插入图片描述

查看远程仓库

远程仓库镜像

远程部署

此处使用SSH,远程部署,假设已配置好SSH免密登录

在流水线配置文件中增加部署阶段

stages:
  - deploy

增加部署job

deploy:
  stage: deploy
  image: docker:20.10.8
#  本job不下载工件
  dependencies: []
  variables:
    deploy_path: /opt/docker-compose/app
  before_script:
    - echo "开始部署远程服务器"
    - pwd
    - ls -al
  script:
    - echo "开始部署"
    - cat /etc/os-release
    - cd ~
    - ls -al
    - ssh root@192.168.0.113 -t "cd $deploy_path && export VERSION=$CI_PIPELINE_ID && docker-compose down && docker-compose up -d"
  tags:
    - bind maven
  only:
    - dev

提交流水线

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用GitLabCI/CD功能,你可以按照以下步骤进行操作: 1. 首先,确保你已经安装了GitLab Runner。你可以使用以下命令来安装GitLab Runner: ``` curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash sudo yum install gitlab-runner ``` 如果你在Ubuntu系统上使用,请使用`apt-get`命令来安装。 2. 安装完成后,你可以使用`gitlab-runner -v`命令来验证安装是否成功,并查看GitLab Runner的版本号。 3. 接下来,你需要将GitLab Runner注册到GitLab CI/CD Coordinator上。在终端中输入以下命令: ``` gitlab-runner register ``` 在提示中,你需要提供GitLab CI/CD Coordinator的URL(例如https://gitlab.com/),以及访问权限验证的Token。 4. 注册成功后,你可以配置`.gitlab-ci.yml`文件来定义CI/CD的流程。这个文件包含了一系列的任务(jobs)和阶段(stages),你可以根据自己的项目需求进行配置。具体的语法和配置参考可以在GitLab官方文档中找到。 5. 当你的代码提交到GitLab仓库时,GitLab CI/CD会自动触发流水线(pipeline)的执行。流水线中的任务会按照`.gitlab-ci.yml`文件中定义的顺序和规则进行执行。 总结:要使用GitLabCI/CD功能,你需要先安装GitLab Runner,并将其注册到GitLab CI/CD Coordinator上。然后,在项目中配置`.gitlab-ci.yml`文件来定义CI/CD流程。最后,当代码提交到GitLab仓库时,GitLab CI/CD会自动执行流水线中的任务。详细的使用方法和配置参考可以查阅GitLab官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值