开发者问题收集

在 gitlab 管道作业中使用 yq 图像时出错

2022-09-23
1392

我有一个 gitlab 管道作业,它使用 yq 工具从 yaml 文件中提取版本号,然后将其导出为环境变量。我使用 mikefarah/yq:4.27.2 作为基础映像。管道代码是:

prepare-version:
  image: mikefarah/yq:4.27.2
  stage: prepare
  script:
   - ver=$(yq '.version' versions.yml)
   - echo "version=${ver}" >> version.env
artifacts:
   reports:
     dotenv: version.env

管道总是在以下位置失败:

Using docker image sha256:cecdbf2efcf7240d3378dd188844b2b5805420eef692dfb98aa3a1b6d366ef5a for mikefarah/yq:4.27.2 with digest mikefarah/yq@sha256:856f7ab12c58608d422a742a4917e6998ad065d9d48a5b1cd69c3ce8fa80f3fa ...
Error: unknown shorthand flag: 'c' in -c
Usage:
yq eval [expression] [yaml_file1]... [flags]
Aliases:
  eval, e
Examples:
  # Reads field under the given path for each file
  yq e '.a.b' f1.yml f2.yml 
  # Prints out the file
  yq e sample.yaml 

当在本地使用

yq '.version' versions.yml

使用相同的 yq 版本时,一切正常。但在管道中它失败了。有什么想法为什么会发生这种情况吗?

3个回答

我选择使用版本 3,它运行起来没有问题。我不得不将命令更改为

yq r versions.yml 'version'

即使尝试此 问题解决方案 ,v4 的图像似乎也存在问题>

MostafaBakr
2022-09-23
prepare-version:
  image: 
    name: mikefarah/yq:4
    entrypoint: [""]
  stage: prepare
  ...

修复它。

Stewie
2023-07-24

由于文档没有说明为什么会发生这种情况,因此创建我自己的 yq Docker 映像更容易。

FROM amazoncorretto:17.0.7-alpine3.17

RUN wget https://github.com/mikefarah/yq/releases/download/v4.34.1/yq_linux_amd64 -O /usr/bin/yq
RUN chmod +x /usr/bin/yq
MostafaBakr
2023-08-07