簡體   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