1、部署GitLab
1)容器启动
docker run -d \
--publish 8443:443 --publish 8880:80 --publish 8822:22 \
--name gitlab \
--restart always \
--volume /data/gitlab/config:/etc/gitlab \
--volume /data/gitlab/logs:/var/log/gitlab \
--volume /data/gitlab/data:/var/opt/gitlab \
--privileged=true \
gitlab/gitlab-ce:latest
启动后等容器的状态为:healthy 时,访问IP:8880即可。
2)向远程仓库推送代码
先将本地ssh公钥放入GitLab
本地全局设置:
git config --global user.name "Administrator"
git config --global user.email "admin@example.com"
推送文件:
cd directory
git init
git remote add origin ssh://git@d8d228290484/gitlab-instance-8c4eaf7e/Monitoring.git
git add .
git commit -m "Initial commit"
git push -u origin master
问题一
git remote 命令中 ssh://git@d8d228290484 这个是容器ID,正常应该是gitlab的地址
解决方法:
修改 gitlab.rbvim /data/gitlab/config/gitlab.rb
将这个 external_url 改成主机的 IP,不需要加端口.
随后重启gitlab容器docker restart gitlab
问题二:
明明有在gitlab中放入公钥,但clone等操作远程仓库还是需要密码
解决方法:
GitLab 镜像启动后是占用容器的 22 端口,而我是使用宿主机的 8822 端口跟 GitLab 容器 22 端口进行的映射,主要是防止和我宿主机 22 端口冲突。想到问题的关键,解决就简单了,编辑 GitLab 配置文件,指定 SSH 端口为 8822 即可.
修改 gitlab.rbvim /data/gitlab/config/gitlab.rb
将注释打开,修改为启动容器时映射的ssh端口
随后重启gitlab容器docker restart gitlab
2、部署GitLab-Runner
1)容器启动
docker run -d --name gitlab-runner --restart always \
-v /data/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
2)注册Runner
root@debian:~# docker exec -it gitlab-runner /bin/bash #进入容器
root@6331c57dab0e:/# gitlab-runner register 开始注册runner
注册参考以下截图:
url地址和token可在以下页面查询,注册成功后即可看到runner
3、流水线执行
1)配置.gitlab-ci.yml
stages:
- build
- test
- deploy
build_job:
stage: build
only:
- master
script:
- echo "构建代码or基础环境中..."
- echo "构建代码or基础环境已完成!"
tags:
- test
test_job:
stage: test
only:
- master
script:
- echo "自动化测试中..."
- echo "自动化测试已完成!"
tags:
- test
deploy_job:
stage: deploy
only:
- master
script:
- echo "自动部署中..."
- echo "自动部署已完成!"
tags:
- test
2)问题解决
如果是docker部署的gitlab,宿主机端口如果映射的不是80,则需更改环境external_url=域名,否则会报以下错误
fatal: unable to access 'http://gitlab-ci-token:xxxxxx@ip/xxx/citest.git/': Failed to connect to xx.xx.xx.xxx port 80: Connection refused
vim /data/gitlab-runner/config.toml
[[runners]]
name = "test11"
url = "http://xxxx"
token = "xxxx"
executor = "docker"
#加上这个clone_url 参数,指定 url
clone_url = "xxx"
然后重启runner容器,再重新执行流水线即可