gitlab ci/cd实践

gitlab ci/cd实践

这篇文章是根据自己的项目实践编写的,可能有些粗糙,但是流程是没问题的

1. 编写gitlab-ci文件

项目根目录创建.gitlab-ci.yml

variables:
  COVERAGE_WEBHOOK_URL: $COVERAGE_WEBHOOK_URI?branch=$CI_COMMIT_REF_NAME&gitlabPipelineId=$CI_PIPELINE_ID&gitlabProjectId=$CI_PROJECT_ID
  IMAGE_WEBHOOK_URL: $CI_SERVICE_URL/webhook/gitlabProjects/$CI_PROJECT_ID/pipelines/$CI_PIPELINE_ID/images
  imageTag: $CI_PROJECT_NAME-$DEPLOY_TIME_TAG-$CI_PIPELINE_ID
  DOCKER_TLS_CERTDIR: ''

stages:
  - code_check
  - push_images
  - deploy

code_check:
  stage: code_check
  image: 10.19.64.203:8080/ums/maven:3.6.0-jdk-8
  tags:
    - devops
  script:
    - mvn clean package -DskipTests
  artifacts:
    expire_in: 3 hrs
    paths:
      - ./ib-provider/target/*.jar


push_images:
  stage: push_images
  image: 10.19.64.203:8080/library/docker:19.03.14
  tags:
  - devops
  services:
  - 10.19.64.203:8080/library/docker:19.03.14-dind
  before_script:
  - mkdir -p $HOME/.docker
  - echo $DOCKER_AUTH_CONFIG > $HOME/.docker/config.json
  - docker info
  script:
  - docker build -t ${CI_REGISTRY_IMAGE_DIR}:${imageTag} . 
  - docker push ${CI_REGISTRY_IMAGE_DIR}:${imageTag}
  - wget --post-data "imageTag=$imageTag" $IMAGE_WEBHOOK_URL


deploy:
  stage: deploy
  image: harbor.uniin.cn/devops-ci/mvn:1.0.1
  tags:
    - devops
  script:
    - echo $imageTag
    - wget --no-check-certificate --header="Authorization:$AUTH_TOKEN" --post-data="pipelineId=$CI_PIPELINE_ID&ref=$CI_COMMIT_REF_NAME&imageName=$imageName&tag=$imageTag&deployVersion=$deployVersion&description=$description&deployParams=$deployParams&envName=$envName&deployType=$deployType" $DEPLOY_WEBHOOK_URL
  only:
    variables:
      - $IS_DEPLOY == "1"
  dependencies:
    - push_images

定义pipeline的阶段stage,然后定义每个阶段里面干了什么,使用的镜像是什么,执行的脚本是什么,就是定义一系列可执行的行为,然后串联在一起,形成pipeline,具体gitlab-ci文件如何写规则是什么就是另外的篇幅了,可自行查找教程,没学过也不难,文中可以很直观的看出流程和内容的

2. 设定gitlab-ci文件里的参数变量

比如文件中的$CI_SERVICE_URL是以变量形式存在的,对于项目有灵活配置的,以变量形式存在,每个项目可以单独配置,也以变量形式保证项目的安全保密性
进入项目,Settings->CI/CD
gitlab ci/cd实践_第1张图片
里面就是CI/CD要关注的配置,这里配置参数,进入Variables新增变量
gitlab ci/cd实践_第2张图片

3. 配置gitlab runner

怎么安装gitlab runner可以参考官网https://docs.gitlab.com/runner/install/
安装完后将runner注册进gitlab,gitlab上都写着指令教程,放心实践
我这个项目已经有了个组共享的runner,我就直接用就好了,可以在gitlab-ci文件上指定runner ,用tags属性
gitlab ci/cd实践_第3张图片

什么是gitlab runner

gitlab runner是一个用来执行软件集成脚本的系统,打个比喻,runner就是工厂的工人,而gitlab-ci是这个工厂的主管,工厂有多个项目,所有工人招聘进来都需要注册登记,分配给相应的项目,当有项目变化时,活就来了,gitlab-ci就会通知相应的runner工人去执行相应的软件集成脚本
gitlab ci/cd实践_第4张图片

4. 运行pipeline

进入CI/CD->Pipelines->Run pipeline
gitlab ci/cd实践_第5张图片
gitlab ci/cd实践_第6张图片

5. 查看pipe运行状态

进入运行pipeline的状态,这里可以看到pipeline有几个阶段,这里看到有3个job,一个是code_check,一个是push_images,一个是deploy
gitlab ci/cd实践_第7张图片
可以点击pipeline的阶段去看日志
gitlab ci/cd实践_第8张图片
也可以进入CI/CD->Pipelines查看执行流水线的记录以及每个阶段的状态
gitlab ci/cd实践_第9张图片

6. 流水线deploy阶段

这里的deploy没有直接部署应用,而是用wget去调用devops的部署服务,实现部署,这里自己可以改成其他部署形式
我们项目的devops是调用rancher来实现k8s容器部署,实现gitlab+k8s实现了CI/CD

7. 结束

到这就完成了pipeline的流程,写这篇文章是为了分享自己的知识和为自己做一个备忘录。谢谢观看到最后

你可能感兴趣的:(gitlab,devops,k8s,ci,devops,docker,git,kubernetes)