From 73157d1c6c875e3976ee30c4502570f93b0d0a3b Mon Sep 17 00:00:00 2001 From: Rodney Osodo Date: Wed, 11 Jun 2025 09:44:21 +0300 Subject: [PATCH] chore(CI): add rust and ts CI and release pipelines Add dependabot config which autoupdates dependencies add release config which creates a release based on tag push Added rust and typescript ci integrations --- .github/dependabot.yaml | 31 ++++++++++++++++ .github/workflows/release.yaml | 65 ++++++++++++++++++++++++++++++++++ .github/workflows/rs-ci.yaml | 45 +++++++++++++++++++++++ .github/workflows/ts-ci.yaml | 33 +++++++++++++++++ src-tauri/Cargo.toml | 1 - 5 files changed, 174 insertions(+), 1 deletion(-) create mode 100644 .github/dependabot.yaml create mode 100644 .github/workflows/release.yaml create mode 100644 .github/workflows/rs-ci.yaml create mode 100644 .github/workflows/ts-ci.yaml diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml new file mode 100644 index 0000000..cc8dfbc --- /dev/null +++ b/.github/dependabot.yaml @@ -0,0 +1,31 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "./.github/workflows" + schedule: + interval: "monthly" + day: "sunday" + groups: + gh-dependency: + patterns: + - "*" + + - package-ecosystem: "bun" + directory: "/" + schedule: + interval: "monthly" + day: "sunday" + groups: + bun-dependency: + patterns: + - "*" + + - package-ecosystem: "cargo" + directory: "./src-tauri" + schedule: + interval: "monthly" + day: "sunday" + groups: + cargo-dependency: + patterns: + - "*" diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..6c775f0 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,65 @@ +name: "Release" + +on: + workflow_dispatch: + push: + tags: + - "*" + +jobs: + publish: + permissions: + contents: write + strategy: + fail-fast: false + matrix: + include: + - platform: "macos-latest" # for Arm based macs (M1 and above). + args: "--target aarch64-apple-darwin" + - platform: "macos-latest" # for Intel based macs. + args: "--target x86_64-apple-darwin" + - platform: "ubuntu-22.04" # for Tauri v1 you could replace this with ubuntu-20.04. + args: "" + - platform: "windows-latest" + args: "" + + runs-on: ${{ matrix.platform }} + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: setup node + uses: actions/setup-node@v4 + with: + node-version: lts/* + + - name: Setup Bun + uses: oven-sh/setup-bun@v2 + with: + bun-version: latest + + - name: install Rust stable + uses: dtolnay/rust-toolchain@stable + with: + # Those targets are only used on macos runners so it's in an `if` to slightly speed up windows and linux builds. + targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }} + + - name: install dependencies (ubuntu only) + if: matrix.platform == 'ubuntu-22.04' + run: | + sudo apt-get update + sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf + + - name: install frontend dependencies + run: bun install + + - uses: tauri-apps/tauri-action@v0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tagName: v__VERSION__ + releaseName: "sqwerk v__VERSION__" + releaseBody: "See the assets to download this version and install." + releaseDraft: true + prerelease: false + args: ${{ matrix.args }} diff --git a/.github/workflows/rs-ci.yaml b/.github/workflows/rs-ci.yaml new file mode 100644 index 0000000..709f7e3 --- /dev/null +++ b/.github/workflows/rs-ci.yaml @@ -0,0 +1,45 @@ +name: Rust CI + +on: + workflow_dispatch: + push: + branches: + - main + paths: + - "src-tauri/**" + - ".github/**" + pull_request: + branches: + - main + paths: + - "src-tauri/**" + - ".github/**" +env: + CARGO_TERM_COLOR: always + +jobs: + rust-ci: + runs-on: ubuntu-latest + + defaults: + run: + working-directory: ./src-tauri + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Check formatting + run: cargo fmt --all -- --check + + - name: Run linter + run: cargo clippy -- -D warnings + + - name: Check cargo + run: cargo check --release --all-targets --all-features + + - name: Run tests + run: cargo test --verbose + + - name: Build for all features + run: cargo build --release --all-features diff --git a/.github/workflows/ts-ci.yaml b/.github/workflows/ts-ci.yaml new file mode 100644 index 0000000..bae3e45 --- /dev/null +++ b/.github/workflows/ts-ci.yaml @@ -0,0 +1,33 @@ +name: TS CI + +on: + workflow_dispatch: + push: + branches: + - main + paths-ignore: + - "src-tauri/**" + pull_request: + branches: + - main + paths-ignore: + - "src-tauri/**" + +jobs: + ts-ci: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Bun + uses: oven-sh/setup-bun@v2 + with: + bun-version: latest + + - name: Install Dependencies + run: bun install + + - name: Run Lint + run: bun run lint diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index d3f0d17..78fb67b 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -22,4 +22,3 @@ tauri = { version = "2", features = [] } tauri-plugin-opener = "2" serde = { version = "1", features = ["derive"] } serde_json = "1" -