Arbeitsverzeichnis in GitHub Actions setzen

Arbeitsverzeichnis in GitHub Actions setzen


In GitHub Actions kann man das Arbeitsverzeichnis (working-directory) auf verschiedenen Ebenen setzen:

  • Global für alle Jobs in einem Workflow (also einer yml-Datei)
  • Auf Job-Ebene
  • Auf Step-Ebene

In diesem Post möchte ich kurz zeigen, wie man das für jede Ebene realisieren kann. Als Beispiel habe ich dafür drei verschiedene GitHub Action Jobs erstellt, die alle dasselbe Shell Skript (run.sh) im Unterordner demo ausführen sollen. Jedoch wird in jedem Job das Arbeitsverzeichnis auf jeweils andere Weise gesetzt.

Arbeitsverzeichnis für alle Jobs in einem Workflow setzen

Das Arbeitsverzeichnis für alle Jobs in einem Workflow setzt man in den defaults Einstellungen fest:

name: Example working directory on global level

on:
  push:
    branches: [ '**' ]
    paths:
      - '**/working-directory-global-level.yml'

  workflow_dispatch:

defaults:
  run:
    working-directory: demo

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3

      - name: Run script
        run: |
          chmod u+x ./run.sh
          ./run.sh

Arbeitsverzeichnis auf Job-Ebene setzen

Das Arbeitsverzeichnis kann man auch auf Job-Ebene setzen. Dieses setzt man in den defaults Einstellungen für den entsprechenden Job:

name: Example for working directory on job level

on:
  push:
    branches: [ '**' ]
    paths:
      - '**/working-directory-job-level.yml'

  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: demo

    steps:
      - uses: actions/checkout@v3

      - name: Run script
        run: |
          chmod u+x ./run.sh
          ./run.sh

Arbeitsverzeichnis für einen Step setzen

Man kann das Arbeitsverzeichnis auch auf Step-Ebene setzen. Dafür setzt man die Eigenschaft working-directory eines Steps:

name: Example for working directory on step level

on:
  push:
    branches: [ '**' ]
    paths:
      - '**/working-directory-step-level.yml'

  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3

      - name: Run script
        working-directory: demo
        run: |
          chmod u+x ./run.sh
          ./run.sh

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.