[latex3-commits] [git/LaTeX3-latex3-latex2e] develop: Add itHub Actions deployment workflow (c81b24e0)

Marcel Fabian Krüger tex at 2krueger.de
Fri Sep 17 16:08:11 CEST 2021


Repository : https://github.com/latex3/latex2e
On branch  : develop
Link       : https://github.com/latex3/latex2e/commit/c81b24e08ab5ab50f10b95cacfbb4d23f5ef805f

>---------------------------------------------------------------

commit c81b24e08ab5ab50f10b95cacfbb4d23f5ef805f
Author: Marcel Fabian Krüger <tex at 2krueger.de>
Date:   Fri Sep 17 16:08:11 2021 +0200

    Add itHub Actions deployment workflow


>---------------------------------------------------------------

c81b24e08ab5ab50f10b95cacfbb4d23f5ef805f
 .github/workflows/deploy.yaml | 123 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 123 insertions(+)

diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml
new file mode 100644
index 00000000..acfa324c
--- /dev/null
+++ b/.github/workflows/deploy.yaml
@@ -0,0 +1,123 @@
+name: Create release
+
+# We create releases for all new tags
+on:
+  push:
+    tags:
+      - "*"
+
+jobs:
+  # The l3build job contains the actual work. This is mostly the same as in main.yaml
+  # and should stay synchronized. Sadly it doesn't seem possible to reuse the instructions at the moment.
+  release:
+    runs-on: ubuntu-20.04
+    name: Build release
+    environment: Release
+    steps:
+      # Boilerplate
+      - name: Checkout repository
+        uses: actions/checkout at v2
+      # GitHub Actions don't regenerate the test if the key doesn't change, so
+      # we integrate a random UUID into the key to keep them different.
+      # DO NOT CHANGE THIS
+      - name: Generate unique ID
+        id: get-id
+        run: |
+          echo -n ::set-output name=id::
+          cat /proc/sys/kernel/random/uuid
+      # Actually load the cache. Since we never reuse the key, we need restore-keys
+      # to indicate the prefix of our caches. This loads the newest cache with this
+      # prefix in the key.
+      #
+      # If we want to force regeneration of the cache, increase the number after
+      # *both* instances of "texlive-v"
+      - name: Load cache
+        uses: actions/cache at v2
+        with:
+          path: ~/texlive
+          key: texlive-v0-${{ steps.get-id.outputs.id }}
+          restore-keys: texlive-v0-
+      # We need Ghostscript for dvips and XeTeX tests.
+      - run: sudo apt-get update && sudo apt-get install ghostscript
+      - name: Install TeX Live
+        uses: zauguin/install-texlive at v1
+        with:
+          # List the required TeX Live packages in a separate file to allow reuse in
+          # different workflows.
+          package_file: .github/tl_packages
+      - name: Run l3build
+        run: l3build ctan -q -H --show-log-on-error
+      - name: Archive failed test output
+        if: ${{ failure() }}
+        uses: actions/upload-artifact at v2
+        with:
+          name: testfiles
+          path: build/test*/*.diff
+          # Decide how long to keep the test output artifact:
+          retention-days: 3
+      # Now create the release (this only runs if the previous steps were successful)
+      - name: Create GitHub release
+        uses: ncipollo/release-action at 880be3d0a71bc0fa98db60201d2cbdc27324f547
+        id: release
+        with:
+          artifacts: "*.zip"
+          token: ${{ secrets.GITHUB_TOKEN }}
+          prerelease: ${{ startsWith("refs/tags/dev-", github.ref) }}
+      # Determine the name of the tag we are working on. Sadly GH Actions only provides
+      # github.ref which has the name prefixed with github.ref and no way to remove a prefix
+      # in normal expressions, so we need an action for that.
+      - name: Get name
+        uses: frabert/replace-string-action at 9b62dfe3ae936b1cc380f2421c8ac9e63a4a3e85
+        id: name
+        if: ${{ always() }}
+        with:
+          pattern: "^refs/(?:heads|tags)/"
+          string: ${{ github.ref }}
+          replace-with: ""
+      # While the normal notification job only informs about failed runs, we additionally want to notify about successful releases.
+      - name: Send mail
+        # The explicit commit hash ensures that this can't be used by dawidd6 as a
+        # backdoor to execute arbitrary code during our runs.
+        uses: dawidd6/action-send-mail at ceb614a2c5737d913f2d2729e2bcc70ad933382b
+        with:
+          # Currently using my (Marcel's) mail server for sending mails.
+          server_address: typesetting.eu
+          server_port: 587
+          # These values can be changed in the repository settings.
+          username: ${{secrets.MAIL_USERNAME}}
+          password: ${{secrets.MAIL_PASSWORD}}
+          # If we want to send notifications to additional addresses, at them here as
+          # a comma separated list.
+          to: latex3-commits at tug.org
+          # The name is arbitrary, but if you want to change the address you need to
+          # coordinate it with the administrator of the mail server to allow the account
+          # to send from the mail address.
+          from: LaTeX CI <github at latex-project.org>
+          # Determine the subject and body of the mail.
+          subject: "Version ${{steps.name.outputs.replaced}} of ${{github.repository}} has been released"
+          body: |
+            The release ${{steps.name.outputs.replaced}} has been created for ${{github.repository}}.
+
+            More information can be found at
+            ${{steps.release.outputs.html_url}}
+      - name: Send failure notification
+        uses: dawidd6/action-send-mail at ceb614a2c5737d913f2d2729e2bcc70ad933382b
+        if: ${{ failure() }}
+        with:
+          server_address: typesetting.eu
+          server_port: 587
+          username: ${{secrets.MAIL_USERNAME}}
+          password: ${{secrets.MAIL_PASSWORD}}
+          to: latex3-commits at tug.org
+          from: LaTeX CI <github at latex-project.org>
+          priority: high
+          # Determine the subject and body of the mail.
+          subject: "Test failure while trying to build release ${{steps.name.outputs.replaced}} in ${{github.repository}}"
+          body: |
+            Test failure for ${{github.repository}}
+            -------------------------------------------------------------
+
+            On tag:           ${{steps.name.outputs.replaced}} (${{github.sha}})
+            Initiated by:     ${{github.actor}}
+            Commit URL:       https://github.com/${{github.repository}}/commit/${{github.sha}}
+            More information: https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}





More information about the latex3-commits mailing list.