From 3e146f143c63d95edb794849f01d797f8986e364 Mon Sep 17 00:00:00 2001
From: Emil Lerch <emil@lerch.org>
Date: Fri, 21 Mar 2025 12:48:55 -0700
Subject: [PATCH] sync workflows from master branch to zig-mach branch

---
 .gitea/workflows/build.yaml        | 10 ++--
 .gitea/workflows/zig-mach.yaml     |  8 +--
 .gitea/workflows/zig-nightly.yaml  |  8 +--
 .gitea/workflows/zig-previous.yaml | 84 ++++++++++++++++++++++++++++++
 4 files changed, 96 insertions(+), 14 deletions(-)
 create mode 100644 .gitea/workflows/zig-previous.yaml

diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml
index aba40f5..82cba79 100644
--- a/.gitea/workflows/build.yaml
+++ b/.gitea/workflows/build.yaml
@@ -1,10 +1,8 @@
 name: AWS-Zig Build
-run-name: ${{ github.actor }} building AWS Zig SDK
 on:
   push:
     branches:
-      - '*'
-      - '!zig-develop*'
+      - 'master'
 env:
   ACTIONS_RUNTIME_TOKEN: ${{ secrets.GITHUB_TOKEN }}
   ACTIONS_RUNTIME_URL: ${{ env.GITHUB_SERVER_URL }}/api/actions_pipeline/
@@ -17,11 +15,11 @@ jobs:
     #   image: alpine:3.15.0
     steps:
       - name: Check out repository code
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
       - name: Setup Zig
-        uses: https://git.lerch.org/lobo/setup-zig@v3
+        uses: mlugg/setup-zig@v1.2.1
         with:
-          version: 0.13.0
+          version: 0.14.0
       - name: Run tests
         run: zig build test --verbose
       # Zig build scripts don't have the ability to import depenedencies directly
diff --git a/.gitea/workflows/zig-mach.yaml b/.gitea/workflows/zig-mach.yaml
index e8ecb3d..12c3903 100644
--- a/.gitea/workflows/zig-mach.yaml
+++ b/.gitea/workflows/zig-mach.yaml
@@ -1,11 +1,11 @@
 name: aws-zig mach nominated build
-run-name: ${{ github.actor }} building AWS Zig SDK
 on:
+  workflow_dispatch:
   schedule:
     - cron: '0 12 * * *' # noon UTC, 4AM Pacific
   push:
     branches:
-      - 'zig-develop*'
+      - 'zig-mach'
 env:
   PKG_PREFIX: nominated-zig
 jobs:
@@ -22,9 +22,9 @@ jobs:
     #   image: alpine:3.15.0
     steps:
       - name: Check out repository code
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
         with:
-          ref: zig-develop
+          ref: zig-mach
       - name: Setup Zig
         uses: mlugg/setup-zig@v1.2.1
         with:
diff --git a/.gitea/workflows/zig-nightly.yaml b/.gitea/workflows/zig-nightly.yaml
index 98605e6..e97917e 100644
--- a/.gitea/workflows/zig-nightly.yaml
+++ b/.gitea/workflows/zig-nightly.yaml
@@ -1,11 +1,11 @@
 name: aws-zig nightly build
-run-name: ${{ github.actor }} building AWS Zig SDK
 on:
+  workflow_dispatch:
   schedule:
     - cron: '30 12 * * *' # 12:30 UTC, 4:30AM Pacific
   push:
     branches:
-      - 'zig-develop*'
+      - 'zig-develop'
 env:
   PKG_PREFIX: nightly-zig
 jobs:
@@ -22,11 +22,11 @@ jobs:
     #   image: alpine:3.15.0
     steps:
       - name: Check out repository code
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
         with:
           ref: zig-develop
       - name: Setup Zig
-        uses: https://git.lerch.org/lobo/setup-zig@v3
+        uses: mlugg/setup-zig@v1.2.1
         with:
           version: master
       - name: Run tests
