diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b135f1c..21f7ebd 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,137 +1,120 @@ -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 +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 }} diff --git a/flake.lock b/flake.lock index 9a93c55..21f8a55 100644 --- a/flake.lock +++ b/flake.lock @@ -1,6 +1,21 @@ { "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=", @@ -95,9 +110,7 @@ }, "zig-overlay": { "inputs": { - "flake-utils": [ - "flake-utils" - ], + "flake-utils": "flake-utils_2", "nixpkgs": [ "nixpkgs" ] diff --git a/flake.nix b/flake.nix index 00e9114..4a44b2e 100644 --- a/flake.nix +++ b/flake.nix @@ -4,7 +4,6 @@ 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";