Skip to content

chore: ⬆️ frontend dependencies update #23

chore: ⬆️ frontend dependencies update

chore: ⬆️ frontend dependencies update #23

Workflow file for this run

name: CI
on:
pull_request:
push:
branches:
- main
tags:
- "*"
workflow_dispatch:
permissions:
contents: read
env:
CARGO_TERM_COLOR: always
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
rust:
name: Rust Checks
runs-on: ubuntu-latest
services:
valkey:
image: valkey/valkey:8.0.1
ports:
- 6379:6379
options: >-
--health-cmd "sh -c 'valkey-cli ping || redis-cli ping'"
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Install Rust toolchain
run: |
rustup toolchain install stable --profile minimal --component clippy --component rustfmt
rustup default stable
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
key: cargo-registry-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
cargo-registry-${{ runner.os }}-
- name: Cache cargo build
uses: actions/cache@v4
with:
path: target
key: cargo-target-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
cargo-target-${{ runner.os }}-
- name: Format check
run: cargo fmt --all -- --check
- name: Clippy
run: cargo clippy --workspace --all-targets --all-features -- -D warnings
- name: Test
env:
VALKEY_URL: redis://127.0.0.1:6379
run: cargo test --workspace --all-features
frontend:
name: Frontend Lint
runs-on: ubuntu-latest
defaults:
run:
working-directory: frontend
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: "lts/*"
cache: npm
cache-dependency-path: frontend/package-lock.json
- name: Install dependencies
run: npm ci
- name: Lint
run: npm run lint
docker-amd64:
name: Docker Build AMD64
runs-on: ubuntu-latest
needs:
- rust
- frontend
if: github.event_name != 'pull_request' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/'))
permissions:
contents: read
packages: write
outputs:
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Docker metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=ref,event=branch
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=sha
- name: Generate AMD64 tags
id: amd64-tags
run: |
TAGS="${{ steps.meta.outputs.tags }}"
AMD64_TAGS=$(echo "$TAGS" | sed 's/$/-amd64/')
echo "tags<<EOF" >> $GITHUB_OUTPUT
echo "$AMD64_TAGS" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Build and push AMD64
uses: docker/build-push-action@v6
with:
context: .
platforms: linux/amd64
push: true
tags: ${{ steps.amd64-tags.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
provenance: false
cache-from: type=gha,scope=amd64
cache-to: type=gha,mode=max,scope=amd64
docker-arm64:
name: Docker Build ARM64
runs-on: ubuntu-24.04-arm
needs:
- rust
- frontend
if: github.event_name != 'pull_request' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/'))
permissions:
contents: read
packages: write
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Docker metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=ref,event=branch
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=sha
- name: Generate ARM64 tags
id: arm64-tags
run: |
TAGS="${{ steps.meta.outputs.tags }}"
ARM64_TAGS=$(echo "$TAGS" | sed 's/$/-arm64/')
echo "tags<<EOF" >> $GITHUB_OUTPUT
echo "$ARM64_TAGS" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Build and push ARM64
uses: docker/build-push-action@v6
with:
context: .
platforms: linux/arm64
push: true
tags: ${{ steps.arm64-tags.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
provenance: false
cache-from: type=gha,scope=arm64
cache-to: type=gha,mode=max,scope=arm64
docker-manifest:
name: Docker Multi-arch Manifest
runs-on: ubuntu-latest
needs:
- docker-amd64
- docker-arm64
if: github.event_name != 'pull_request' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/'))
permissions:
contents: read
packages: write
steps:
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Docker metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=ref,event=branch
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=sha
- name: Create and push multi-arch manifest
run: |
echo "${{ steps.meta.outputs.tags }}" | while IFS= read -r TAG; do
[ -z "$TAG" ] && continue
echo "Creating manifest for: $TAG"
docker buildx imagetools create -t "$TAG" \
"${TAG}-amd64" \
"${TAG}-arm64"
done