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 # Линт/формат пока не блокируют пайплайн (см. TODO). После первого прогона # выполните локально `ruff check --fix .` и `black .`, затем уберите # continue-on-error, чтобы стиль стал обязательным. - name: Ruff continue-on-error: true run: ruff check . - name: Black continue-on-error: true run: black --check . - 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