Wie kann ich die Unixzeit einer Variablen im Forgejo Workflow zuweisen?
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. :-)