什么是exectors
Gitlab-Runner是Gitlab CI/CD的执行者,gitlab-runner又有很多种类型(就是所谓的executor)常用的有:
- Shell
- Docker
- Kubernetes
怎么选择对应的exectors
当注册runner时,必须选择一个执行器,执行器决定每个作业执行的环境/
例如:
如果想要cicd中运行shell命令,可以在服务器上安装gitlab runner 。然后注册使用shell 执行器的runner
如果想要再自定义的docker容器中运行命令,可以在linux服务器上安装 gitlab runner,然后注册使用docker执行器的runner
docker 执行器的创建
Docker 执行器使用 Docker Engine 在单独和隔离的容器中运行每个作业。要连接到 Docker 引擎,执行器使用:
- 在 .gitlab-ci.yml 中定义的镜像和服务。
- 在 config.toml 中定义的配置使用的是TOML格式。
一般来说配置文件的位置在
/etc/gitlab-runner/config.toml (需要先切换用户为root)
非root用户的配置文件路径在
~/.gitlab-runner/config.toml查看日志
sudo journalctl -u gitlab-runner.service -r
sudo gitlab-runner register \
--non-interactive \
--url "" \
--registration-token "" \
--executor "docker+machine" \
--docker-image public.ecr.aws/docker/library/node:20-alpine \
--description "group type runner for project " \
--tag-list "docker,aws,ec2,aws,flutter,t3.large" \
--run-untagged="true" \
--locked="false" \
--access-level="not_protected" \
--template-config ./template.toml
sudo sed -i 's/concurrent = 1/concurrent = 10/' /etc/gitlab-runner/config.toml
# setup the config.json for runner manager
mkdir -p /root/.docker && touch /root/.docker/config.json
# config.json to root
cat << EOF > /root/.docker/config.json
{
"credsStore": "ecr-login"
}
EOF
AWS_REGION=cn-north-1 docker-credential-ecr-login list
sudo cp /etc/gitlab-runner/config.toml /home/gitlab-runner/config.toml
sudo chown -R gitlab-runner:gitlab-runner /home/gitlab-runner/config.toml
sudo chown -R gitlab-runner:gitlab-runner /home/gitlab-runner/.docker
sudo service gitlab-runner stop
sudo chkconfig gitlab-runner on
sudo systemctl status gitlab-runner
sudo systemctl start gitlab-runner
shell执行器创建
Install GitLab Runner on Windows | GitLab
gitlab-runner register --name <runner-flutter> --url Sign in · GitLab --registration-token <token>
description:gitlab-runner-flutter-machine shell exector (AWS account 655527736351
Tag: ec2,aws,executor-shell,flutter-shell
sudo gitlab-runner start
gitlab-runner list
gitlab-runner status
## 报错
error during connect: Post "http://docker:2375/v1.24/auth": dial tcp: lookup docker on 172.31.0.2:53: no such host
[runners.docker]
tls_verify = false
image = "node:20"
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/var/run/docker.sock:/var/run/docker.sock","/cache"]
shm_size = 0
network_mtu = 0
K8s 创建excutor
通过helm安装gitlab runner 到 k8s
使用背景:需要部署到集群,但是流水线环境不方便直接访问目标EKS集群,可以在EKS里安装runner,然后runner注册到gitlab站点,完成部署操作
helm repo add gitlab GitLab Helm Charts
helm search repo -l gitlab/gitlab-runner
# 根据 gitlab 站点版本,挑选合适的 helm chart 版本
helm pull --untar gitlab/gitlab-runner --version=0.63.0
cd gitlab-runner
vi values-nfm-dev.yaml
# get value and modify values
helm template -f ./gitlab-runner/values.yaml -f ./gitlab-runner/values-nfm.yaml gitlab-runner ./gitlab-runner
helm upgrade --install --namespace gitlab-runner --create-namespace -f ./gitlab-runner/values.yaml -f ./gitlab-runner/values-nfm.yaml gitlab-runner ./gitlab-runner