gitlab-ci.yml关键字(三)before_script 、script 、after_script

before_script

before_script 用于定义在每个作业执行之前所运行的一系列脚本命令。这里需要注意的是,before_script 运行的时机,是在制品(artifacts)恢复后,也就意味着,在这个时机中是可以操作制品的。

示例

my_job:
  before_script:
    - echo "Execute this command before any 'script:' commands."
    - NRM="https://www.xxx.xx"
  script: 
    - echo "this is script"
    - echo "output variable in before_script ${NRM}"

效果如下:

可以在before_script中定义一个变量,然后在script中去使用这个变量。因为before_script和script是运行在同一个执行环境之中。
在这里插入图片描述

script

使用script指定运行器要执行的命令。该关键字是能定义在某个job中。可以在job中定义变量然后使用。
如果想在script中使用特殊字符串,而不是 YAML语法,需要使用单引号或者是双引号。这些特殊字符包括:{, }, [, ], , &, *, #, ?, |, -, <, >, =, !, %, @, `.

示例

my_job:
  script: 
    - NRM="https://www.xxx.xx"
    - echo "output variable in before_script ${NRM}"
    - 'curl --request GET --header "Content-Type: application/json" https://www.baidu.com/'

需要注意的是在curl命令中本身包含双引号,那外面就需要单引号错开。否则就不匹配了

效果如下所示:
在这里插入图片描述

after_script

使用after_script定义在每个作业(包括失败的作业)之后运行的命令数组。

要点

  1. 即使一个作业运行失败,它的after_script中的内容依然会被执行。这在有些业务场景下是非常有用的。
  2. after_script的执行环境是与 script分离的,是一个新的执行环境。这也意味着在after_script中无法访问到在before_script和script中定义的变量。
  3. after_script的运行状态不影响当前作业的状态,如果after_script运行失败或超时都不影响当前作业的成功或失败。

示例

my_job:
  script: 
    - NRM="https://www.xxx.xx"
    - echo "output variable in script ${NRM}"
  after_script:
    - echo "this is after_script"
    - echo "output variable in script ${NRM}"
无法访问script中的变量

在这里插入图片描述

状态失败也会执行after_script
my_job:
  before_script:
    - NRM = "12"
  script: 
    - echo "${NRM}"
  after_script:
    - echo "this is after_script"

在这里插入图片描述

其他

查看所有gitlab CI/CD关键字列表

编写 GitLab CI/CD 配置文件 `.gitlab-ci.yml` 的基本步骤如下: 1. 打开你的项目仓库,进入 `Settings` -> `CI/CD` -> `General pipelines settings`,启用 CI/CD 功能。 2. 在项目仓库中创建 `.gitlab-ci.yml` 文件,并在其中定义各个阶段的作业和所需的步骤。 3. 在 `.gitlab-ci.yml` 文件中,你需要定义以下内容: - `stages`:定义各个阶段的名称和执行顺序。 - `variables`:定义环境变量。 - `before_script`:定义所有作业都需要执行的命令。 - `after_script`:定义作业执行完毕后需要执行的命令。 - `jobs`:定义各个作业的名称、阶段、执行脚本等信息。 4. 编写完 `.gitlab-ci.yml` 文件之后,提交到项目仓库中,GitLab 会自动检测并执行配置文件中定义的作业。 下面是一个简单的 `.gitlab-ci.yml` 文件示例: ```yml stages: - build - test - deploy variables: JAVA_HOME: /usr/lib/jvm/java-11-openjdk-amd64 before_script: - echo "Setting up environment" - apt-get update -qy && apt-get install -y maven after_script: - echo "Tearing down environment" - rm -rf target/ build: stage: build script: - mvn package test: stage: test script: - mvn test deploy: stage: deploy script: - echo "Deploying to production server" ``` 在这个示例中,我们定义了个阶段:`build`、`test` 和 `deploy`,每个阶段都有对应的作业。`before_script` 和 `after_script` 分别定义了作业执行前和执行后需要执行的命令。`variables` 中定义了一个环境变量 `JAVA_HOME`。 `build` 作业会执行 `mvn package` 命令,打包应用程序;`test` 作业会执行 `mvn test` 命令,运行测试用例;`deploy` 作业会执行 `echo "Deploying to production server"` 命令,将应用程序部署到生产环境中。 在实际使用中,你需要根据项目的具体情况修改 `.gitlab-ci.yml` 文件,以满足不同的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

问白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值