go - 你可以有多个带有 github 操作的工作目录吗?
问题描述
所以我有一个包含多个 go 项目的多个目录的 repo。有没有办法在多个工作目录上运行 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 }}
解决方案
为了在多个工作目录中运行某些东西,我相信您有两种选择:
选项 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 脚本循环并测试您所有的嵌套应用程序(目录)可能是合适的。在这种情况下,您忽略working-direcoty
工作流 YAML 中的指令,并让脚本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
推荐阅读
- javascript - 如何在不泄露实际代码的情况下共享 JavaScript 项目?
- machine-learning - SVM 内核的 O(n) 时间
- android - 布局-土地行为
- sequelize.js - Sequelize - 引用同一个表主键的外键
- java - 在 appium android 自动化中找不到 MobileElement
- delphi - Delphi:这段代码是在 FormClose 中清空指针的正确过程吗?
- c# - SQLiteConnection.BeginTransaction() 已弃用
- css - 单页 Wordpress 大小响应
- python - 如何使字典成为csv
- algorithm - 多边界框包含检测算法