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