简单的 Gitlab CICD Demo"/>
简单的 Gitlab CICD Demo
概念
- 在Gitlab项目的代码仓库里放入gitlab-ci.yml,该文件里定义了CI/CD的全部流程及每个步骤需要做些什么事情。
- 当开发者提交代码到Gitlab的代码仓库时,Gitlab就会自动根据gitlab-ci.yml文件里定义的流程进行CICD
- Gitlab解析步骤,给Gitlab Runner分配CICD任务,实际完成具体任务操作的是Gitlab Runner
Demo开始
1. 在Gitlab上创建一个代码项目
2. 找到Gitlab的 Runner Token,下面步骤需要用
3. 安装Runner
以docke的方式r安装(推荐,简单,这里选用docker方式)
在宿主机下载kubectl 和 配置k8s连接文件略,大家懂的启动容器,把配置文件目录映射到宿主机做持久化,同时把kubectl命令、k8s连接文件全部影射进去docker run -d --name gitlab-runner --restart always -v /srv/gitlab-runner/config:/etc/gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock -v /usr/local/bin/kubectl:/usr/local/bin/kubectl -v /root/.kube/config:/home/gitlab-runner/.kube/config gitlab/gitlab-runner:latest备注:由于Gitlab-runner在执行任务时是使用gitlab-runner用户来操作的,所以k8s连接文件要影射到gitlab-runner的用户目录下
(可跳过,如果下面注册时提示runner配置文件不存在的话再回来看这步)
停止并移除容器docker stop gitlab-runnerdocker rm gitlab-runner宿主机创建配置文件目录mkdir /srv/gitlab-runner/config -p启动容器,影射宿主机目录到容器的非配置文件目录docker run -d --name gitlab-runner --restart always -v /srv/gitlab-runner/config:/etc/gitlab-runner1 gitlab/gitlab-runner:latest进入容器, 拷贝gitlab-runner配置文件目录到宿主机docker exec -it gitlab-runner /bin/bashcp /etc/gitlab-runner/config.toml /etc/gitlab/runner1/停止并移除容器docker stop gitlab-runnerdocker rm gitlab-runner在宿主机下载kubectl 和 配置k8s连接文件略,大家懂的正式启动容器,把宿主机的Gitlab-runner配置文件目录、kubectl命令、k8s连接文件全部影射进去docker run -d --name gitlab-runner --restart always -v /srv/gitlab-runner/config:/etc/gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock -v /usr/local/bin/kubectl:/usr/local/bin/kubectl -v /root/.kube/config:/home/gitlab-runner/.kube/config gitlab/gitlab-runner:latest备注:由于Gitlab-runner在执行任务时是使用gitlab-runner用户来操作的,所以k8s连接文件要影射到gitlab-runner的用户目录下
4. 注册Runner(把这个Runner注册到Gitlab上)
进入容器
docker exec -it gitlab-runner /bin/bash
注册
gitlab-runner register----------------- 注册过程的交互 ---------------Runtime platform arch=amd64 os=linux pid=32 revision=c6bb62f6 version=14.10.0Running in system-mode.Enter the GitLab instance URL (for example, /): -- gitlab服务器的地址Enter the registration token:7oQvKcxbRszUtK79Vd3z -- 输入gitlab的tokenEnter a description for the runner:[f6da4f202da3]: runner1 -- 这个runner的名称Enter tags for the runner (comma-separated):tag1 -- 这个runner的标签,有点类似组的概念,执行任务时,可以指定属于某个标签的runner一齐来执行Enter optional maintenance note for the runner:-- 直接回车跳过Registering runner... succeeded runner=7oQvKcxbEnter an executor: ssh, virtualbox, kubernetes, docker, shell, parallels, docker+machine, docker-ssh+machine, custom, docker-ssh:shell -- 选择执行器类型,用来执行具体任务的执行器,runner支持很多种执行器,这里选择shellRunner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!-----------------------------------------------------
在Gitlab里看到刚刚注册的Runner
5. 在gitlab项目里编写.gitlab-ci.yml
---------- .gitlab-ci.yml----- 你们用的时候记得把中文解释部分删掉哦 ------
stages: -- 声明步骤,按顺序执行,其中一个步骤失败了就会停止
- build -- 步骤1(只是模拟实际环境中的build)
- test -- 步骤2
- deploy -- 步骤3,本Demo最重要的部分
build: -- job的名称stage: build -- 对应上面步骤的名称tags:- tag1 -- runner标签,指定由属于这个标签的runner负责执行script:- echo "代码编译。。。" -- 这个步骤要执行的命令- echo "这是第二条命令"
test:stage: testtags:- tag1script:- echo "测试代码。。。"
deploy:stage: deploytags:- tag1script:- kubectl apply -f nginx.yaml -- 把nginx.yaml部署到k8s
6. 在gitlab项目编写nginx.yaml
apiVersion: v1
kind: Pod
metadata:name: nginxnamespace: default
spec:containers:- name: nginximage: nginx:1.21
7. 提交这两个文件上gitlab
git add *git add .gitlab-ci.ymlgit commit -m '第一次部署nginx1.21'git push
8. 此时,因为gitlab上就会有gitlab-ci.yml,所以,gitlab已经在开始做CICD了
在gitlab的项目上的CICD里已经看到有一次成功的构建
查看k8s集群里的容器,已经有一个运行nginx容器,版本为1.21
9. 修改nginx.yaml文件,把image的版本改为1.21.6,来模拟实际应用中的版本更新需求,然后提交到gitlab
改image内容为1.21.6
vim nginx.yaml
提交到gitlab
git add *
git commit -m '把nginx1.21更新为1.21.6'
git push
查看gitlab流水线
查看k8s里的情况
10. 看到已经从1.21成功变成1.21.6啦,CICD已经完成。
更多推荐
简单的 Gitlab CICD Demo
发布评论