diff --git a/.gitea/workflows/zig-previous.yaml b/.gitea/workflows/zig-previous.yaml
new file mode 100644
index 0000000..1bc831f
--- /dev/null
+++ b/.gitea/workflows/zig-previous.yaml
@@ -0,0 +1,84 @@
+name: AWS-Zig Build
+on:
+  workflow_dispatch:
+  push:
+    branches:
+      - 'zig-0.13'
+env:
+  ACTIONS_RUNTIME_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+  ACTIONS_RUNTIME_URL: ${{ env.GITHUB_SERVER_URL }}/api/actions_pipeline/
+jobs:
+  build-zig-amd64-host:
+    runs-on: ubuntu-latest
+    # Need to use the default container with node and all that, so we can
+    # use JS-based actions like actions/checkout@v3...
+    # container:
+    #   image: alpine:3.15.0
+    steps:
+      - name: Check out repository code
+        uses: actions/checkout@v4
+        with:
+          ref: zig-0.13
+      - name: Setup Zig
+        uses: mlugg/setup-zig@v1.2.1
+        with:
+          version: 0.13.0
+      - name: Run tests
+        run: zig build test --verbose
+      # Zig build scripts don't have the ability to import depenedencies directly
+      # (https://github.com/ziglang/zig/issues/18164). We can allow downstream
+      # build scripts to import aws with a few tweaks, but we can't @import("src/aws.zig")
+      # until we have our models built. So we have to have the build script
+      # basically modified, only during packaging, to allow this use case
+      #
+      # Zig package manager expects everything to be inside a directory in the archive,
+      # which it then strips out on download. So we need to shove everything inside a directory
+      # the way GitHub/Gitea does for repo archives
+      #
+      # Also, zig tar process doesn't handle gnu format for long names, nor does it seam to
+      # handle posix long name semantics cleanly either. ustar works. This
+      # should be using git archive, but we need our generated code to be part of it
+      - name: Package source code with generated models
+        run: |
+          sed -i 's#// UNCOMMENT AFTER MODEL GEN TO USE IN BUILD SCRIPTS //##' build.zig
+          tar -czf ${{ runner.temp }}/${{ github.sha }}-with-models.tar.gz \
+            --format ustar \
+            --exclude 'zig-*' \
+            *
+      # Something in this PR broke this transform. I don't mind removing it, but
+      # the PR attempts to handle situations with or without a prefix, but it
+      # doesn't. I have not yet determined what the problem is, though
+      # https://github.com/ziglang/zig/pull/19111/files
+      # --transform 's,^,${{ github.sha }}/,' *
+      # - name: Sign
+      #   id: sign
+      #   uses: https://git.lerch.org/lobo/action-hsm-sign@v1
+      #   with:
+      #     pin: ${{ secrets.HSM_USER_PIN }}
+      #     files: ???
+      #     public_key: 'https://emil.lerch.org/serverpublic.pem'
+      # - run: |
+      #     echo "Source 0 should be ./bar: ${{ steps.sign.outputs.SOURCE_0 }}"
+      # - run: |
+      #     echo "Signature 0 should be ./bar.sig: ${{ steps.sign.outputs.SIG_0 }}"
+      # - run: echo "URL of bar (0) is ${{ steps.sign.outputs.URL_0 }}"
+      # - run: |
+      #     echo "Source 1 should be ./foo: ${{ steps.sign.outputs.SOURCE_1 }}"
+      # - run: |
+      #     echo "Signature 1 should be ./foo.sig: ${{ steps.sign.outputs.SIG_1 }}"
+      # - run: echo "URL of foo (1) is ${{ steps.sign.outputs.URL_1 }}"
+      - name: Publish source code with generated models
+        run: |
+          curl --user ${{ github.actor }}:${{ secrets.PACKAGE_PUSH }} \
+            --upload-file ${{ runner.temp }}/${{ github.sha }}-with-models.tar.gz \
+            https://git.lerch.org/api/packages/lobo/generic/aws-sdk-with-models/${{ github.sha }}/${{ github.sha }}-with-models.tar.gz
+      - name: Build example
+        run: ( cd example && zig build ) # Make sure example builds
+      - name: Notify
+        uses: https://git.lerch.org/lobo/action-notify-ntfy@v2
+        if: always()
+        with:
+          host: ${{ secrets.NTFY_HOST }}
+          topic: ${{ secrets.NTFY_TOPIC }}
+          user: ${{ secrets.NTFY_USER }}
+          password: ${{ secrets.NTFY_PASSWORD }}