【问题标题】:Can you have multiple working directories with github actions?你可以有多个带有 github 操作的工作目录吗?
【发布时间】:2021-04-27 12:06:23
【问题描述】:

所以我有一个包含多个 go 项目的多个目录的存储库。有没有办法在多个工作目录上运行 github 操作,这样我就不必在 github 操作中使用多余的 yaml?为了自动使用 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 }}

【问题讨论】:

  • 这两个目录有相互依赖关系吗?
  • 不,它们是完全独立的应用程序

标签: go github-actions


【解决方案1】:

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

选项 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

【讨论】:

  • 感谢您的这篇文章!我正在尝试以我的示例为例,但似乎遇到了一些问题,我正在尝试做的事情类似于以下内容:
  • ``` 策略:矩阵:dotnet-version: ['3.1.x', '3.5.x'] dirs: ['example_dir1', 'example_dir2'] 步骤:- 使用:actions/ checkout@v2 - 名称:安装 .NET Core SDK ${{ matrix.dotnet-version }} 使用:actions/setup-dotnet@v1.7.2 with:dotnet-version: ${{ matrix.dotnet-version }} working-目录:${{ matrix.dirs }} - 名称:安装依赖项运行:dotnet restore - 名称:构建运行:dotnet build --configuration Release --no-restore '''
猜你喜欢
  • 2019-11-28
  • 1970-01-01
  • 2021-05-01
  • 2017-05-21
  • 1970-01-01
  • 2021-09-15
  • 1970-01-01
  • 2021-04-08
  • 2020-07-09
相关资源
最近更新 更多