diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 21f7ebd..b135f1c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,120 +1,137 @@ -name: CI - -on: - push: - paths: - - "**.zig" - pull_request: - paths: - - "**.zig" - schedule: - - cron: "0 0 * * *" - workflow_dispatch: - -jobs: - build: - strategy: - matrix: - os: [ubuntu-latest, macos-latest, windows-latest] - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - submodules: true - - uses: goto-bus-stop/setup-zig@v2 - with: - version: master - - - run: zig version - - run: zig env - - - name: Build - run: zig build - - - name: Build with Tracy - if: ${{ matrix.os != 'macos-latest' }} - run: zig build -Denable_tracy -Denable_tracy_allocation - - - name: Run Tests - run: zig build test - - - name: Build artifacts - if: ${{ matrix.os == 'ubuntu-latest' }} - run: | - declare -a targets=("x86_64-windows" "x86_64-linux" "x86_64-macos" "x86-windows" "x86-linux" "aarch64-linux" "aarch64-macos") - mkdir -p "artifacts/" - - for target in "${targets[@]}"; do - mkdir -p artifacts/$target - echo "Building target ${target}..." - if [ "${GITHUB_REF##*/}" == "master" ]; then - echo "Building safe" - zig build -Dtarget=${target} -Drelease-safe --prefix artifacts/${target}/ - else - echo "Building debug as action is not running on master" - zig build -Dtarget=${target} --prefix artifacts/${target}/ - fi - sed -e '1,5d' < README.md > artifacts/${target}/README.md - cp LICENSE artifacts/${target}/ - done - - - name: Upload x86_64-windows artifact - if: ${{ matrix.os == 'ubuntu-latest' }} - uses: actions/upload-artifact@v3 - with: - name: zls-x86_64-windows - path: artifacts/x86_64-windows/ - - - name: Upload x86_64-linux artifact - if: ${{ matrix.os == 'ubuntu-latest' }} - uses: actions/upload-artifact@v3 - with: - name: zls-x86_64-linux - path: artifacts/x86_64-linux/ - - - name: Upload x86_64-macos artifact - if: ${{ matrix.os == 'ubuntu-latest' }} - uses: actions/upload-artifact@v3 - with: - name: zls-x86_64-macos - path: artifacts/x86_64-macos/ - - - name: Upload x86-windows artifact - if: ${{ matrix.os == 'ubuntu-latest' }} - uses: actions/upload-artifact@v3 - with: - name: zls-x86-windows - path: artifacts/x86-windows/ - - - name: Upload x86-linux artifact - if: ${{ matrix.os == 'ubuntu-latest' }} - uses: actions/upload-artifact@v3 - with: - name: zls-x86-linux - path: artifacts/x86-linux/ - - - name: Upload aarch64-linux artifact - if: ${{ matrix.os == 'ubuntu-latest' }} - uses: actions/upload-artifact@v3 - with: - name: zls-aarch64-linux - path: artifacts/aarch64-linux/ - - - name: Upload aarch64-macos artifact - if: ${{ matrix.os == 'ubuntu-latest' }} - uses: actions/upload-artifact@v3 - with: - name: zls-aarch64-macos - path: artifacts/aarch64-macos/ - - - name: Beam to Felix - if: ${{ matrix.os == 'ubuntu-latest' && github.ref == 'refs/heads/master' && github.repository_owner == 'zigtools' }} - uses: easingthemes/ssh-deploy@v2.1.1 - env: - SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_PRIVKEY }} - ARGS: "-rltgoDzvO --delete" - SOURCE: "artifacts/" - REMOTE_HOST: ${{ secrets.WEBSITE_DEPLOY_HOST }} - REMOTE_USER: ${{ secrets.WEBSITE_DEPLOY_USER }} - TARGET: ${{ secrets.WEBSITE_DEPLOY_FOLDER }} +name: CI + +on: + push: + paths: + - "**.zig" + - "flake.*" + pull_request: + paths: + - "**.zig" + - "flake.*" + schedule: + - cron: "0 0 * * *" + workflow_dispatch: + +jobs: + build: + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + submodules: true + - uses: goto-bus-stop/setup-zig@v2 + with: + version: master + + - run: zig version + - run: zig env + + - name: Build + run: zig build + + - name: Build with Tracy + if: ${{ matrix.os != 'macos-latest' }} + run: zig build -Denable_tracy -Denable_tracy_allocation + + - name: Run Tests + run: zig build test + + - name: Build artifacts + if: ${{ matrix.os == 'ubuntu-latest' }} + run: | + declare -a targets=("x86_64-windows" "x86_64-linux" "x86_64-macos" "x86-windows" "x86-linux" "aarch64-linux" "aarch64-macos") + mkdir -p "artifacts/" + + for target in "${targets[@]}"; do + mkdir -p artifacts/$target + echo "Building target ${target}..." + if [ "${GITHUB_REF##*/}" == "master" ]; then + echo "Building safe" + zig build -Dtarget=${target} -Drelease-safe --prefix artifacts/${target}/ + else + echo "Building debug as action is not running on master" + zig build -Dtarget=${target} --prefix artifacts/${target}/ + fi + sed -e '1,5d' < README.md > artifacts/${target}/README.md + cp LICENSE artifacts/${target}/ + done + + - name: Upload x86_64-windows artifact + if: ${{ matrix.os == 'ubuntu-latest' }} + uses: actions/upload-artifact@v3 + with: + name: zls-x86_64-windows + path: artifacts/x86_64-windows/ + + - name: Upload x86_64-linux artifact + if: ${{ matrix.os == 'ubuntu-latest' }} + uses: actions/upload-artifact@v3 + with: + name: zls-x86_64-linux + path: artifacts/x86_64-linux/ + + - name: Upload x86_64-macos artifact + if: ${{ matrix.os == 'ubuntu-latest' }} + uses: actions/upload-artifact@v3 + with: + name: zls-x86_64-macos + path: artifacts/x86_64-macos/ + + - name: Upload x86-windows artifact + if: ${{ matrix.os == 'ubuntu-latest' }} + uses: actions/upload-artifact@v3 + with: + name: zls-x86-windows + path: artifacts/x86-windows/ + + - name: Upload x86-linux artifact + if: ${{ matrix.os == 'ubuntu-latest' }} + uses: actions/upload-artifact@v3 + with: + name: zls-x86-linux + path: artifacts/x86-linux/ + + - name: Upload aarch64-linux artifact + if: ${{ matrix.os == 'ubuntu-latest' }} + uses: actions/upload-artifact@v3 + with: + name: zls-aarch64-linux + path: artifacts/aarch64-linux/ + + - name: Upload aarch64-macos artifact + if: ${{ matrix.os == 'ubuntu-latest' }} + uses: actions/upload-artifact@v3 + with: + name: zls-aarch64-macos + path: artifacts/aarch64-macos/ + + - name: Beam to Felix + if: ${{ matrix.os == 'ubuntu-latest' && github.ref == 'refs/heads/master' && github.repository_owner == 'zigtools' }} + uses: easingthemes/ssh-deploy@v2.1.1 + env: + SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_PRIVKEY }} + ARGS: "-rltgoDzvO --delete" + SOURCE: "artifacts/" + REMOTE_HOST: ${{ secrets.WEBSITE_DEPLOY_HOST }} + REMOTE_USER: ${{ secrets.WEBSITE_DEPLOY_USER }} + TARGET: ${{ secrets.WEBSITE_DEPLOY_FOLDER }} + + - name: Install Nix + if: ${{ matrix.os == 'ubuntu-latest' }} + uses: cachix/install-nix-action@v18 + + - name: Install Cachix + if: ${{ matrix.os == 'ubuntu-latest' }} + uses: cachix/cachix-action@v12 + with: + name: zigtools + authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' + + - name: Build Nix flake package + if: ${{ matrix.os == 'ubuntu-latest' }} + run: nix build --print-build-logs diff --git a/flake.lock b/flake.lock index 21f8a55..9a93c55 100644 --- a/flake.lock +++ b/flake.lock @@ -1,21 +1,6 @@ { "nodes": { "flake-utils": { - "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_2": { "locked": { "lastModified": 1659877975, "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", @@ -110,7 +95,9 @@ }, "zig-overlay": { "inputs": { - "flake-utils": "flake-utils_2", + "flake-utils": [ + "flake-utils" + ], "nixpkgs": [ "nixpkgs" ] diff --git a/flake.nix b/flake.nix index 4a44b2e..00e9114 100644 --- a/flake.nix +++ b/flake.nix @@ -4,6 +4,7 @@ zig-overlay.url = "github:mitchellh/zig-overlay"; zig-overlay.inputs.nixpkgs.follows = "nixpkgs"; + zig-overlay.inputs.flake-utils.follows = "flake-utils"; gitignore.url = "github:hercules-ci/gitignore.nix"; gitignore.inputs.nixpkgs.follows = "nixpkgs";