From 6f40f9cfac6f30f26de7ac74f209411294e3c35d Mon Sep 17 00:00:00 2001 From: Aarnav Tale Date: Mon, 24 Mar 2025 16:47:21 -0400 Subject: [PATCH] feat: rework github actions --- .github/workflows/automated.yaml | 33 +++++++++++ .github/workflows/build.yaml | 70 ++++++++++++++++++++++ .github/workflows/nightly.yaml | 81 ++++++++++++++------------ .github/workflows/nix-update-lock.yaml | 20 ------- .github/workflows/nix.yaml | 24 -------- .github/workflows/publish.yaml | 46 --------------- .github/workflows/push.yaml | 44 -------------- .github/workflows/release.yaml | 55 +++++++++++++++++ .zed/settings.json | 6 ++ 9 files changed, 209 insertions(+), 170 deletions(-) create mode 100644 .github/workflows/automated.yaml create mode 100644 .github/workflows/build.yaml delete mode 100644 .github/workflows/nix-update-lock.yaml delete mode 100644 .github/workflows/nix.yaml delete mode 100644 .github/workflows/publish.yaml delete mode 100644 .github/workflows/push.yaml create mode 100644 .github/workflows/release.yaml diff --git a/.github/workflows/automated.yaml b/.github/workflows/automated.yaml new file mode 100644 index 0000000..eb85bef --- /dev/null +++ b/.github/workflows/automated.yaml @@ -0,0 +1,33 @@ +name: Automated +on: + schedule: + - cron: "0 8 * * 0" + workflow_dispatch: + +concurrency: + group: automation-${{ github.ref }} + cancel-in-progress: true + +permissions: + actions: write # Allow canceling in-progress runs + contents: read # Read access to the repository + pull-requests: write # Allow creating pull requests + +jobs: + flake-inputs: + name: flake-inputs + runs-on: ubuntu-latest + steps: + - name: Check out the repo + uses: actions/checkout@v4 + + - name: Install Nix + uses: DeterminateSystems/nix-installer-action@main + with: + determinate: true + + - uses: DeterminateSystems/update-flake-lock@main + with: + pr-title: "chore: update flake.lock" + pr-labels: | + automated diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 0000000..df6c2ec --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,70 @@ +name: Build +on: + push: + branches: + - "main" + pull_request: + +concurrency: + group: ci-${{ github.ref }} + cancel-in-progress: true + +permissions: + actions: write # Allow canceling in-progress runs + contents: read # Read access to the repository + +jobs: + native: + name: native + runs-on: ubuntu-latest + steps: + - name: Check out the repo + uses: actions/checkout@v4 + + - name: Install node.js + uses: actions/setup-node@v4 + with: + node-version: 22 + + - uses: pnpm/action-setup@v4 + name: Install pnpm + with: + version: 10 + run_install: false + + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + + - uses: actions/cache@v4 + name: Setup pnpm cache + with: + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Install dependencies + run: pnpm install + + - name: Build + run: pnpm build + + nix: + name: nix + runs-on: ubuntu-latest + steps: + - name: Check out the repo + uses: actions/checkout@v4 + + - name: Install Nix + uses: DeterminateSystems/nix-installer-action@main + with: + determinate: true + + - name: Check flake inputs + uses: DeterminateSystems/flake-checker-action@main + + - name: Check flake outputs + run: nix flake check --all-systems diff --git a/.github/workflows/nightly.yaml b/.github/workflows/nightly.yaml index b743a2d..8205b27 100644 --- a/.github/workflows/nightly.yaml +++ b/.github/workflows/nightly.yaml @@ -1,44 +1,53 @@ -name: Publish Nightly Docker Image +name: Nightly on: - schedule: - - cron: "0 8 * * *" - workflow_dispatch: + schedule: + - cron: "0 8 * * *" + workflow_dispatch: + +concurrency: + group: publish-nightly-${{ github.ref }} + cancel-in-progress: true + +permissions: + actions: write # Allow canceling in-progress runs + contents: read # Read access to the repository + packages: write # Write access to the container registry jobs: - publish: - name: Build and Publish Nightly - runs-on: ubuntu-latest - steps: - - name: Check out the repo - uses: actions/checkout@v4 + publish: + name: docker-publish + runs-on: ubuntu-latest + steps: + - name: Check out the repo + uses: actions/checkout@v4 - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 - - name: Log in to ghcr.io - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} + - name: Log in to ghcr.io + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} - - name: Docker Metadata - id: meta - uses: docker/metadata-action@v5 - with: - images: ghcr.io/${{ github.repository }} - tags: | - type=edge,branch=main + - name: Docker Metadata + id: meta + uses: docker/metadata-action@v5 + with: + images: ghcr.io/${{ github.repository }} + tags: | + type=edge,branch=main - - name: Build and push Docker image - uses: docker/build-push-action@v5 - with: - context: . - file: ./Dockerfile - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - platforms: linux/amd64, linux/arm64 + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: . + file: ./Dockerfile + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + platforms: linux/amd64, linux/arm64 diff --git a/.github/workflows/nix-update-lock.yaml b/.github/workflows/nix-update-lock.yaml deleted file mode 100644 index 897c653..0000000 --- a/.github/workflows/nix-update-lock.yaml +++ /dev/null @@ -1,20 +0,0 @@ -name: Update flake.lock -on: - workflow_dispatch: - schedule: - - cron: "0 0 * * 0" - -jobs: - update-flake-inputs: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: DeterminateSystems/nix-installer-action@main - - uses: DeterminateSystems/update-flake-lock@main - with: - pr-title: "chore: update flake.lock" - pr-labels: | - dependencies - automated - - uses: DeterminateSystems/flake-checker-action@main - - run: nix flake check --all-systems diff --git a/.github/workflows/nix.yaml b/.github/workflows/nix.yaml deleted file mode 100644 index 95ab4f9..0000000 --- a/.github/workflows/nix.yaml +++ /dev/null @@ -1,24 +0,0 @@ -name: Nix CI -on: - pull_request: - workflow_dispatch: - push: - branches: - - main - tags: - - v?[0-9]+.[0-9]+.[0-9]+* - -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -jobs: - nix-ci: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: DeterminateSystems/nix-installer-action@main - with: - determinate: true - - uses: DeterminateSystems/flake-checker-action@main - - run: nix flake check --all-systems diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml deleted file mode 100644 index f872ef3..0000000 --- a/.github/workflows/publish.yaml +++ /dev/null @@ -1,46 +0,0 @@ -name: Publish Docker Image -on: - push: - tags: - - "*" - -jobs: - publish: - name: Build and Publish - runs-on: ubuntu-latest - steps: - - name: Check out the repo - uses: actions/checkout@v4 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Log in to ghcr.io - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Docker Metadata - id: meta - uses: docker/metadata-action@v5 - with: - images: ghcr.io/${{ github.repository }} - tags: | - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - type=raw,value=latest,enable=false - - - name: Build and push Docker image - uses: docker/build-push-action@v5 - with: - context: . - file: ./Dockerfile - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - platforms: linux/amd64, linux/arm64 diff --git a/.github/workflows/push.yaml b/.github/workflows/push.yaml deleted file mode 100644 index b57ce04..0000000 --- a/.github/workflows/push.yaml +++ /dev/null @@ -1,44 +0,0 @@ -name: "Build" -on: - push: - branches: - - "main" - pull_request: - -jobs: - build: - name: Build - runs-on: ubuntu-latest - steps: - - name: Check out the repo - uses: actions/checkout@v4 - - - name: Install node.js - uses: actions/setup-node@v4 - with: - node-version: 22 - - - uses: pnpm/action-setup@v4 - name: Install pnpm - with: - version: 10 - run_install: false - - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - - - uses: actions/cache@v4 - name: Setup pnpm cache - with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - - name: Install dependencies - run: pnpm install - - - name: Build - run: pnpm build diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..a79166f --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,55 @@ +name: Release +on: + push: + tags: + - "*" + +concurrency: + group: publish-${{ github.ref }} + cancel-in-progress: true + +permissions: + actions: write # Allow canceling in-progress runs + contents: read # Read access to the repository + packages: write # Write access to the container registry + +jobs: + publish: + name: docker-publish + runs-on: ubuntu-latest + steps: + - name: Check out the repo + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to ghcr.io + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Docker Metadata + id: meta + uses: docker/metadata-action@v5 + with: + images: ghcr.io/${{ github.repository }} + tags: | + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=raw,value=latest,enable=false + + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: . + file: ./Dockerfile + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + platforms: linux/amd64, linux/arm64 diff --git a/.zed/settings.json b/.zed/settings.json index 9426ecb..fc38e77 100644 --- a/.zed/settings.json +++ b/.zed/settings.json @@ -7,5 +7,11 @@ "code_actions_on_format": { "source.fixAll.biome": true, "source.organizeImports.biome": true + }, + "languages": { + "YAML": { + "tab_size": 2, + "hard_tabs": false + } } }