Runner安装应用到CI
大约 3 分钟
1.安装docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
sudo systemctl start docker
2.登录gitlab获取token
http://localhost:8899/admin/runners
3.安装runner [本地卷]
$ mkdir -p /home/gitlab-runner/config
$ docker run -d --name gitlab-runner --restart always \
-v /home/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /home/runner:/home/runner \
gitlab/gitlab-runner:latest
# 注意这里需要填写gitlab地址
# 在docker之中访问宿主机的localhost
# 那么需要执行ifconfig查看网卡docker0的inet地址
$ docker run --rm -it -v /home/runner:/home/runner -v /home/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register
# runner配置注册到gitlab过程
docker run --rm -it -v /home/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register
Enter the GitLab instance URL (for example, https://gitlab.com/):
<这里输入gitlab私仓的url>
Enter the registration token:
<这里输入runner的token>
Enter a description for the runner:
[007fa02670d1]: <给这个runner起个名字,会显示在gitlab中>
Enter tags for the runner (comma-separated):
<这里输入tag,跑任务的时候可以通过 tags 来指定>
Registering runner... succeeded runner=rANP_dLs
Enter an executor: docker, docker-ssh, parallels, shell, virtualbox, docker+machine, custom, ssh, docker-ssh+machine, kubernetes:
<运行方式,这里写 docker>
Enter the default Docker image (for example, ruby:2.6):
<默认运行容器,如果在job中不指定容器,默认采用的运行容器,这里我添了 tico/docker>
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
5.注册成功后在gitlab可以看到runner
http://43.156.75.90:8899/admin/runners
进入docker容器验证可以ping到宿主机的localhost
ifconf
docker exec -it gitlab-runner /bin/bash
apt-get update && apt install iputils-ping
ping $ip
telnet $ip $port
ifconfig的mtu\inet\inet6是什么
在docker容器内如何访问宿主机的localhost
docker.runner register docker runner register x509 insecure registry 问题如何解决
# 运行一个docker容器
docker run -d --name gitlab-runner --restart always \
-v /home/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /home/runner:/home/runner \
gitlab/gitlab-runner:latest
# runner注册到gitlab - 配置的tag要和gitlab.ci.yml的 tag 一致 否则会找不到runner
docker run --rm -it \
-v /home/runner:/home/runner \
-v /home/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner register \
--tls-ca-file /home/runner/gitlab.bingosoft.net.crt
# 更改gitlab的配置
[root@master01 config]# cat config.toml
concurrent = 1
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "docker-test"
url = "https://gitlab.bingosoft.net/"
token = "oz_MyqE2N1XpLycfHwC6"
tls-ca-file = "/home/runner/gitlab.bingosoft.net.crt"
executor = "docker"
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
tls_verify = false
image = "tico/docker"
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"]
shm_size = 0
# 更改配置后重启服务
docker restar {$container_id}
gitlab ci 编写
image: docker:git
services:
- docker:dind
stages:
- build
job_build_prod:
stage: build
tags:
- docker-test
script:
- docker version
Go的CI的镜像
FROM golang:latest
RUN go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.49.0
RUN golangci-lint --version
Gitlab的CI编写
编写.gitlab-ci.yml文件
通过tags和runner关联
stages:
- build
- deploy
image: alpine
build:
stage: build
tags :
- test
script:
- echo "build success"
deploy:
stage: deploy
tags :
- test
script:
- echo "deploy success"
- k8s build && deploy
# 开发环境
build-k8s-develop:
stage: build-k8s
tags:
- ack-runner
script:
- make build-k8s-develop
cache:
key: go-cache-${CI_PROJECT_PATH_SLUG}
paths:
- go/
only:
refs:
- develop
- /^feature\/.*/
build-k8s-develop: ci/binary Dockerfile
@docker login -u $(TRI_USER) -p $(TRI_PWD) $(TRI_HOST)
@docker build -q -t $(DOCKER_IMAGE_DEVELOP):$(DEV_TAG) .
@docker push $(DOCKER_IMAGE_DEVELOP):$(DEV_TAG)
@rm $(NAME) Dockerfile
deploy-k8s/develop:
@cd /builds &&\
git clone https://$(CI_USERNAME):$(CI_PASSWORD)@git.net/devops/kustomize.git &&\
cd kustomize/develop/overlays/$(NAME) &&\
/usr/local/bin/kustomize edit set image default_image=$(DOCKER_IMAGE_DEVELOP):$(DEV_TAG) &&\
git add . &&\
git commit -am "update $(PROJECT_NAME) develop kustomize config " &&\
git pull &&\
git push origin main || sleep 1 && git pull && git push origin main || echo "nothing to commit" &&\
echo "xxxx->$(ARGO_HOST)" &&\
echo y | /usr/local/bin/argocd --grpc-web --insecure login $(ARGO_HOST) --username $(ARGO_USER) --password $(ARGO_PWD) &&\
/usr/local/bin/argocd app sync $(NEW_NAME) || echo "argo sync failed"