name: CI on: # Только пуш в master (теги ничего не триггерят). push: branches: [master] workflow_dispatch: env: REGISTRY: git.mpakosrv.ru IMAGE_NAME: mpakobecex/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" SHA="${GITHUB_SHA:-unknown}" SHORT_SHA="$(echo "$SHA" | cut -c1-12)" TAGS="$IMAGE:$SHORT_SHA $IMAGE:latest" ARGS="" for t in $TAGS; do ARGS="$ARGS -t $t"; done docker build $ARGS . for t in $TAGS; do docker push "$t"; done