diff --git a/.gitea/workflows/zig-mach.yaml b/.gitea/workflows/zig-mach.yaml index 0f75bea..7d89715 100644 --- a/.gitea/workflows/zig-mach.yaml +++ b/.gitea/workflows/zig-mach.yaml @@ -31,6 +31,7 @@ jobs: file="$(curl -Osw '%{filename_effective}' "$(curl -s https://machengine.org/zig/index.json |jq -r '."'${ZIG_VERSION}'"."x86_64-linux".tarball')")" tar x -C /usr/local -f "${file}" ln -s /usr/local/"${file%%.tar.xz}"/zig /usr/local/bin/zig + zig version - name: Run tests run: zig build test --verbose - name: Build example diff --git a/.gitea/workflows/zig-nightly.yaml b/.gitea/workflows/zig-nightly.yaml new file mode 100644 index 0000000..68d8614 --- /dev/null +++ b/.gitea/workflows/zig-nightly.yaml @@ -0,0 +1,81 @@ +name: AWS-Zig Build +run-name: ${{ github.actor }} building AWS Zig SDK +on: + push: + branches: + - 'zig-develop*' +env: + ACTIONS_RUNTIME_TOKEN: ${{ secrets.GITHUB_TOKEN }} + ACTIONS_RUNTIME_URL: ${{ env.GITHUB_SERVER_URL }}/api/actions_pipeline/ +jobs: + build-zig-nightly: + 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 + env: + ZIG_VERSION: master + ARCH: x86_64 + steps: + - name: Check out repository code + uses: actions/checkout@v3 + # ARCH is fine, but we can't substitute directly because zig + # uses x86_64 instead of amd64. They also use aarch64 instead of arm64. + # + # However, arm64/linux isn't quite fully tier 1 yet, so this is more of a + # TODO: https://github.com/ziglang/zig/issues/2443 + - name: Install zig + run: | + apt-get update && apt-get install -y jq + file="$(curl -Osw '%{filename_effective}' "$(curl -s https://ziglang.org/download/index.json |jq -r '."'${ZIG_VERSION}'"."x86_64-linux".tarball')")" + tar x -C /usr/local -f "${file}" + ln -s /usr/local/"${file%%.tar.xz}"/zig /usr/local/bin/zig + zig version + - name: Run tests + run: zig build test --verbose + - name: Build example + run: ( cd example && zig build ) # Make sure example builds + # 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: | + tar -czf ${{ runner.temp }}/${{ github.sha }}-with-models.tar.gz \ + --format ustar \ + --exclude 'zig-*' \ + --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: 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 }}