繁体   English   中英

您可以使用 github 操作有多个工作目录吗?

[英]Can you have multiple working directories with github actions?

所以我有一个包含多个 go 项目的多个目录的存储库。 有没有办法在多个工作目录上运行 github 操作,这样我就不必有冗余的 yaml 和 github 操作? 要使用 golang 自动进行错误检查,我目前有:

  errcheck:
    name: Errcheck
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
    - name: check
      uses: grandcolline/golang-github-actions@v1.1.0
      working-directory: ./app1
      with:
        run: errcheck
        token: ${{ secrets.GITHUB_TOKEN }}

但我想拥有:

  errcheck:
    name: Errcheck
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
    - name: check
      uses: grandcolline/golang-github-actions@v1.1.0
      working-directory: [./app1, ./app2]
      with:
        run: errcheck
        token: ${{ secrets.GITHUB_TOKEN }}

为了在多个工作目录中运行某些东西,我相信您有两种选择:

选项 1:矩阵

使用 GitHub Action 的jobs.<job_id>.strategy.matrix选项。 这将创建多个作业,每个作业都有自己的矩阵(目录)值。

这是一个示例工作流程:

name: Test
on:
  push: { branches: master }

jobs:
  test:
    name: Matrix test
    runs-on: ubuntu-latest
    strategy:
      matrix: { dir: ['some-dir', 'other-dir'] }

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Do something with the matrix value
      working-directory: ${{ matrix.dir }}
      run: pwd

运行此程序将创建两个作业:

在此处输入图像描述

选项 2:自定义 Shell 脚本

如果矩阵选项不适合您的需要,一个简单的 shell 脚本可能适合循环并测试所有嵌套应用程序(目录)。 在这种情况下,您忽略工作流 YAML 中的working-direcoty指令,并让脚本cd到它们中的每一个。

例如:

#!/usr/bin/env bash

dirs=( some-dir other-dir )

for dir in "${dirs[@]}"; do
  pushd "$dir"
  pwd    # Do something more significant here
  popd
done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM