我的部署环境
1. 程序准备
程序我已放到gitee中,地址https://gitee.com/CRole/gitlab-cicd.git,
1.1 .gitlab-ci.yml文件
stages: # 分段 - build - clear - run # 定义 job build: stage: build script: - pwd - cd CICD/ - docker build -f ./CICD/Dockerfile -t testcicd . when: always #不管前面几步成功与否,永远会执行这一步。它有几个值:on_success (默认值)on_failurealwaysmanual(手动执行) clear: stage: clear script: - if [ $( docker ps -aq --filter name=testcicd) ]; then docker rm -f testcicd;fi #停止并删除原有镜像 - docker system prune -f when: on_success run: stage: run script: - docker run -p 8080:80 --name testcicd -d testcicd:latest when: on_success
2. GitLab Runner注册
runner我是放在了windows服务器上,这台机器是可以通过ssh直接连接到部署机器上的。
首选定位到gitlab-runner.exe所在目录, 然后执行以下命令
.gitlab-runner register .gitlab-runner run
需要按照步骤输入:
- 输入gitlab的服务URL,这个使用的是https://gitlab.com/
- 输入gitlab-ci的Toekn,获取方式参考上图
- 关于集成服务中对于这个runner的描述
- 给这个gitlab-runner输入一个标记,这个tag非常重要,在后续的使用过程中需要使用这个tag来指定gitlab-runner
- 是否运行在没有tag的build上面。在配置gitlab-ci的时候,会有很多job,每个job可以通过tags属性来选择runner。这里为true表示如果job没有配置tags,也执行
- 是否锁定runner到当前项目
- 选择执行器,gitlab-runner实现了很多执行器,可用在不同场景中运行构建,详情可见GitLab Runner Executors,这里选用ssh模式
说明: 选择runner 执行者类型的时候,这里我们选择的是 ssh,因为我们需要通过ssh连接到部署机器上, 这里你要根据你自身的情况去选择, 常用的有shell, docker,docker-ssh等。 我一开始就是选择的shell,一直想着在脚本里面通过ssh命令去连接服务器了,掉进了坑里!!!
还有一点需要注意的是这个选项,代表指示此运行程序是否可以拾取没有tag的作业,我们一开始可能不需要那么严格, 所以这里需要选中,默认是不选中的。
3. 结果
这个时候提交个代码看看。可以看到已经顺利执行了。
4. 总结
在流水线中我们可以定义很多job,基本上centos 的命令都可以在job中使用,这样我们就可以做很多东西了, 比如写个python脚本放里面, 通过Job执行,一提交代码给自己发个邮件, 一提交代码关个机啥的! !