Skip to content

[ci] github actions

[ci] github actions #1

Workflow file for this run

name: CI
on:
push:
workflow_dispatch:
env:
REGISTRY: ghcr.io
IMAGE_NAME: japan7/nanapi
MAIN_BRANCH: main
jobs:
check:
if: startsWith(github.ref, 'refs/tags/') != true
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: ~/.cache/pypoetry
key: ${{ runner.os }}-poetry-${{ hashFiles('**/pyproject.toml', '**/poetry.lock') }}
restore-keys: |
${{ runner.os }}-poetry-
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: poetry install
run: |
poetry install
cp nanapi/example.local_settings.py nanapi/local_settings.py
- run: poetry run pyright
- run: poetry run ruff check nanapi/
if: always()
- uses: sarisia/actions-status-discord@v1
if: failure()
with:
webhook: ${{ secrets.DISCORD_WEBHOOK }}
docker-deploy:
if: startsWith(github.ref, 'refs/heads/renovate/') != true
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Docker buildx
uses: docker/setup-buildx-action@v3
- name: Log into registry ${{ env.REGISTRY }}
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract Docker metadata
id: meta
run: .github/workflows/meta.py
- name: Build and push Docker image
id: build-and-push
uses: docker/build-push-action@v5
with:
context: .
platforms: linux/arm64
push: true
tags: ${{ steps.meta.outputs.tags }}
cache-from: |
type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.meta.outputs.branch }}
cache-to: type=inline
- name: Set deploy environment
id: deploy_env
run: .github/workflows/deploy_env.py ${{ steps.build-and-push.outputs.digest }}
- name: Update nanak8s
run: |
git clone --depth 1 "https://github.com/Japan7/nanak8s.git" nanak8s
cd nanak8s/
yq e -i '(.environments.${{ steps.deploy_env.outputs.name }}.values[] | select(has("tag"))).tag = "${{ steps.deploy_env.outputs.tag }}"' apps/nanapi/environments.yaml
git add apps/nanapi/environments.yaml
git config user.name 'github-actions[bot]'
git config user.email 'github-actions[bot]@users.noreply.github.com'
git commit -m "[CI] Update nanapi-${{ steps.deploy_env.outputs.name }} to ${{ steps.deploy_env.outputs.pretty }}" -m "https://github.com/$GITHUB_REPOSITORY/commit/$GITHUB_SHA"
git push
- uses: sarisia/actions-status-discord@v1
if: failure()
with:
webhook: ${{ secrets.DISCORD_WEBHOOK }}