docker run -d \
-p 443:443 \
-p 80:80 \
-p 222:22 \
--name gitlab \
-v /data/gitlab/etc:/etc/gitlab \
-v /data/gitlab/log:/var/log/gitlab \
-v /data/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:14.4.5-ce.0
- 获取密码密码
docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
- gitlab-runner安装
docker run -d --name runner -v /config:/etc/gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-runner:alpine3.13
- GitLab-Runner是配合GitLab-CI进行使用的。一般地,GitLab里面的每一个工程都会定义一个属于这个工程的软件集成脚本,用来自动化地完成一些软件集成工作。当这个工程的仓库代码发生变动时,比如有人push了代码,GitLab就会将这个变动通知GitLab-CI。这时GitLab-CI会找出与这个工程相关联的Runner,并通知这些Runner把代码更新到本地并执行预定义好的执行脚本。
注册gitlab-runner获取token
手动人肉注册一个,比较恶心的runner
进入刚才的runner容器
1. docker exec -it gitlab-runne bash
# 输入命令注册
2.
gitlab-runner register \
--non-interactive \
--executor "docker" \
--docker-image "golang:1.17.6-alpine3.15" \
--url "http://192.168.8.10/" \
--registration-token "bTYW9wdU_M9nv1Kx_4Vi" \
--description "docker-runner" \
--tag-list "docker,deploy" \
--run-untagged="true" \
--locked="false" \
--access-level="not_protected"
再注册一个node容器的runner
bash-5.1# gitlab-runner register \
--non-interactive \
--executor "docker" \
--docker-image "node:fermium-alpine" \
--url "http://192.168.8.10/" \
--registration-token "bTYW9wdU_M9nv1Kx_4Vi" \
--description "node-runner" \
--tag-list "docker,deploy" \
--run-untagged="true" \
--locked="false" \
--access-level="not_protected"
Runtime platform arch=amd64 os=linux pid=57 revision=5316d4ac version=14.6.0
Running in system-mode.
Registering runner... succeeded runner=bTYW9wdU
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
创建一个demon项目测试一下
- 语法不再解释了
.gitlab-ci.yml
services:
- docker:19.03.7-dind
stages:
- build
- docker image
- deploy
before_script:
- ls
docker build:
image: docker:stable
stage: docker image
tags:
- docker
script:
- docker build -t $DOCKER_REPO .
- docker login -u $DOCKER_USER -p $DOCKER_PASSWORD docker.io
- docker push $DOCKER_REPO
only:
- jbjb
deploy:
image: golang:1.17.6-alpine3.15
stage: deploy
tags:
- docker
script:
- export GOPROXY=https://goproxy.cn
- go get github.com/gin-gonic/gin
- go get github.com/shirou/gopsutil/host
- go mod init test01
- go mod tidy
- go build test01 .
only:
- jbjb
artifacts:
#保留版本
expose_as: 'artifact 3'
name: "$CI_JOB_NAME"
#需要上传的制品我的test01
paths:
- test01