Normale Ansicht

Wie kann ich die Unixzeit einer Variablen im Forgejo Workflow zuweisen?

23. Juni 2025 um 05:00

Dies ist ein Beitrag der Sorte „Notiz an mich selbst“. Wenn sie euch ebenfalls hilft, umso besser.

Ich hatte in folgendem Workflow versucht, die aktuelle Unixzeit in einer Umgebungsvariablen zu speichern, um sie in verschiedenen Schritten des Workflows wiederverwenden zu können. Mein Test-Workflow sah wie folgt aus:

name: test

on:
  push:
    branches: workflow_tests

env:
  UNIXTIME: $(date +%s)

jobs:
  test:
    runs-on: podman
    steps:
      - run: echo Debug output
      - run: echo Current unix time is ${{ env.UNIXTIME }}
      - run: sleep 10
      - run: echo Current unix time is ${{ env.UNIXTIME }}

Leider entsprach die Ausgabe nicht meiner Erwartung.

  • Ergebnis der ersten Ausgabe: 1747991617
  • Ergebnis der zweiten Ausgabe: 1747991629

In https://matrix.to/#/#codeberg.org:matrix.org erklärte mir jacksonchen666, dass $(date +%s) vermutlich als String an UNIXTIME übergeben wird. Die Auswertung durch die Shell findet dann erst im jeweiligen Workflow-Schritt statt. Ob das stimmt, weiß ich nicht, es klingt jedoch plausibel.

Christoph aus dem gleichen Matrix-Kanal schlug folgende Lösung vor:

echo "MY_VAR=foo" >> $GITHUB_ENV

Hier wird in der Shell der Wert foo der Variablen MY_VAR zugewiesen und diese anschließend in der Workflow-Umgebung verfügbar gemacht. Für mein Beispiel sieht das nun so aus:

name: test

on:
  push:
    branches: workflow_tests

jobs:
  test:
    runs-on: podman
    steps:
      - run: echo Debug output
      - run: echo "UNIXTIME=$(date +%s)" >> $GITHUB_ENV
      - run: echo Current unix time is ${UNIXTIME}
      - run: sleep 10
      - run: echo Current unix time is ${UNIXTIME}

Und schon stimmt die Ausgabe der UNIXTIME in beiden Schritten überein. Ich habe wieder was dazu gelernt. :-)

❌