elna / .github /workflows /tests.yml
David Chu
ci: test and push to docker hub
43fe182 unverified
name: tests
on:
pull_request:
push:
branches:
- main
permissions:
contents: read
id-token: write
env:
IMAGE_NAME: hhschu/elna
UV_CACHE_DIR: /tmp/.uv-cache
jobs:
ruff-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run ruff check
uses: astral-sh/ruff-action@v3
ruff-format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run ruff format
uses: astral-sh/ruff-action@v3
with:
args: "format --check --diff"
pyright:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
version: "latest"
python-version: 3.12
- name: Run type check
run: uv run --frozen --with pyright pyright
build-and-push-image:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ vars.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.IMAGE_NAME }}
tags: |
type=raw,value=latest,enable={{is_default_branch}}
type=ref,event=tag
type=ref,event=pr
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
push: ${{ github.ref == 'refs/heads/main' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}