wishli 2020-06-28
https://github.com/zq2599/blog_demos
内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;
如下图所示,开发者将代码提交到GitLab后,可以触发CI脚本在GitLab Runner上执行,通过编写CI脚本我们可以完成很多使用的功能:编译、构建、生成docker镜像、推送到私有仓库等:
今天咱们会一起完成以下操作:
本次实战涉及到多个服务,下面给出它们的版本信息供您参考:
以下服务需要您在实战前提前准备好:
准备完毕后开始实战;
minio作为一个独立的服务部署,我将用docker部署在服务器:192.168.50.43
mkdir -p /var/services/homes/zq2599/minio/gitlab_runner && chmod -R 777 /var/services/homes/zq2599/minio/gitlab_runner && mkdir -p /var/services/homes/zq2599/minio/config && chmod -R 777 /var/services/homes/zq2599/minio/config
sudo docker run -p 9000:9000 --name minio -d --restart=always -e "MINIO_ACCESS_KEY=access" -e "MINIO_SECRET_KEY=secret123456" -v /var/services/homes/zq2599/minio/gitlab_runner:/gitlab_runner -v /var/services/homes/zq2599/minio/config:/root/.minio minio/minio server /gitlab_runner
从使用者的维度来看,GitLab Runner的类型分为shared和specific两种:
今天的实战,我们创建的是specific类型,即先有GitLab代码仓库,然后创建该仓库专用的runner,所以请您提前准备好GitLab仓库;
在部署GitLab Runner之前,要准备两个关键的配置信息,以便GitLab Runner启动后可以顺利连接上GitLab:
本次实战不会创建shared类型的runner,如果您要创建该类型runner,只需按照以下方法准备信息即可,创建出来的runner就是所有仓库都能使用的了:
kubectl create namespace gitlab-runner
kubectl create secret generic s3access --from-literal=accesskey="access" --from-literal=secretkey="secret123456" -n gitlab-runner
helm repo add gitlab https://charts.gitlab.io
helm fetch gitlab/gitlab-runner
tar -zxvf gitlab-runner-0.18.0.tgz
cat >>/home/gitlab-runner/.gitlab-runner/config.toml <<EOF [[runners.kubernetes.volumes.host_path]] name = "docker" mount_path = "/var/run/docker.sock" read_only = true host_path = "/var/run/docker.sock" EOF
helm install --name-template gitlab-runner -f values.yaml . --namespace gitlab-runner
# 设置执行镜像 image: busybox:latest # 整个pipeline有两个stage stages: - build - test # 定义全局缓存,缓存的key来自分支信息,缓存位置是vendor文件夹 cache: key: ${CI_COMMIT_REF_SLUG} paths: - vendor/ before_script: - echo "Before script section" after_script: - echo "After script section" build1: stage: build tags: - k8s script: - echo "将内容写入缓存" - echo "build" > vendor/hello.txt test1: stage: test script: - echo "从缓存读取内容" - cat vendor/hello.txt