53 lines
1.8 KiB
YAML
53 lines
1.8 KiB
YAML
name: CI
|
||
|
||
on:
|
||
push:
|
||
branches: [master]
|
||
tags: ["v*"]
|
||
workflow_dispatch:
|
||
|
||
env:
|
||
REGISTRY: git.mpakosrv.ru
|
||
IMAGE_NAME: mpakobecx/dispelevilbot-bot
|
||
|
||
jobs:
|
||
lint-test:
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
- uses: actions/checkout@v4
|
||
- uses: actions/setup-python@v5
|
||
with:
|
||
python-version: "3.12"
|
||
- name: Установка зависимостей
|
||
run: pip install -r requirements-dev.txt
|
||
# В Forgejo 1.21 `continue-on-error` игнорируется, поэтому неблокирующий
|
||
# режим для black сделан через shell. ruff обязателен.
|
||
- name: Ruff
|
||
run: ruff check .
|
||
- name: Black
|
||
run: black --check . || echo "::warning::black: есть отличия в форматировании (пока не блокирует)"
|
||
- name: Pytest
|
||
run: pytest -q
|
||
|
||
build-push:
|
||
runs-on: ubuntu-latest
|
||
needs: lint-test
|
||
# Собираем и пушим образ. Автодеплой НЕ делаем — выкатка вручную (test -> prod).
|
||
steps:
|
||
- uses: actions/checkout@v4
|
||
- name: Логин в Gitea Registry
|
||
run: echo "${{ secrets.REGISTRY_TOKEN }}" | docker login "$REGISTRY" -u "${{ secrets.REGISTRY_USER }}" --password-stdin
|
||
- name: Сборка и публикация образа
|
||
run: |
|
||
set -e
|
||
IMAGE="$REGISTRY/$IMAGE_NAME"
|
||
SHORT_SHA="${GITHUB_SHA:0:12}"
|
||
TAGS="$IMAGE:$SHORT_SHA $IMAGE:latest"
|
||
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then
|
||
TAGS="$TAGS $IMAGE:${GITHUB_REF_NAME}"
|
||
fi
|
||
ARGS=""
|
||
for t in $TAGS; do ARGS="$ARGS -t $t"; done
|
||
docker build $ARGS .
|
||
for t in $TAGS; do docker push "$t"; done
|