json 在Github操作中使用字典数据类型

kb5ga3dv  于 2023-02-26  发布在  Git
关注(0)|答案(1)|浏览(213)

在Github工作流中使用字典之类的东西而不需要阅读外部文件,你知道哪些技巧?我尝试创建这样的东西:

{
  "clusters01": ["cluster-eu","cluster-us","cluster-au"],
  "clusters02": ["cluster-eu","cluster-au"]
}

我需要检查字典中是否存在任何键,从它的值中得到一个列表,然后循环遍历元素。
在文档中我看到了 object-filters,但不明白它是关于什么的?https://docs.github.com/en/actions/learn-github-actions/expressions#object-filters

6rvt4ljy

6rvt4ljy1#

解决方案就是使用一个矩阵,你可以读取和解析一些文件,然后把结果放到一个矩阵中。

jobs:
  matrix-clusters:
    name: "set matrix of selected cluster"
    outputs:
      matrix-one: ${{ steps.set-matrix.outputs.matrix-one }}
      matrix-stop-all: ${{ steps.set-matrix.outputs.matrix-stop-all }}
    steps:
      - uses: actions/checkout@v3
      - id: set-matrix
        run: |
          TASK_ONE=$(jq -c --join-output \
          '[to_entries[]|select(.value.env=="${{ github.event.inputs.choice }}")|.value]' \
          .github/workflows/envs/${{ github.event.inputs.cluster_env || 'stg' }}.json)
          echo "matrix-one=$TASK_ONE" >> $GITHUB_OUTPUT
          TASK_STOP_ALL=$(jq -c --join-output \
           '[to_entries[]|select(.value.skipgroupstop!=true)|.value]' \
          .github/workflows/envs/${{ github.event.inputs.cluster_env || 'stg' }}.json)
          echo "matrix-stop-all=$TASK_STOP_ALL" >> $GITHUB_OUTPUT

相关问题