DEVX-126: ci: consolidate CI and post-merge workflows
Post-merge / detect-and-configure (push) Successful in 20s
Post-merge / release-and-maintain (push) Successful in 46s

This commit was merged in pull request #190.
This commit is contained in:
2026-07-12 01:52:40 +00:00
parent ed0dfce98b
commit cb84dae050
7 changed files with 421 additions and 558 deletions
+17 -23
View File
@@ -10,9 +10,11 @@ name: Build Images
# to PyPI, so the image always has the latest released version.
# - Manually via workflow_dispatch
#
# Consolidated into 2 jobs (from 3):
# build-and-push (includes release-commit detection) ──→ cleanup
#
# The workflow builds 3 tier images in sequence:
# ci-base → ci-quality → ci-full
#
# Each tier builds FROM the previous one, so they must be built in order.
# After pushing, a cleanup job removes old versions (keeps last 2 + latest).
@@ -28,9 +30,9 @@ concurrency:
cancel-in-progress: false
jobs:
detect-type:
build-and-push:
runs-on: docker
timeout-minutes: 5
timeout-minutes: 30
outputs:
is-release: ${{ steps.check.outputs.is-release }}
steps:
@@ -40,7 +42,7 @@ jobs:
- name: Set up environment
env:
CI_GITEA_API_TOKEN: ${{ secrets.CI_GITEA_API_TOKEN }}
run: make setup-ci
run: make setup-release
- name: Check if this is a release commit
id: check
env:
@@ -48,25 +50,12 @@ jobs:
run: |
. .venv/bin/activate
python3 -m devx.ci.detect_release_commit
build-and-push:
needs: [detect-type]
if: >-
needs.detect-type.outputs.is-release == 'false' && (
github.event_name == 'workflow_dispatch' ||
(github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'success')
)
runs-on: docker
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up environment
env:
CI_GITEA_API_TOKEN: ${{ secrets.CI_GITEA_API_TOKEN }}
run: make setup-release
- name: Docker registry login
if: >-
steps.check.outputs.is-release == 'false' && (
github.event_name == 'workflow_dispatch' ||
(github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'success')
)
env:
CI_GITEA_API_TOKEN: ${{ secrets.CI_GITEA_API_TOKEN }}
CI_GITEA_USERNAME: ${{ vars.CI_GITEA_USERNAME }}
@@ -78,6 +67,11 @@ jobs:
if [ -z "$_TOKEN" ]; then echo "Gitea API token not set — skipping Docker login"; exit 1; fi
echo "$_TOKEN" | docker login git.oblachno.oblachno.fyi -u "$CI_GITEA_USERNAME" --password-stdin
- name: Build and push tier images
if: >-
steps.check.outputs.is-release == 'false' && (
github.event_name == 'workflow_dispatch' ||
(github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'success')
)
env:
CI_GITEA_API_TOKEN: ${{ secrets.CI_GITEA_API_TOKEN }}
CI_GITEA_USERNAME: ${{ vars.CI_GITEA_USERNAME }}
@@ -123,7 +117,7 @@ jobs:
cleanup:
needs: [build-and-push]
if: always() && needs.build-and-push.result == 'success'
if: always() && needs.build-and-push.result == 'success' && needs.build-and-push.outputs.is-release == 'false'
runs-on: docker
timeout-minutes: 10
steps: