gitlab中的项目,每次打包发布都比较麻烦,需要自己本地打包然后传输到服务器,再启动。考虑实现一种自动打包发布的方法。
1)考虑使用jenkins实现,但是需要jdk11(当前环境不能升级),还有一些插件(这个虽然可以离线安装,但是需要高版本的jenkins,相对应的又依赖高版本的jdk)
2)考虑使用docker实现,不熟。。。
3)所以最后考虑使用gitlab-runner了,相对简单
以下为实现步骤:
一、windows安装gitlab-runner
1、 先去gitlab官网下载windows版本的gitlab Install GitLab Runner on Windows | GitLab
2、安装gitlab-runner
//安装gitlab-runner gitlab-runner.exe install //使用指定账户安装gitlab-runner gitlab-runner.exe install --user your-username --password your-password //启动gitlab-runner gitlab-runner.exe start //停止gitlab-runner gitlab-runner.exe stop
二、把gitlab-runner注册到gitlab上
注册成功后,Runners下面会生成一个runners,可以看到这个runners是正常运行的,没有什么错误。
CI/CD里面生成了runners后,相应的在gitlab-runner的config.toml文件里面也会生成一个新的[[runners]],对新生成的[[runners]]的配置信息做一些修改。
pre_clone_script = "chcp 65001" pre_build_script = "chcp 65001" shell = "powershell"
.\gitlab-runner.exe restart 重启一下以免修改的配置不生效!
三、在Maven项目中新增.gitlab-ci.yml文件【事先要有一个已经发布到gitlab上的项目(gitlab使用网上的或者自己安装一个都行)】
由于我的项目代码是微服务形式,一个项目中有多个子项目,所以需要打的包也不止一个,因此要使用父级.gitlab-ci.yml调用子级.gitlab-ci.yml 【如果只有一个项目(一个pom文件)那使用一个.gitlab-ci.yml文件就可以了】 ,此外,.gitlab-ci.yml和src及pom.xml同级。
我的目录结构类似于下图:
父级.gitlab-ci.yml内容:
stages: # 指定运行的步骤,没有指定就顺序执行 - build - test - build_test1 - build_test2 build1: tags: - k8s stage: build script: - echo "Do your build here" test1: stage: test script: - echo "Do a test here" - echo "For example run a test suite" build-test1: stage: build trigger: include: # 运行 test1 目录下的 ci.yml 文件 - local: test1/ci.yml # 相对路径 strategy: depend # 状态同步 rules: # 触发规则,test1 目录下的任何文件改变时触发 - changes: - test1/* # test1 下的任何文件发生改变就执行 when: always build-test2: stage: build trigger: include: # 运行 test2 目录下的 ci.yml 文件 - local: test2/ci.yml # 相对路径 strategy: depend # 状态同步 rules: # 触发规则,test2 目录下的任何文件改变时触发 - changes: - test2/* # test2 下的任何文件发生改变就执行 when: always
子级.gitlab-ci.yml内容:【 only: - mydev 这个是设置对应的分支,你提交代码到其他分支不会触发的】
stages: # 指定运行的步骤,没有指定就顺序执行 - build - deploy - test - package build1: tags: - k8s
only:
- mydev
stage: build script: - echo "Do your build here" test1: tags: - k8s
only:
- mydev
stage: test script: - echo "Do a test here" - echo "For example run a test suite" package: tags: - k8s
only:
- mydev stage: package script: - echo "开始打包" - echo "For example run a lint test"
- cd D:\xxx\xxx\myprojectbasepath
- D:\xxx\apache-maven\bin\mvn compile
deploy1: tags: - k8s
only:
- mydev
stage: deploy script: - echo "Do your deploy here"
把以上文件推送到对应分支。
四、在对应的分支,和对应的子项目中,修改文件然后提交再push到对应分支,登录到gitlab查看是否成功
至此已完成一个子项目的打包,其他子项目亦复如是。
后续会尝试在linux环境实现(一般部署服务都是使用linux机器)
参考:
https://blog.csdn.net/weixin_42032770/article/details/128998760
https://blog.51cto.com/busy/6237260
标签:test1,ci,runner,gitlab,windows,build,yml From: https://www.cnblogs.com/51python/p/17974450