添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
爱搭讪的猴子  ·  国内首款 | ...·  1 周前    · 
帅气的酱牛肉  ·  Using multiple ...·  6 月前    · 
独立的椰子  ·  3zvkuqsqs - Java - ...·  10 月前    · 
才高八斗的双杠  ·  ImportError: cannot ...·  11 月前    · 

2. 配置gitlab-ci文件中的变量

$param1,$param2,$param3这3个就是变量
进入Settings->CI/CD->Variables
在这里插入图片描述
设置参数值
param1=变量1
param2=变量2
param3=变量3
这些值我们在等下运行pipeline时看看是否在gitlab-ci被引用到

3. 配置gitlab runner

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

4. 运行pipeline

进入CI/CD->Pipelines->Run pipeline
在这里插入图片描述

在这里插入图片描述
运行后看到3个job,这就是stage定义的对应的job

在这里插入图片描述
点击job1,可以看到输出的日志,我打印出的信息,看到输出了param1定义的值“变量1”
在这里插入图片描述

依次点job2,job3也可以看到输出日志

在job1看到他分几个步骤

1. Preparing the "docker" executor(准备docker执行器,即容器运行环境这里默认加载的镜像是maven:3.5.2-jdk-7)
2. Preparing environment(准备环境)
3. Getting source from Git repository(拉取代码)
4. Executing "step_script" stage of the job script(执行脚本)

返回pipeline列表看看运行的pipeline
在这里插入图片描述
可以看到job1,job2,job3都是打钩的状态都是正常,点击可以查看该阶段的日志

5. gitlab-ci文件属性

属性含义
stages定义任务内的阶段,每个阶段必须从全局定义的阶段中选择
variables定义全局变量
stage选择全局定义的阶段,只能选其中一个
before_script在脚本执行前执行的指令
after_script在脚本执行后执行的指令
script由runner执行的shell脚本(必填项)
retry发生故障时自动重试作业的时间和次数(0,1,2)
image指定基础运行环境的docker镜像,如java,python,maven等
tags指定流水线使用哪个runner去运行,只能定义到一个具体的项目,tags的取值范围是该项目可见的runner
only限定某些分支或者某些tag
except排除某些分支和某些tag
services使用Docker services(服务)镜像
when什么时候运行作业
environment部署的环境名称
cache指定需要在job之间缓存的文件或目录
artifacts归档文件列表,指定成功后应附加到job的文件和目录的列表
dependencies当前作业依赖的其他作业,你可以使用依赖作业的归档文件
coverage作业的代码覆盖率
parallel指定并行运行的作业实例
trigger定义下游流水线的触发器
include作业加载其他YAML文件
pages上传GitLab Pages的结果
allow_failure允许作业失败,失败的作业不影响提交的状态

6. 属性额外说明

stages
定义流水线全局阶段,默认有3个阶段,build、test、deploy。如果作业未定义stage阶段,默认使用test阶段

when
用于实现在作业失败时或发生故障时运行的作业,可以设置下面几个值

on_success :只有前面的阶段的所有作业都成功时才执行,这是默认值。
on_failure :当前面阶段的作业至少有一个失败时才执行。
always : 无论前面的作业是否成功,一直执行本作业。
manual :手动执行作业,作业不会自动执行,需要人工手动点击启动作业。
delayed : 延迟执行作业,配合 start_in 关键字一起作用, start_in 设置的值必须小于或等于1小时,start_in 设置的值示例: 10 seconds 、 30 minutes 、 1 hour ,前面的作业结束时计时器马上开始计时。

.符号
对于不想执行的job,可以在前面加“.”符号表示跳过

variables $引用变量
可以使用如${DATABASE_URL}来引用定义的变量

only 和 except

  1. only 和 except 中可以使用特殊的关键字,如 branches 、 tags 、 api 、 external 、 pipelines 、 pushes 、 schedules 、 triggers 、 web 、 merge_requests 、 chats 等
    在这里插入图片描述

  2. only 和 except 支持高级策略,refs 、 variables 、 changes 、 kubernetes 四个关键字可以使用。

7. 稍微复杂点的gitlab-ci文件

这个是在项目中的其中一个文件,仅供参考,没啥涉密的东西

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.xxx: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.xxx:8080/library/docker:19.03.14
  tags:
  - devops
  services:
  - 10.19.64.xxx: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.xxx.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
                                    管道是持续集成、交付和部署的顶级组件是一组分阶段(批处理)执行的工作。同一个阶段中的所有工作都是并行执行的(如果有足够的并发Runners),如果它们全部成功,管道就进入下一个阶段。如果其中一个jobs失败,则下一个阶段不(通常)执行。您可以访问项目的Pipeline选项卡中的管道页面。在下图中,您可以看到管道由4个阶段组成(build(构建) , test(测试) , staging(分级) , production(生产)),每个阶段都有一个或多个工作。
                                    GitLab CI流水线配置文件.gitlab-ci.yml详解
… contents:: 目录
本文讲解在 :ref:GitLab的汉化与CI持续集成gitlab-runner的配置 <configure_gitlab_i18n_and_create_gitlab_ci_with_gitlab_runner> 的基础上,对GitLab CI流水线配置文件 .gitlab-ci.yml 进行详细的介绍。
文章目录GitLab CI流水线配置文件.gitlab-ci.yml详解1. 实验环境2. 
                                    Gitlab官方文档:https://docs.gitlab.com/ee/ci/yaml/README.html
https://docs.gitlab.com/ee/ci/yaml/gitlab_ci_yaml.html
https://docs.gitlab.com/ee/ci/docker/using_docker_images.html
GitLab CI/CD 是一个内置在GitL...
                                    本文将深入探讨.gitlab-ci.yml文件,这是GitLab CI/CD工作流程中的核心配置文件之一。我们将详细解读该文件的结构、语法和常用指令,帮助读者理解如何通过.gitlab-ci.yml文件定义CI/CD作业流程、环境和任务,实现自动化的构建、测试和部署。
git仓库:https://github.com/Fennay/git...
此文档用于描述.gitlab-ci.yml语法,.gitlab-ci.yml文件被用来管理项目的runner 任务。
如果想要快速的了解GitLab CI ,可查看快速引导。
.gitlab-ci.yml
从7.12版本开始,GitLab CI使用YAML文件(.gitlab-ci.yml)来管理项目配置。该文件存放于项目仓库的根目录,它定义该项目如何构建。
开始构建之前YAM
script	必须	 定义由Runner执行的shell脚本或命令
extends	非必须	 定义此作业将继承的配置条目
image	非必须	 需要使用的docker镜像,请查阅该文档
services	非必须	 定义所需的docker服务,请查阅该文档
stage	非必须	 定义一个工作场景阶段,默认是test
type	非必须	 stage的别名,不赞成使用
variabl...
                                    GitLab CI 是 GitLab 提供的内置 CI/CD 工具,用户可以通过配置项目根目录的 .gitlab-ci.yml文件来定义自动化的构建、测试、部署等流程。以下是详细的配置说明、文件路径和具体操作步骤。通过实践逐步熟悉 GitLab CI 的功能,你可以构建出适合团队需求的高效自动化流水线!:定义作业生成的文件以供后续作业使用。:限制作业运行的分支。:定义流水线的阶段。
                                    每个人都有惰性,但不断学习是好好生活的根本,共勉!官网参考文档:https://docs.gitlab.com/ee/ci/index.html#the-gitlab-ciyml-file