Add nightly CI base image and migrate workflows to python-repositories-ci.
Code Quality Pipeline / code-quality (pull_request) Failing after 1s
Test Python Package / unit-tests (pull_request) Failing after 0s
Test Python Package / integration-tests (pull_request) Failing after 0s
PR Title Check / check-title (pull_request) Successful in 6s
Test Python Package / coverage-report (pull_request) Has been skipped
Code Quality Pipeline / code-quality (pull_request) Failing after 1s
Test Python Package / unit-tests (pull_request) Failing after 0s
Test Python Package / integration-tests (pull_request) Failing after 0s
PR Title Check / check-title (pull_request) Successful in 6s
Test Python Package / coverage-report (pull_request) Has been skipped
Pre-build Python, uv, and locked deps in a Gitea container image so daily jobs skip repeated bootstrap; document runner registry auth and ci-bot credentials. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
co-authored by
Cursor
parent
369295b8ae
commit
3b05260323
@@ -0,0 +1,52 @@
|
||||
# Build and publish the per-repo CI base image to the Gitea container registry.
|
||||
|
||||
name: Build CI Image
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 2 * * *"
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- pyproject.toml
|
||||
- uv.lock
|
||||
- docker/ci/**
|
||||
|
||||
env:
|
||||
REGISTRY: gitea.lille-vemmelund.dk
|
||||
REGISTRY_USER: ci-bot
|
||||
IMAGE: gitea.lille-vemmelund.dk/brian/python-repositories-ci
|
||||
|
||||
jobs:
|
||||
build-and-push:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Log in to Gitea container registry
|
||||
env:
|
||||
CI_RUNNER_TOKEN: ${{ secrets.CI_RUNNER_TOKEN }}
|
||||
run: |
|
||||
echo "$CI_RUNNER_TOKEN" | docker login "$REGISTRY" -u "$REGISTRY_USER" --password-stdin
|
||||
|
||||
- name: Build CI image
|
||||
env:
|
||||
CI_RUNNER_TOKEN: ${{ secrets.CI_RUNNER_TOKEN }}
|
||||
run: |
|
||||
echo "$CI_RUNNER_TOKEN" > /tmp/uv_token
|
||||
docker build -f docker/ci/Dockerfile \
|
||||
--secret id=uv_token,src=/tmp/uv_token \
|
||||
-t "${IMAGE}:latest" \
|
||||
.
|
||||
rm -f /tmp/uv_token
|
||||
|
||||
- name: Tag and push CI image
|
||||
run: |
|
||||
STAMP="$(date -u +%Y%m%d%H%M)"
|
||||
docker tag "${IMAGE}:latest" "${IMAGE}:${STAMP}"
|
||||
docker push "${IMAGE}:latest"
|
||||
docker push "${IMAGE}:${STAMP}"
|
||||
echo "Pushed ${IMAGE}:latest and ${IMAGE}:${STAMP}"
|
||||
@@ -8,23 +8,17 @@ on:
|
||||
|
||||
jobs:
|
||||
code-quality:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: python-repositories-ci
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version-file: .python-version
|
||||
|
||||
- name: Install uv
|
||||
run: pip install uv
|
||||
|
||||
- name: Install dependencies
|
||||
- name: Sync dependencies
|
||||
env:
|
||||
UV_LINK_MODE: copy
|
||||
run: uv sync --all-extras
|
||||
UV_INDEX_GITEA_USERNAME: ci-bot
|
||||
UV_INDEX_GITEA_PASSWORD: ${{ secrets.CI_RUNNER_TOKEN }}
|
||||
run: uv sync --all-extras --frozen
|
||||
|
||||
- name: Type check with mypy
|
||||
run: uv run mypy .
|
||||
|
||||
@@ -7,22 +7,17 @@ on:
|
||||
|
||||
jobs:
|
||||
update-check:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: python-repositories-ci
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
token: ${{ secrets.CI_RUNNER_TOKEN }}
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version-file: .python-version
|
||||
|
||||
- name: Install uv
|
||||
run: pip install uv
|
||||
|
||||
- name: Upgrade dependencies
|
||||
env:
|
||||
UV_INDEX_GITEA_USERNAME: ci-bot
|
||||
UV_INDEX_GITEA_PASSWORD: ${{ secrets.CI_RUNNER_TOKEN }}
|
||||
run: uv lock --upgrade
|
||||
|
||||
- name: Commit and push changes
|
||||
|
||||
@@ -9,25 +9,24 @@ on:
|
||||
|
||||
jobs:
|
||||
build-and-publish:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: python-repositories-ci
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version-file: .python-version
|
||||
|
||||
- name: Install uv
|
||||
run: pip install uv
|
||||
|
||||
- name: Update version in pyproject.toml to match tag
|
||||
env:
|
||||
UV_INDEX_GITEA_USERNAME: ci-bot
|
||||
UV_INDEX_GITEA_PASSWORD: ${{ secrets.CI_RUNNER_TOKEN }}
|
||||
run: scripts/ci/bump-version.sh --from-tag "${GITHUB_REF##*/}"
|
||||
|
||||
- name: Build package
|
||||
env:
|
||||
UV_LINK_MODE: copy
|
||||
UV_INDEX_GITEA_USERNAME: ci-bot
|
||||
UV_INDEX_GITEA_PASSWORD: ${{ secrets.CI_RUNNER_TOKEN }}
|
||||
run: |
|
||||
uv sync --no-dev
|
||||
uv sync --no-dev --frozen
|
||||
uv build
|
||||
|
||||
- name: Publish to Gitea Package Registry
|
||||
|
||||
@@ -8,7 +8,7 @@ on:
|
||||
jobs:
|
||||
release:
|
||||
if: ${{ !contains(github.event.head_commit.message, '[skip ci]') }}
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: python-repositories-ci
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
@@ -22,19 +22,12 @@ jobs:
|
||||
COMMIT_MSG: ${{ github.event.head_commit.message }}
|
||||
run: scripts/ci/parse-merge-commit.sh "$COMMIT_MSG"
|
||||
|
||||
- name: Set up Python
|
||||
if: steps.meta.outputs.bump != 'skip'
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version-file: .python-version
|
||||
|
||||
- name: Install uv
|
||||
if: steps.meta.outputs.bump != 'skip'
|
||||
run: pip install uv
|
||||
|
||||
- name: Bump version
|
||||
if: steps.meta.outputs.bump != 'skip'
|
||||
id: bump
|
||||
env:
|
||||
UV_INDEX_GITEA_USERNAME: ci-bot
|
||||
UV_INDEX_GITEA_PASSWORD: ${{ secrets.CI_RUNNER_TOKEN }}
|
||||
run: scripts/ci/bump-version.sh "${{ steps.meta.outputs.bump }}"
|
||||
|
||||
- name: Generate release notes
|
||||
|
||||
@@ -7,23 +7,17 @@ on:
|
||||
|
||||
jobs:
|
||||
safety:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: python-repositories-ci
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version-file: .python-version
|
||||
|
||||
- name: Install uv
|
||||
run: pip install uv
|
||||
|
||||
- name: Install dependencies
|
||||
- name: Sync dependencies
|
||||
env:
|
||||
UV_LINK_MODE: copy
|
||||
run: uv sync
|
||||
UV_INDEX_GITEA_USERNAME: ci-bot
|
||||
UV_INDEX_GITEA_PASSWORD: ${{ secrets.CI_RUNNER_TOKEN }}
|
||||
run: uv sync --frozen
|
||||
|
||||
- name: Run safety check
|
||||
run: uv run safety check
|
||||
|
||||
+15
-33
@@ -8,23 +8,17 @@ on:
|
||||
|
||||
jobs:
|
||||
unit-tests:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: python-repositories-ci
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version-file: .python-version
|
||||
|
||||
- name: Install uv
|
||||
run: pip install uv
|
||||
|
||||
- name: Install dependencies
|
||||
- name: Sync dependencies
|
||||
env:
|
||||
UV_LINK_MODE: copy
|
||||
run: uv sync --all-extras
|
||||
UV_INDEX_GITEA_USERNAME: ci-bot
|
||||
UV_INDEX_GITEA_PASSWORD: ${{ secrets.CI_RUNNER_TOKEN }}
|
||||
run: uv sync --all-extras --frozen
|
||||
|
||||
- name: Run unit tests
|
||||
run: |
|
||||
@@ -43,23 +37,17 @@ jobs:
|
||||
compression-level: 0
|
||||
|
||||
integration-tests:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: python-repositories-ci
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version-file: .python-version
|
||||
|
||||
- name: Install uv
|
||||
run: pip install uv
|
||||
|
||||
- name: Install dependencies
|
||||
- name: Sync dependencies
|
||||
env:
|
||||
UV_LINK_MODE: copy
|
||||
run: uv sync --all-extras
|
||||
UV_INDEX_GITEA_USERNAME: ci-bot
|
||||
UV_INDEX_GITEA_PASSWORD: ${{ secrets.CI_RUNNER_TOKEN }}
|
||||
run: uv sync --all-extras --frozen
|
||||
|
||||
- name: Verify Docker
|
||||
run: docker info
|
||||
@@ -83,24 +71,18 @@ jobs:
|
||||
coverage-report:
|
||||
# Merges unit + integration coverage and enforces fail_under from pyproject.toml.
|
||||
needs: [unit-tests, integration-tests]
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: python-repositories-ci
|
||||
if: github.event_name == 'pull_request' || github.event_name == 'push'
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version-file: .python-version
|
||||
|
||||
- name: Install uv
|
||||
run: pip install uv
|
||||
|
||||
- name: Install dependencies
|
||||
- name: Sync dependencies
|
||||
env:
|
||||
UV_LINK_MODE: copy
|
||||
run: uv sync --all-extras
|
||||
UV_INDEX_GITEA_USERNAME: ci-bot
|
||||
UV_INDEX_GITEA_PASSWORD: ${{ secrets.CI_RUNNER_TOKEN }}
|
||||
run: uv sync --all-extras --frozen
|
||||
|
||||
- name: Download unit coverage
|
||||
uses: https://github.com/christopherHX/gitea-download-artifact@v4
|
||||
|
||||
Reference in New Issue
Block a user