【问题标题】:If condition is failing in the GitLab CI如果 GitLab CI 中的条件失败
【发布时间】:2022-10-18 14:02:23
【问题描述】:

以下是我的 Gitlab CI 代码:-

stages:
  - check

variables:
  JIRA_HEADER: "Accept: application/json"

jira:
  stage: check
  before_script:
    #- apk add jq curl
    - apk add --no-cache bash jq curl
    
  image: python:3.7.4-alpine3.9
  script:
    - export MERGE_REQUEST_JIRA_ID=$(echo ${CI_MERGE_REQUEST_TITLE} | sed -r "s/^([A-Za-z][A-Za-z0-9]+-[0-9]+).*/\1/")
    - echo $CI_MERGE_REQUEST_TITLE
    
    - export JIRA_DETAIL=$(curl -u ${JIRA_USERNAME}:${JIRA_PASSWORD} -H "${JIRA_HEADER}" -X GET https://${JIRA_SERVER}/rest/api/2/issue/${MERGE_REQUEST_JIRA_ID}?fields=status)
    - echo $JIRA_DETAIL

    # extract the JIRA key id, this also validates JIRA issue referenced is valid
    - export JIRA_KEY_ID=$(echo ${JIRA_DETAIL} | jq -e '.key')
    - echo $JIRA_KEY_ID

    # extract the JIRA status
    - export JIRA_STATUS=$(echo ${JIRA_DETAIL} | jq '.fields.status.name')
    - echo $JIRA_STATUS
    - |
       if [[ "$JIRA_STATUS" == "^(Done|Completed|Closed)$" ]] 
        then 
          echo "Invalid JIRA (Done/Completed/Closed) found!"
          exit 1
        else echo "Valid JIRA Id found!" 
       fi    
  only:
    - merge_requests

在从合并请求的标题中检索 Jira id 后,我试图通过调用其 API 来验证 JIRA 状态。 if [[ "$JIRA_STATUS" == "^(Done|Completed|Closed)$" ]] 下面的 If 条件存在问题,因为它没有正确验证它。每次, else 条件都会被执行并将消息打印为找到了有效的 JIRA ID!如果有人可以帮助我解决这个小问题,我将不胜感激。我想在if 块中使用此消息优雅地退出作业发现无效的 JIRA(完成/完成/关闭)!每当发现 Jira 状态处于任何给定值时完成、完成或关闭。

【问题讨论】:

  • echo $JIRA_STATUS 打印什么?
  • 它打印完成、打开等状态
  • 我终于能够通过修改如下代码来解决这个问题:- - | if test -z "$(echo ${JIRA_STATUS} | sed -r "s/\"(Done|Completed|Closed)\"//")" then echo "Not a valid Jira (Done/Completed/Closed)" ; exit 1 else echo "Valid Jira found!";回声$?我在 Linux 中使用了 test 命令和 if-else 条件来使其工作

标签: linux gitlab gitlab-ci


【解决方案1】:

我终于能够通过修改如下代码来解决这个问题: -

- |
      if test -z "$(echo ${JIRA_STATUS} | sed -r "s/"(Done|Completed|Closed)"//")" 
        then 
          echo "Not a valid Jira (Done/Completed/Closed)"; exit 1
        else 
          echo "Valid Jira found!"; echo $?
      fi

我在 Linux 中使用了 test 命令和 if-else 条件来使其工作

【讨论】:

    猜你喜欢
    • 2020-09-09
    • 1970-01-01
    • 2019-04-07
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    • 2018-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多