summaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/autobot.yaml31
-rw-r--r--.github/workflows/ci.yaml87
-rw-r--r--.github/workflows/clippy.yaml66
-rw-r--r--.github/workflows/docker.yaml82
-rw-r--r--.github/workflows/update-flake.yaml44
5 files changed, 154 insertions, 156 deletions
diff --git a/.github/workflows/autobot.yaml b/.github/workflows/autobot.yaml
index f1ebe4e..129eb80 100644
--- a/.github/workflows/autobot.yaml
+++ b/.github/workflows/autobot.yaml
@@ -1,31 +1,34 @@
-name: Auto-merge Dependabot
+name: "Auto-merge Dependabot"
-on: pull_request
+on:
+ pull_request:
jobs:
automerge:
- name: Check and merge PR
- if: github.actor == 'dependabot[bot]'
+ name: "Check and merge PR"
- runs-on: ubuntu-latest
+ if: ${{ github.actor == 'dependabot[bot]' }}
+
+ runs-on: "ubuntu-latest"
steps:
- - name: Generate GitHub App token
- uses: actions/create-github-app-token@v1
- id: app-token
+ - name: "Generate GitHub App token"
+ uses: "actions/create-github-app-token@v1"
+ id: "app-token"
with:
app-id: ${{ vars.APP_ID }}
private-key: ${{ secrets.PRIVATE_KEY }}
- - name: Fetch metadata
- uses: dependabot/fetch-metadata@v2
- id: metadata
+ - name: "Fetch metadata"
+ uses: "dependabot/fetch-metadata@v2"
+ id: "metadata"
with:
github-token: ${{ steps.app-token.outputs.token }}
- - name: Enable auto-merge
+ - name: "Enable auto-merge"
if: ${{ steps.metadata.outputs.update-type == 'version-update:semver-patch' || steps.metadata.outputs.update-type == 'version-update:semver-minor' }}
- run: gh pr merge --auto --squash "$PR"
env:
- PR: ${{ github.event.pull_request.html_url }}
GH_TOKEN: ${{ steps.app-token.outputs.token }}
+ PR: ${{ github.event.pull_request.html_url }}
+ run: |
+ gh pr merge --auto --squash "$PR"
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index f084a2a..68f9f35 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -1,8 +1,8 @@
-name: CI
+name: "CI"
on:
push:
- branches: [main]
+ branches: [ "main" ]
paths:
- "**.nix"
- "**.rs"
@@ -18,71 +18,64 @@ on:
jobs:
build:
- name: Build
+ name: "Build (${{ matrix.os }})"
strategy:
fail-fast: false
matrix:
- os: [macos-latest, windows-latest]
+ include:
+ - os: "ubuntu-latest"
+ use-nix: true
+ - os: "windows-latest"
+ use-nix: false
runs-on: ${{ matrix.os }}
steps:
- - name: Checkout repository
- uses: actions/checkout@v4
+ - name: "Checkout repository"
+ uses: "actions/checkout@v4"
- - name: Install Rust
- uses: actions-rust-lang/setup-rust-toolchain@v1
+ - name: "Install Nix"
+ if: ${{ matrix.use-nix }}
+ uses: "cachix/install-nix-action@v30"
- - name: Run build
- run: |
- cargo build --locked --release
-
- nix:
- name: Nix
-
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout repository
- uses: actions/checkout@v4
-
- - name: Install Nix
- uses: DeterminateSystems/nix-installer-action@v13
+ - name: "Setup Nix cache"
+ if: ${{ matrix.use-nix }}
+ uses: "DeterminateSystems/magic-nix-cache-action@v8"
- - name: Setup Nix cache
- uses: DeterminateSystems/magic-nix-cache-action@v7
+ - name: "Install Rust"
+ if: ${{ !matrix.use-nix }}
+ uses: "actions-rust-lang/setup-rust-toolchain@v1"
- - name: Run flake checks
+ - name: "Run cargo build"
+ if: ${{ !matrix.use-nix }}
run: |
- nix build --print-build-logs --show-trace
-
- rustfmt:
- name: Rustfmt
-
- runs-on: ubuntu-latest
+ cargo build --locked --release
- steps:
- - name: Checkout repository
- uses: actions/checkout@v4
+ - name: "Evaluate flake.nix"
+ if: ${{ matrix.use-nix }}
+ run: nix flake check --no-build --show-trace
- - name: Install Rust
- uses: actions-rust-lang/setup-rust-toolchain@v1
- with:
- components: rustfmt
+ - name: "Run nix build"
+ if: ${{ matrix.use-nix }}
+ run: |
+ nix build --print-build-logs
- - name: Run rustfmt
- uses: actions-rust-lang/rustfmt@v1
+ - name: "Build Flake checks"
+ if: ${{ matrix.os == 'ubuntu-latest' }}
+ run: |
+ nix flake check --print-build-logs
release-gate:
- name: CI Release gate
- needs: [build, rustfmt, nix]
+ name: "CI Release gate"
+ needs: [ "build" ]
if: ${{ always() }}
- runs-on: ubuntu-latest
+ runs-on: "ubuntu-latest"
steps:
- - name: Exit with error
- if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')
- run: exit 1
+ - name: "Exit with error"
+ if: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }}
+ run: |
+ exit 1
diff --git a/.github/workflows/clippy.yaml b/.github/workflows/clippy.yaml
index cd99256..138e418 100644
--- a/.github/workflows/clippy.yaml
+++ b/.github/workflows/clippy.yaml
@@ -1,56 +1,54 @@
-name: Clippy
+name: "Clippy"
on:
push:
- branches: [main]
+ branches: [ "main" ]
paths:
- - 'Cargo.toml'
- - 'Cargo.lock'
- - '**.rs'
+ - "**.rs"
+ - "**.lock"
+ - "Cargo.toml"
+ - "flake.nix"
+
+ - ".github/workflows/clippy.yaml"
pull_request:
paths:
- - 'Cargo.toml'
- - 'Cargo.lock'
- - '**.rs'
+ - "**.rs"
+ - "**.lock"
+ - "Cargo.toml"
+ - "flake.nix"
+
+ - ".github/workflows/clippy.yaml"
workflow_dispatch:
jobs:
clippy:
- name: Run scan
+ name: "Run scan"
- runs-on: ubuntu-latest
+ runs-on: "ubuntu-latest"
permissions:
- security-events: write
+ contents: "read"
+ security-events: "write"
steps:
- - name: Checkout repository
- uses: actions/checkout@v4
+ - name: "Checkout repository"
+ uses: "actions/checkout@v4"
- - name: Install Rust
- uses: actions-rust-lang/setup-rust-toolchain@v1
- with:
- components: clippy
+ - name: "Install Nix"
+ uses: "cachix/install-nix-action@v30"
- - name: Install SARIF tools
- run: |
- cargo install clippy-sarif sarif-fmt
+ - name: "Setup Nix cache"
+ uses: "DeterminateSystems/magic-nix-cache-action@v8"
- - name: Fetch Cargo deps
+ - name: "Run Clippy"
+ id: "clippy-run"
run: |
- cargo fetch --locked
+ nix build --print-build-logs .#checks.x86_64-linux.clippy-sarif
+ [ -L result ] || exit 1
+ echo "sarif-file=$(readlink -f result)" >> "$GITHUB_OUTPUT"
- - name: Run Clippy
- continue-on-error: true
- run: |
- cargo clippy \
- --all-features \
- --all-targets \
- --message-format=json \
- | clippy-sarif | tee /tmp/clippy.sarif | sarif-fmt
-
- - name: Upload results
- uses: github/codeql-action/upload-sarif@v3
+ - name: "Upload results"
+ uses: "github/codeql-action/upload-sarif@v3"
with:
- sarif_file: /tmp/clippy.sarif
+ sarif_file: ${{ steps.clippy-run.outputs.sarif-file }}
wait-for-processing: true
diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml
index 0bb28ad..fe8cffd 100644
--- a/.github/workflows/docker.yaml
+++ b/.github/workflows/docker.yaml
@@ -1,8 +1,8 @@
-name: Docker
+name: "Docker"
on:
push:
- branches: [main]
+ branches: [ "main" ]
paths:
- "**.nix"
- "**.rs"
@@ -18,27 +18,27 @@ on:
jobs:
build:
- name: Build image
+ name: "Build image"
strategy:
fail-fast: false
matrix:
- arch: [amd64, arm64]
+ arch: [ "amd64", "arm64" ]
- runs-on: ubuntu-latest
+ runs-on: "ubuntu-latest"
steps:
- - name: Checkout repository
- uses: actions/checkout@v4
+ - name: "Checkout repository"
+ uses: "actions/checkout@v4"
- - name: Install Nix
- uses: DeterminateSystems/nix-installer-action@v13
+ - name: "Install Nix"
+ uses: "cachix/install-nix-action@v30"
- - name: Setup Nix cache
- uses: DeterminateSystems/magic-nix-cache-action@v7
+ - name: "Setup Nix cache"
+ uses: "DeterminateSystems/magic-nix-cache-action@v8"
- - name: Build Docker image
- id: build
+ - name: "Build Docker image"
+ id: "build"
env:
ARCH: ${{ matrix.arch }}
run: |
@@ -51,67 +51,69 @@ jobs:
[ ! -L result ] && exit 1
echo "path=$(readlink -f ./result)" >> "$GITHUB_OUTPUT"
- - name: Upload image
- uses: actions/upload-artifact@v4
+ - name: "Upload image"
+ uses: "actions/upload-artifact@v4"
with:
- name: container-${{ matrix.arch }}
+ name: "container-${{ matrix.arch }}"
path: ${{ steps.build.outputs.path }}
- if-no-files-found: error
+ if-no-files-found: "error"
retention-days: 1
release-gate:
- name: Docker Release Gate
- needs: build
+ name: "Docker Release Gate"
+ needs: [ "build" ]
- if: always()
+ if: ${{ always() }}
- runs-on: ubuntu-latest
+ runs-on: "ubuntu-latest"
steps:
- - name: Exit with error
- if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')
- run: exit 1
+ - name: "Exit with error"
+ if: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }}
+ run: |
+ exit 1
push:
- name: Push image
- needs: release-gate
+ name: "Push image"
+ needs: [ "release-gate" ]
- if: github.event_name == 'push'
+ if: ${{ github.event_name == 'push' }}
- runs-on: ubuntu-latest
+ runs-on: "ubuntu-latest"
permissions:
- packages: write
+ contents: "read"
+ packages: "write"
env:
- REGISTRY: ghcr.io
+ REGISTRY: "ghcr.io"
USERNAME: ${{ github.actor }}
- IMAGE_NAME: teawie-bot
+ IMAGE_NAME: "chill-discord-bot"
steps:
- - name: Checkout repository
- uses: actions/checkout@v4
+ - name: "Checkout repository"
+ uses: "actions/checkout@v4"
- - name: Download images
- uses: actions/download-artifact@v4
+ - name: "Download images"
+ uses: "actions/download-artifact@v4"
with:
- path: images
+ path: "images"
- - name: Login to registry
- uses: docker/login-action@v3
+ - name: "Login to registry"
+ uses: "docker/login-action@v3"
with:
registry: ${{ env.REGISTRY }}
username: ${{ env.USERNAME }}
password: ${{ github.token }}
- - name: Push to registry
+ - name: "Push to registry"
env:
TAG: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
run: |
architectures=("amd64" "arm64")
for arch in "${architectures[@]}"; do
docker load < images/container-"$arch"/*.tar.gz
- docker tag teawie-bot:latest-"$arch" "$TAG"-"$arch"
+ docker tag chill-discord-bot:latest-"$arch" "$TAG"-"$arch"
docker push "$TAG"-"$arch"
done
diff --git a/.github/workflows/update-flake.yaml b/.github/workflows/update-flake.yaml
index 4473811..22e498f 100644
--- a/.github/workflows/update-flake.yaml
+++ b/.github/workflows/update-flake.yaml
@@ -1,49 +1,51 @@
-name: Update flake.lock
+name: "Update flake.lock"
on:
schedule:
- # run every saturday
- - cron: "0 0 * * 6"
+ # Run on the 1st and 15th of every month
+ - cron: "0 0 1,15 * *"
workflow_dispatch:
jobs:
update:
- name: Run update & create PR
+ name: "Run update & create PR"
- runs-on: ubuntu-latest
+ runs-on: "ubuntu-latest"
steps:
- - name: Generate GitHub App token
- uses: actions/create-github-app-token@v1
- id: app-token
+ - name: "Generate GitHub App token"
+ uses: "actions/create-github-app-token@v1"
+ id: "app-token"
with:
app-id: ${{ vars.APP_ID }}
private-key: ${{ secrets.PRIVATE_KEY }}
- - name: Checkout repository
- uses: actions/checkout@v4
+ - name: "Checkout repository"
+ uses: "actions/checkout@v4"
with:
token: ${{ steps.app-token.outputs.token }}
- - name: Install Nix
- uses: DeterminateSystems/nix-installer-action@v14
+ - name: "Install Nix"
+ uses: "cachix/install-nix-action@v30"
- - name: Run update
- run: nix flake update
+ - name: "Run update"
+ run: |
+ nix flake update
- - name: Create pull request
- id: pull-request
- uses: peter-evans/create-pull-request@v7
+ - name: "Create pull request"
+ id: "pull-request"
+ uses: "peter-evans/create-pull-request@v7"
with:
- branch: update-flake-lock
+ branch: "update-flake-lock"
commit-message: "nix: update flake.lock"
title: "nix: update flake.lock"
token: ${{ steps.app-token.outputs.token }}
sign-commits: true
- - name: Enable auto-merge
+ - name: "Enable auto-merge"
if: ${{ env.PR_ID != '' }}
- run: gh pr merge --auto --squash "$PR_ID"
env:
- PR_ID: ${{ steps.pull-request.outputs.pull-request-number }}
GH_TOKEN: ${{ steps.app-token.outputs.token }}
+ PR_ID: ${{ steps.pull-request.outputs.pull-request-number }}
+ run: |
+ gh pr merge --auto --squash "$PR_ID"