简单的 Gitlab CICD Demo

编程入门 行业动态 更新时间:2024-10-09 12:34:40

<a href=https://www.elefans.com/category/jswz/34/1770983.html style=简单的 Gitlab CICD Demo"/>

简单的 Gitlab CICD Demo

概念

  1. 在Gitlab项目的代码仓库里放入gitlab-ci.yml,该文件里定义了CI/CD的全部流程及每个步骤需要做些什么事情。
  2. 当开发者提交代码到Gitlab的代码仓库时,Gitlab就会自动根据gitlab-ci.yml文件里定义的流程进行CICD
  3. 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

本文发布于:2024-02-13 09:24:26,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1758244.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:简单   Gitlab   Demo   CICD

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!