答案就是 GitLab Runner 了! 想问为什么不是 GitLab CI 来运行那些构建任务? GitLab CI 最大的作用是管理各个项目的构建状态,因此,运行构建任务这种浪费资源的事情就交给 GitLab Runner 来做拉! 因为 GitLab Runner 可以安装到不同的机器上,所以在构建任务运行期间并不会影响到 GitLab 的性能 安装 在目标主机上安装 GitLab Runner,这里的目标主机指你要部署的服务器 | sudo bash sudo apt-get update sudo apt-get install gitlab-ci-multi-runner 注册 Runner 安装好 GitLab Runner 之后,我们只要启动 Runner 然后和 GitLab CI 绑定: [root@iZbp1fmnx8oyubksjdk7leZ gitbook]# gitlab-ci-multi-runner register
修改镜像拉取策略 修改配置文件:/etc/gitlab-runner/config.toml 在对应 runner 节点下添加 pull_policy = "if-not-present" 就可以了 [ [runners]] name = "Android Build Runner" url = "https://git.xyser.com/" token = "3dc54666cacafd
环境 操作系统: Linux Centos7 gitlab-runner版本: 9.5.1 gitlab版本: 10.4.1 2. 安装 2.1 添加yum源 curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/ script.rpm.sh | sudo bash 2.2 安装gitlab-runner yum install gitlab-ci-multi-runner 2.3 向GitLab-CI注册runner gitlab-ci-multi-runner register 注册中需要 gitlab的URL 以及 token,在gitlab UI界面就能找到,进入项目,依次点击就能找到。 参考 GitLab Runner的安装与使用 持续集成之.gitlab-ci.yml篇
向GitLab-CI注册一个Runner需要两样东西:GitLab-CI的url和注册token。 docker.io/gitlab/gitlab-runner 创建配置文件目录 # mkdir /data/gitlab/order/config 启动一个runner容器 # docker run - /gitlab/order/config:/etc/gitlab-runner gitlab/gitlab-runner:latest 查看docker进程 # docker ps ? # docker exec -it gitlab-runner-monitor gitlab-runner register Running in system-mode. (公司内部网络) 注册runner # docker exec -it gitlab-runner-monitor gitlab-runner register 注意,tags为dev Running
All shell builds will be then executed as either the gitlab-runner or gitlab_ci_multi_runner user. In that case you need to add the gitlab-runner user to the respective group: usermod -aG docker gitlab-runner usermod -aG vboxusers gitlab-runner Selecting your shell GitLab Runner supports certain shells. GitLab 13.0 and earlier On UNIX systems gitlab-runner sends a SIGKILL to the process to terminate it GitLab 13.1 and later On UNIX system gitlab-runner sends SIGTERM to the process and its child processes
https://docs.gitlab.com/runner/#runner-execution-flow SVG 文件
源码编译 GitLab Runner 从源码安装 GitLab 你或许听说过,但是从源码安装 GitLab Runner ,或许这将是你听到的第一篇相关博客。 /gitlab-org/gitlab-runner/common.NAME=gitlab-runner -X gitlab.com/gitlab-org/gitlab-runner/common.VERSION /gitlab-runner/common.NAME=gitlab-runner -X gitlab.com/gitlab-org/gitlab-runner/common.VERSION=12.2.0 dockerfiles/build/binaries/gitlab-runner-helper.arm gitlab.com/gitlab-org/gitlab-runner/apps/gitlab-runner-helperNumber /gitlab-org/gitlab-runner/common.NAME=gitlab-runner -X gitlab.com/gitlab-org/gitlab-runner/common.VERSION
系统是Ubuntu or Alpine Linux 乌班图或者Alpine Linux系统 使用本地卷安装GitLab Runner docker run -d --name gitlab-runner --restart always \ -v /srv/gitlab-runner/config:/etc/gitlab-runner \ -v /var/run/docker.sock :/var/run/docker.sock \ gitlab/gitlab-runner:latest 使用Docker 卷安装GitLab Runner docker volume create :/var/run/docker.sock \ -v gitlab-runner-config:/etc/gitlab-runner \ gitlab/gitlab-runner:latest :Z \ gitlab/gitlab-runner:latest 相关链接 Run GitLab Runner in a container
此时软链接 b 已存在,我的预期是执行失败,或者覆盖软链接 b,但实际上在 a 下创建了一个软链接 a,这是第一个问题
Nanoserver support Introduced in GitLab Runner 13.6. Available since GitLab Runner 12.9. Network per-build Introduced in GitLab Runner 12.9. See an issue: https://gitlab.com/gitlab-org/gitlab-runner/-/issues/1520. This was changed in GitLab Runner v1.8.
gitlab runner 与 Jenkins 的使用 部署runner sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3 .amazonaws.com/latest/binaries/gitlab-runner-linux-amd64 sudo chmod +x /usr/local/bin/gitlab-runner sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner sudo gitlab-runner start 参考链接 使用 runner 注册 在项目中注册 在群组中注册 shell 类型生成证书 variables 是环境变量参数 tags 是指定runner script 是执行的脚本 only 是执行的条件
基础架构之Gitlab Runner也是常用的基础设施,我们接着GitLab操作,具体使用GitlabRunner,如果不熟悉可以见官方详细介绍 https://docs.gitlab.com/runner (一) 环境要求 Centos 7.5.1804 Docker 18.06.1-ce gitlab/gitlab-ce gitlab/gitlab-runner (二) 安装设置 GitLab设置 a) 执行器安装 sudo docker run -d --name gitlab-runner-docker --restart always -v /srv/gitlab-runner-docker /lib/x86_64-linux-gnu/libltdl.so.7 -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-runner 注册 运行如下命令,注册执行器 sudo docker exec -it gitlab-runner-docker gitlab-runner register -n --url http://
背景 Gitlab-Runner是一款用于执行软件集成脚本的工具,它配合Gitlab-CI使用,是Gitlab代码管理工具的一部分。 Gitlab-Runner通常单独安装或以Docker容器的形式部署,而Gitlab-CI和Gitlab集成在一起用于调用Gitlab-Runner。 /config:/etc/gitlab-runner \ -v /var/run/docker.sock:/var/run/docker.sock \ gitlab/gitlab-runner:latest 使用 Gitlab-Runner配合Gitlab, Gitlab-CI使用 注册Gitlab-Runner到工程 docker exec -it gitlab-runner gitlab-ci-multi-runner /gitlab-runner.exe register 安装service并运行: gitlab-runner install gitlab-runner start
这一篇,我们实践一下,如何通过Gitlab-runner进行持续集成 使用gitlab-runner进行持续集成与部署的关键在于 .gitlab-ci.yml文件的使用,该文件类似于Jenkins中的 Jenkinsfile,按顺序的执行我们预定义的每一个步骤(stage),然后通过对应的stage执行相关的shell或者其他指令,动手实践一下 首先创建一个git仓库,在仓库中添加一个 .gitlab-ci.yml 注意,上面的关键在于tags,如果没有指定tags的话,这里就会在出现被卡主stuck的错误,这是因为匹配不到合适的gitlab-runner,正如上图,我们使用的是default这个Tag,所以在.gitlab-ci.yml 文件的stage中一定要指明,出现的错误如下图: 这里还要注意一点,我们需要编辑一下gitlab-runner,把创建的git仓库加入到gitlab-runner中 此时我们在左侧的CI/CD下面的
GitLab注册Runner sudo gitlab-runner register \ --non-interactive \ --url "https://gitlab.com/" \ true" \ --locked="false" \ --access-level="not_protected" 对于使用本地卷安装 docker run --rm -it -v /srv/gitlab-runner /config:/etc/gitlab-runner gitlab/gitlab-runner register 使用Docker 卷安装 docker run --rm -it -v gitlab-runner-config :/etc/gitlab-runner gitlab/gitlab-runner:latest register 执行后会询问,输入一下变量 输入 gitlab的地址 输入gilab-ci的token Runner的executor 要写 docker 如果你选择了docker 作为执行工具,你会被要求填写一个默认镜像 没有在.gitlab-ci.yml中定义的 除了gitlab地址和token
docker-compose.yaml version: "3.9" services: gitrunner: image: 'gitlab/gitlab-runner' container_name : "gitlab-runner" restart: always volumes: - '. up -d 注册runner Gitlab Runner 有 3 种级别 全局共享 因为 executor 使用的是容器,不是 shell,所以非特殊要求,使用这个就行。 job 也是并行处理 获取 Gitlab CI Register Token 访问Gitlab全局 Runner 配置地址:https://xxx.com/admin/runners 注册 docker exec -it gitlab-runner gitlab-runner register --non-interactive --executor "docker" --docker-image alpine
GitLab Runner 是一个用于运行 CI/CD 作业的轻量级容器化工具。我们将使用 Docker 容器来运行 GitLab 和 GitLab Runner。 注册 GitLab Runner接下来,我们需要注册 GitLab Runner。我们可以使用 Docker 容器来运行 GitLab Runner。 容器来运行 GitLab Runner:bashCopy codedocker run -d --name gitlab-runner --restart always \ -v /srv/gitlab-runner \ gitlab/gitlab-runner:latest在这个命令中,我们使用 gitlab/gitlab-runner 镜像来创建 GitLab Runner 容器。 - gitlab-runner runner2: image: gitlab/gitlab-runner:latest restart: always volumes: -
原因: 注册gitlab runner 的时候,有一步提示: Can run untagged jobs: [false/true] 默认值为false。 这句话的意思是:是否在没有标记tag的job上运行,如果选择默认值false,那没有标记tag的代码提交是不会触发gitlab runner的,如果做测试,最好填true。 2. 如何提升权限 gitlab runner默认运行时user mode,想提升权限,只需要运行gitlab runner 的时候使用sudo即可。 sudo gitlab-ci-multi-runner run 这样,持续集成调用命令的时候,就可以执行super-user权限了。 via: https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/blob/master/docs/commands/README.md
1、安装gitlab-runner yum包安装: yum install -y gitlab-runner rpm包安装: curl -LJO "https://gitlab-runner-downloads.s3 .amazonaws.com/latest/rpm/gitlab-runner_${arch}.rpm" rpm -i gitlab-runner_<arch>.rpm 查看是否安装完成: gitlab-runner --version 2、注册Runner服务到gitlab上 注册命令: gitlab-runner register 注册是要输入的URL和token如下图的位置可以查到,然后还有名称 、Tag、 注册是要是输入的URL和token信息 这次完成以后修改一下配置保存 3、到这里就注册成功了,开始编写.gitlab-ci.yml文件。 -t harbor.xxx.com/product/test:v0.0.1 tags: - "215-test" #指定服务运行的runner,tag注册是指定的名字 only:
已备好,接下来在kubernetes环境部署GitLab Runner; GitLab Runner的类型 从使用者的维度来看,GitLab Runner的类型分为shared和specific两种: 如果您想创建的GitLab Runner给所有GitLab仓库使用,就要创建shared类型; 如果您的GitLab Runner只用于给某个固定的Gitlab仓库,就要创建specific类型; 今天的实战 Runner之前,要准备两个关键的配置信息,以便GitLab Runner启动后可以顺利连接上GitLab: 浏览器访问GitLab,打开用来做CI的代码仓库,点击Settings -> CI/CD - Runner的chart: helm fetch gitlab/gitlab-runner 当前目录会多出一个文件gitlab-runner-0.18.0.tgz,解压: tar -zxvf gitlab-runner Runner: helm install \ --name-template gitlab-runner \ -f values.yaml . \ --namespace gitlab-runner