我使用这种基于 docker 的方法。
0。创建一个 git repo 来测试这个答案
mkdir my-git-project
cd my-git-project
git init
git commit --allow-empty -m"Initialize repo to showcase gitlab-runner locally."
1.转到你的 git 目录
cd my-git-project
2。创建一个 .gitlab-ci.yml
例如.gitlab-ci.yml
image: alpine
test:
script:
- echo "Hello Gitlab-Runner"
3.创建一个安装了项目目录的 docker 容器
docker run -d \
--name gitlab-runner \
--restart always \
-v $PWD:$PWD \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
(-d) 在后台运行容器并打印容器ID
(--总是重启)or not?
(-v $PWD:$PWD) 将当前目录挂载到容器的当前目录 - 注意:在 Windows 上,您可以将目录绑定到固定位置,例如-v ${PWD}:/opt/myapp.
(-v /var/run/docker.sock:/var/run/docker.sock) 这使容器可以访问主机的 docker 套接字,因此它可以启动“同级容器”(例如 Alpine)。
(gitlab/gitlab-runner:latest) 来自 dockerhub 的最新可用镜像。
4.执行与
docker exec -it -w $PWD gitlab-runner gitlab-runner exec docker test
# ^ ^ ^ ^ ^ ^
# | | | | | |
# (a) (b) (c) (d) (e) (f)
(a) 容器内的工作目录。 注意:在 Windows 上,您可以使用固定位置,例如/opt/myapp.
(b) docker 容器的名称
(c) 在docker容器内执行命令"gitlab-runner"
(d)(e)(f) 使用“docker executer”运行 gitlab-runner 并运行名为“test”的作业
5.打印
...
Executing "step_script" stage of the job script
$ echo "Hello Gitlab-Runner"
Hello Gitlab-Runner
Job succeeded
...
注意:运行器只会在代码库的commited状态下运行。未提交的更改将被忽略。 例外:.gitlab-ci.yml 本身并未被承诺考虑在内。