From f5226adccd8e056ed643b0b58f88f6cb94dff719 Mon Sep 17 00:00:00 2001 From: tesarlukas Date: Sun, 18 Aug 2024 20:32:29 +0200 Subject: [PATCH] chore: add GitHug Actions workflows --- .github/dependabot.yml | 28 +++++++++++ .github/workflows/dependabot-automerge.yml | 34 +++++++++++++ .github/workflows/lint-js.yml | 46 ++++++++++++++++++ .github/workflows/lint-rs.yml | 55 ++++++++++++++++++++++ 4 files changed, 163 insertions(+) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/dependabot-automerge.yml create mode 100644 .github/workflows/lint-js.yml create mode 100644 .github/workflows/lint-rs.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..9edd6e0 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,28 @@ +version: 2 +updates: + # Enable version updates for Node.js dependencies + - package-ecosystem: "npm" + directory: "/" + schedule: + interval: "weekly" + allow: + - dependency-type: "all" + groups: + all: + patterns: + - "*" + ignore: + - dependency-name: "eslint" + versions: ">= 9" + + # Enable version updates for rust + - package-ecosystem: "cargo" + directory: "/src-tauri" + schedule: + interval: "weekly" + allow: + - dependency-type: "all" + groups: + all: + patterns: + - "*" diff --git a/.github/workflows/dependabot-automerge.yml b/.github/workflows/dependabot-automerge.yml new file mode 100644 index 0000000..824ef82 --- /dev/null +++ b/.github/workflows/dependabot-automerge.yml @@ -0,0 +1,34 @@ +# Automatically squashes and merges Dependabot dependency upgrades if tests pass + +name: Dependabot Auto-merge + +on: pull_request_target + +permissions: + pull-requests: write + contents: write + +jobs: + dependabot: + runs-on: ubuntu-latest + + if: ${{ github.actor == 'dependabot[bot]' }} + steps: + - name: Fetch Dependabot metadata + id: dependabot-metadata + uses: dependabot/fetch-metadata@v1.3.3 + with: + github-token: "${{ secrets.GITHUB_TOKEN }}" + + - name: Approve Dependabot PR + run: gh pr review --approve "$PR_URL" + env: + PR_URL: ${{ github.event.pull_request.html_url }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Auto-merge (squash) Dependabot PR + if: ${{ steps.dependabot-metadata.outputs.update-type != 'version-update:semver-major' }} + run: gh pr merge --auto --squash "$PR_URL" + env: + PR_URL: ${{ github.event.pull_request.html_url }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/lint-js.yml b/.github/workflows/lint-js.yml new file mode 100644 index 0000000..4d64a0f --- /dev/null +++ b/.github/workflows/lint-js.yml @@ -0,0 +1,46 @@ +# Installs Node.js dependencies and pnpm, and checks formatting + linting + +name: Lint Node.js + +on: + push: + branches: + - main + pull_request: + paths-ignore: + - "src-tauri/**" + - "README.md" + +jobs: + build: + strategy: + fail-fast: true + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + + runs-on: ${{ matrix.os }} + + steps: + - name: Disable git core.autocrlf on Windows + if: matrix.os == 'windows-latest' + run: git config --global core.autocrlf false + + - name: Checkout repository code + uses: actions/checkout@v4 + + - name: Set up pnpm package manager + uses: pnpm/action-setup@v4 + with: + version: latest + + - name: Set up Node.js v22 + uses: actions/setup-node@v3 + with: + node-version: 22 + cache: "pnpm" + + - name: Install dependencies from lockfile + run: pnpm install --frozen-lockfile + + - name: Run lint step + run: pnpm lint diff --git a/.github/workflows/lint-rs.yml b/.github/workflows/lint-rs.yml new file mode 100644 index 0000000..00d7803 --- /dev/null +++ b/.github/workflows/lint-rs.yml @@ -0,0 +1,55 @@ +# Installs Rust and checks formatting + linting + +name: Lint Rust + +on: + push: + branches: + - main + pull_request: + paths-ignore: + - "src/**" + - "package.json" + - "package-lock.json" + - "yarn.lock" + - "pnpm-lock.yaml" + - "README.md" + +jobs: + build: + strategy: + fail-fast: true + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + + runs-on: ${{ matrix.os }} + + steps: + - name: Disable git core.autocrlf on Windows + if: matrix.os == 'windows-latest' + run: git config --global core.autocrlf false + + - name: Checkout repository code + uses: actions/checkout@v3 + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + with: + components: rustfmt, clippy + + - name: Install Linux dependencies + if: matrix.os == 'ubuntu-latest' + run: | + sudo apt-get update + sudo apt install libdbus-1-dev libwebkit2gtk-4.0-dev build-essential curl wget libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev + + - name: Create empty 'out' directory + run: mkdir out + + - name: Run rustfmt check + run: cargo fmt --all -- --check + working-directory: src-tauri + + - name: Run clippy check and deny warnings + run: cargo clippy --all-targets --all-features -- -D warnings + working-directory: src-tauri