前置环境
- git
- docker
安装配置 gitlab-runner
可以直接安装在主机上,也可以使用 Docker 安装。安装
参考:https://docs.gitlab.com/runner/install/linux-manually.html注册
注意 —executor 选的是 shell。其中 —url 和 —registration-token 见下图红框:$ sudo gitlab-runner register -n \
--url https://gitlab.com/ \
--registration-token REGISTRATION_TOKEN \
--executor shell \
--description "My Runner"
配置账号信息
# 将 gitlab-runner 用户添加到 docker 组
$ sudo usermod -aG docker gitlab-runner
# 切换到 gitlab-runner 用户
$ su gitlab-runner
$ 登录镜像仓库
$ docker login
添加 .gitlab-ci.yml 文件
一个参考例子: ```bash stages: - test
- build
- deploy
test: stage: test tags:
- kfcoding script:
- echo ‘just for test’
- echo $CI_PROJECT_URL/tree/$CI_COMMIT_REF_NAME
- echo $CI_PROJECT_URL/commit/$CI_COMMIT_SHA
build: stage: build tags:
- kfcoding script:
- | if [[ $CI_COMMIT_REF_NAME = “dev” ]]; then docker build -t $IMAGE_DEV . docker push $IMAGE_DEV elif [[ $CI_COMMIT_REF_NAME = “master” ]]; then docker build -t $IMAGE_PROD . docker push $IMAGE_PROD else echo ‘no need to build for this branch’ fi
deploy: stage: deploy tags:
- kfcoding script:
- |
if [[ $CI_COMMIT_REF_NAME = “dev” ]]; then
curl $UPDATE_HOOK_DEV
elif [[ $CI_COMMIT_REF_NAME = “master” ]]; then
curl $UPDATE_HOOK_PROD
else
echo ‘no need to deploy for this branch’
fi
```
设置 CI/CD 环境变量
常见问题
1、Job 一直在排队等待
报错信息:此作业被卡住,因为没有任何活动的 runner 能运行此构建。
解决方法:这是因为在 .gitlab-ci.yml 没有指名 tags, 可添加配置。另外,也可以设定 Runner 为可以运行没有任何标签的作业,方法:
2、无法推送镜像
docker push 的时候报错:denied: requested access to the resource is denied
解决方法:这是在 push 镜像的时候是直接调用 CI 主机的 docker server 来执行的。报错表示没有登录到远程镜像仓库,需要参照 这里 配置。