summaryrefslogtreecommitdiff
path: root/.github/workflows/meshmc-nix.yml
diff options
context:
space:
mode:
authorMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-02 19:30:47 +0300
committerMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-02 19:31:15 +0300
commitb1e34e861b5d732afe828d58aad2c638135061fd (patch)
tree6ab65910221ff147b1fdc49299418d8af04d0a7b /.github/workflows/meshmc-nix.yml
parentc965a4ebddf98c368edd905324a4ecd79b2aae55 (diff)
downloadProject-Tick-b1e34e861b5d732afe828d58aad2c638135061fd.tar.gz
Project-Tick-b1e34e861b5d732afe828d58aad2c638135061fd.zip
NOISSUE Add GitHub workflows for Project Tick project
- Create CodeQL analysis workflow for security checks on meshmc codebase. - Add container build workflow for meshmc using Podman and Buildah. - Implement scheduled flake update workflow for Nix dependencies. - Introduce merge blocking PR automation to manage dependent PRs. - Set up Nix build workflow for meshmc with multi-platform support. - Add release workflow for publishing MeshMC artifacts on GitHub. - Create CI workflow for tomlplusplus library with multi-compiler support. - Implement CI workflow for uvim with various feature sets and architectures. - Add .gitignore to exclude build artifacts and IDE files. - Create .gitattributes files for various submodules to manage line endings and diff settings. - Add post-receive hook for mirroring pushes to multiple forges. - Include .gitignore files for images4docker and other submodules to manage temporary files. Signed-off-by: Mehmet Samet Duman <yongdohyun@projecttick.org>
Diffstat (limited to '.github/workflows/meshmc-nix.yml')
-rw-r--r--.github/workflows/meshmc-nix.yml122
1 files changed, 122 insertions, 0 deletions
diff --git a/.github/workflows/meshmc-nix.yml b/.github/workflows/meshmc-nix.yml
new file mode 100644
index 0000000000..21af121a34
--- /dev/null
+++ b/.github/workflows/meshmc-nix.yml
@@ -0,0 +1,122 @@
+name: "MeshMC: Nix"
+
+concurrency:
+ group: meshmc-nix-${{ github.ref }}
+ cancel-in-progress: true
+
+on:
+ push:
+ branches:
+ - "master"
+ - "release-*"
+ tags:
+ - "*"
+ paths:
+ - "meshmc/**.cpp"
+ - "meshmc/**.h"
+ - "meshmc/**.java"
+ - "meshmc/**.ui"
+ - "meshmc/**.md"
+ - "meshmc/**.nix"
+ - "meshmc/nix/**"
+ - "meshmc/flake.lock"
+ - "meshmc/buildconfig/**"
+ - "meshmc/cmake/**"
+ - "meshmc/launcher/**"
+ - "meshmc/libraries/**"
+ - "meshmc/branding/**"
+ - "meshmc/tests/**"
+ - "meshmc/CMakeLists.txt"
+ - ".github/workflows/meshmc-nix.yml"
+ pull_request:
+ paths:
+ - "meshmc/**.cpp"
+ - "meshmc/**.h"
+ - "meshmc/**.java"
+ - "meshmc/**.ui"
+ - "meshmc/**.md"
+ - "meshmc/**.nix"
+ - "meshmc/nix/**"
+ - "meshmc/flake.lock"
+ - "meshmc/buildconfig/**"
+ - "meshmc/cmake/**"
+ - "meshmc/launcher/**"
+ - "meshmc/libraries/**"
+ - "meshmc/branding/**"
+ - "meshmc/tests/**"
+ - "meshmc/CMakeLists.txt"
+ - ".github/workflows/meshmc-nix.yml"
+ workflow_dispatch:
+
+permissions: {}
+
+env:
+ DEBUG: ${{ github.ref_type != 'tag' }}
+
+jobs:
+ build:
+ name: Build (${{ matrix.system }})
+
+ permissions:
+ contents: read
+
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - os: ubuntu-22.04
+ system: x86_64-linux
+
+ - os: ubuntu-22.04-arm
+ system: aarch64-linux
+
+ - os: macos-14
+ system: aarch64-darwin
+
+ runs-on: ${{ matrix.os }}
+
+ defaults:
+ run:
+ working-directory: meshmc
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v6
+
+ - name: Install Nix
+ uses: cachix/install-nix-action@v31
+
+ - name: Setup Nix Magic Cache
+ if: ${{ github.event_name == 'pull_request' }}
+ uses: DeterminateSystems/magic-nix-cache-action@v13
+ with:
+ diagnostic-endpoint: ""
+ use-flakehub: false
+
+ - name: Setup Cachix
+ if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }}
+ uses: cachix/cachix-action@v17
+ with:
+ name: meshmc
+ authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
+
+ - name: Run Flake checks
+ run: |
+ nix flake check --print-build-logs --show-trace
+
+ - name: Build debug package
+ if: ${{ env.DEBUG == 'true' }}
+ run: |
+ nix build \
+ --no-link --print-build-logs --print-out-paths \
+ .#meshmc-debug >> "$GITHUB_STEP_SUMMARY"
+
+ - name: Build release package
+ if: ${{ env.DEBUG == 'false' }}
+ env:
+ TAG: ${{ github.ref_name }}
+ SYSTEM: ${{ matrix.system }}
+ run: |
+ nix build --no-link --print-out-paths .#meshmc \
+ | tee -a "$GITHUB_STEP_SUMMARY" \
+ | xargs cachix pin meshmc "$TAG"-"$SYSTEM"