jenkins和runner,作为主流自动化运维工具来说,两者的大思路其实是一样的,就是将我们提交到代码仓库的代码拉到jenkins或者runner运行的机器里,然后执行一系列的命令(这里通常是指打包和发布的命令,当然你想执行什么样的命令都是可以自己定义的)
二、Runner安装注册准备工作 在gitlab创建个人项目,注意查看如下信息,在注册runner的时候会用到(必须是项目的管理员才能看到)
gitlab-runner提供windows和linux版本的安装客户端,我这边使用docker的方式安装举例
docker pull gitlab/gitlab-runner为了演示流水线的效果,这边会将整个过程分成2个阶段编译和发布(中间可以根据自己的需要添加其他阶段,比如镜像打包上传到镜像仓库等)
注册对应的runner之前应该想清楚这个runner需要实现的目标是什么
编译runner安装注册
目标: 拉取对应项目的源码,编译项目,将编译后生成的文件保存到gitlab缓存中(这里可以想一下我们一般的在用CI自动化发布的时候是不是将编译阶段也放在Dockerfile里面,导致每次编译生成没有必要的镜像,其实这一步是不需要放在Dockerfile里面的,因为生成的镜像对我们是没有作用的)。
分析: 确定拉目标之后,就可以根据目标注册对应的runner了,想一下我们上面的步骤需要编译netcore项目,那么在这个runner里面必须有netcore sdk的环境。
实施:
```bash
# 创建配置文件目录
sudo mkdir -p runner/runnertest/builder
# 运行runner
sudo docker run -d --name runnertest-builder --restart always
> -v /home/yasewang/runner/runnertest/builder:/etc/gitlab-runner
> -v /var/run/docker.sock:/var/run/docker.sock
> gitlab/gitlab-runner:latest
# 注册runner
sudo docker exec -it runnertest-builder gitlab-runner register
# 配置runner
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
Please enter the gitlab-ci token for this runner:
_jooQZxyy6zCrs8HevDd
Please enter the gitlab-ci description for this runner:
[653f2eda5bfa]: runnertest-builder
Please enter the gitlab-ci tags for this runner (comma separated):
109-runnertest-builder
Registering runner... succeeded runner=9x8kWsU1
Please enter the executor: docker-ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, shell, ssh, virtualbox:
docker
Please enter the default Docker image (e.g. ruby:2.1):
microsoft/dotnet:latest #注意这里使用dotnet镜像,查看镜像https://hub.docker.com/
``> 映射/var/run/docker.sock这个文件是为了让容器可以通过/var/run/docker.sock与Docker守护进程通信,管理其他Docker容器>-v /srv/gitlab-runner/config:/etc/gitlab-runner是将runner的配置文件映射到宿主机/srv/gitlab-runner/config`方便调整和查看配置
按照上面的顺序操作下来,如果顺利的话就会在gitlab项目的ci里面看到这个runner已经上线
发布runner安装注册
目标: 将上一步生成的待发布文件打包成镜像,并运行容器。
分析: 确定拉目标之后,就可以根据目标注册对应的runner了,想一下我们上面的步骤需要生成docker镜像并运行容器,那么在这个runner里面必须能使用docker命令。
实施: 采用参数赋值的方式直接注册
```bash
# 创建配置文件目录
sudo mkdir -p runner/runnertest/deploy
# 运行runner
sudo docker run -d --name runnertest-deploy --restart always
> -v /home/yasewang/runner/runnertest/deploy:/etc/gitlab-runner
> -v /var/run/docker.sock:/var/run/docker.sock
> gitlab/gitlab-runner:latest
# 注册runner
sudo docker exec -it runnertest-deploy gitlab-runner register
# 配置runner
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
Please enter the gitlab-ci token for this runner:
_jooQZxyy6zCrs8HevDd
Please enter the gitlab-ci description for this runner:
[653f2eda5bfa]: runnertest-deploy
Please enter the gitlab-ci tags for this runner (comma separated):
109-runnertest-deploy
Registering runner... succeeded runner=9x8kWsU1
Please enter the executor: docker-ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, shell, ssh, virtualbox:
docker
Please enter the default Docker image (e.g. ruby:2.1):
docker:stable # 一定要指定,才能正常使用docker命令
```
新建webapi项目:dotnet new webapi -n runnertest --no-https