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. :-)

2 Kommentare zu „Wie kann ich die Unixzeit einer Variablen im Forgejo Workflow zuweisen?

  1. Michaela Lang

    @Joerg, haven’t dealt with forgejo before (heavy gitea user) but following should work too and avoids poluting local disks


    name: test

    on:
    push:

    jobs:
    test:
    runs-on: ubi9
    steps:
    - run: echo "::set-env name=TIME::$(date +%s)"
    - run: echo Debug output
    - run: echo Current unix time is ${{ env.TIME }}
    - run: sleep 10
    - run: echo Current unix time is ${{ env.TIME }}

    Antworten
    1. Jörg Kastning Beitragsautor

      Hi Michi,

      Thank you for your input! Sorry but the code formatting in the comments sucks obviously. I don’t know if there is a way to fix that without installing another plugin (which I like to avoid).

      Cheers,
      Joerg

      Antworten

Antworte auf den Kommentar von Michaela Lang Antwort abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert