Skip to content

chore(v1.87.0): port CI workflows + release tooling (Wave 1) - #46

Merged
songkuan-zheng merged 11 commits into
ship/v1.87.0from
fix/v1.87.0-wave-1-ci-setup
Jun 4, 2026
Merged

chore(v1.87.0): port CI workflows + release tooling (Wave 1)#46
songkuan-zheng merged 11 commits into
ship/v1.87.0from
fix/v1.87.0-wave-1-ci-setup

Conversation

@songkuan-zheng

Copy link
Copy Markdown
Collaborator

Tier classification

  • A — Company-specific logic (litellm_extras/ only)
  • B — Internal infra / branding (CI, Dockerfile, e2e, internal navbar version)
  • C — Universal bug fix in litellm/ core
  • D — Universal mechanism + company opinion in litellm/ core

If Tier C or D, did you try upstream first?

  • N/A — Tier B internal CI setup.

Summary

First wave of the v1.87.0 version bump. Ports our internal CI workflow
chain + release tooling onto the new ship/v1.87.0 branch.

Net policy posture matches ship/v1.83.10: only release-swr.yml
runs by default. release-docker.yml is disabled during the bump
(re-enable when cutting v1.87.0-internal.1).

Cherry-picks (chronological, 9 commits)

SHA Subject
d4af687157 chore(ci): add tag-triggered Docker release workflow with cosign signing
dc4d466e16 chore(ci): set IMAGE_NAME to zsk2026/litellm
0c3d6d0fa4 chore(ci): drop environment gating, run on repo secrets only
fdfb29196a ci: add SWR (Huawei Cloud) Docker image push workflow
bc4e02b2c5 ci(swr): fix workflow_dispatch, support ghisha tag
f41261ef64 ci(swr): inject LITELLM_BUILD_TAG + LITELLM_BUILD_SHA
2c93b7bccd chore(release): update fallback URL after repo transfer
3eeea37894 Update .gitignore
417a9fc2ed chore(ci): disable all upstream workflows except release-{docker,swr}

Bridge commits (new, not on ship/v1.83.10)

a65b2f4607 chore(ci): also disable new upstream workflows added since v1.83.10

Upstream added 6 workflows between v1.83.10 and v1.87.0 (not covered by
the original disable-list). This commit moves them to .disabled/:

  • create-release-branch.yml
  • guard-fork-dependencies.yml
  • mutation-test.yml
  • test-code-quality.yml
  • test-semgrep.yml
  • test-unit-proxy-mgmt-behavior.yml

Also dropped during the 417a9fc2ed cherry-pick: 9 workflow files
upstream deleted between v1.83.10 and v1.87.0 (resolved as rename/delete
conflicts).

Last commit

e3a5d5185a chore(ci): disable release-docker workflow (#37)

Matches the production posture on ship/v1.83.10 (re-enable when ready
to publish v1.87.0-internal.1).

Verification

```bash

Workflows currently runnable

ls .github/workflows/

→ release-swr.yml (only this; release-docker.yml moved to .disabled/)

Disabled workflows

ls .github/workflows.disabled/ | wc -l

→ 45 (matches ship/v1.83.10's 48 minus 9 upstream-deleted plus 6 new upstream)

```

Pre-Submission checklist

Type

🚄 Infrastructure

songkuan-zheng and others added 11 commits June 4, 2026 09:49
Adds .github/workflows/release-docker.yml and scripts/release-tag.sh to
automate Docker image releases for this internal fork.

Workflow (triggered on v*-internal.* tags):
- Multi-arch build (linux/amd64, linux/arm64) pushed to Docker Hub
- Three tags per release: immutable internal tag, internal+sha for audit,
  rolling <base>-stable pointer
- cosign keyless signing (GitHub OIDC -> Sigstore Fulcio), signs the
  immutable digest so all tags inherit the signature
- Auto-creates a GitHub Release with changelog (since previous internal
  tag), Docker pull commands, and cosign verify instructions
- Ancestry check: refuses to publish tags not on a ship/* branch

scripts/release-tag.sh: convenience script to validate state, generate
changelog, and create+push the annotated tag from a ship/* branch.

Requires DOCKERHUB_USERNAME and DOCKERHUB_TOKEN secrets, plus optional
docker-release environment for manual approval gating. No cosign key
management required (keyless via OIDC).
The docker-release environment was re-introduced during merge of #8 but
is unconfigured, which would block any tag-triggered run from starting.
Remove the environment reference so the workflow runs end-to-end using
repo-level DOCKERHUB_USERNAME / DOCKERHUB_TOKEN secrets.

If approval gating is wanted later, create the environment in repo
Settings and re-add the line.
Mirrors release-docker.yml trigger (v*-internal.* tags) plus manual
workflow_dispatch. Pushes to swr.ap-southeast-3.myhuaweicloud.com/ghisha/litellm
with the same three-tag strategy (internal release, +sha, rolling stable).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…y image name

- Skip ship/* branch check on manual dispatch (tag may not be a git tag)
- Accept both v*-internal.* and v*-ghisha.* tag triggers
- Fix BASE_VERSION extraction to handle both suffixes
- Use ghisha-gateway as image name to match Helm chart

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…build

The SWR workflow builds the same ./Dockerfile as release-docker.yml but
was missing the build-args, so SWR-pulled deployments would still show
the upstream base version in the UI navbar instead of the internal tag.

steps.version already extracts tag + git_sha — just pass them through.
The repository was transferred from `songkuan-zheng/litellm` to
`GhishaDev/litellm`. Update the fallback URL in `scripts/release-tag.sh`
so local invocations (where `$GITHUB_REPOSITORY` is unset) point to the
new Actions workflow URL.

Everything else remains correct after transfer:
- Docker Hub namespace stays at `zsk2026/litellm` by choice; no changes
  to `.github/workflows/release-docker.yml` or the `zsk2026/litellm`
  references in `CLAUDE.md`.
- `DOCKERHUB_USERNAME` / `DOCKERHUB_TOKEN` secrets migrated with the
  repo automatically — verified via `gh secret list`.
- Fork relationship to `BerriAI/litellm` is preserved.
This fork only needs CI to run on internal release tags. All other
inherited workflows either:

1. Filter pull_request.branches to main/litellm_** and silently skip
   PRs targeting ship/v1.83.10 (effectively dead weight on the Actions
   UI and bill).
2. Operate on upstream concerns we don't run (daily staging branch,
   auto price-map update, issue automation, supply-chain scorecard,
   docs validation, helm chart tests).
3. Are workflow_call helpers only consumed by 1 + 2.

Rather than maintain per-file branch-filter overrides on 40+ workflows
(each adds upstream-rebase friction), move them to a sibling
`.github/workflows.disabled/` directory. GitHub Actions only loads from
`.github/workflows/`, so anything under `.disabled/` is dormant but
preserved for:

- diff against upstream when rebasing
- one-line re-enable via `git mv` if a specific workflow is wanted later
- reference when investigating "what did upstream test for this code?"

Test discipline is enforced locally per CLAUDE.md:
- `make lint` + `make test-unit` before commit
- `vitest run` for UI changes
- `e2e/tools/proxy start` + `e2e/tools/run-all-cases` for e2e

Active workflows after this change (2):
- release-docker.yml  — tag push v*-internal.* publishes Docker Hub image
- release-swr.yml     — tag push v*-internal.* / v*-ghisha.* mirrors to
                        Huawei Cloud SWR + workflow_dispatch override

See .github/workflows.disabled/_README.md for re-enable instructions.
Upstream added 6 workflows between v1.83.10 and v1.87.0 that are not
covered by the original ccda07d disable-list. Move them to
.github/workflows.disabled/ to match our policy (only release-docker
and release-swr should run in this fork):

- create-release-branch.yml
- guard-fork-dependencies.yml
- mutation-test.yml
- test-code-quality.yml
- test-semgrep.yml
- test-unit-proxy-mgmt-behavior.yml

Also dropped via the previous cherry-pick: 9 workflow files upstream
deleted between v1.83.10 and v1.87.0 (README.md, llm-translation-
testing.yml, publish_to_pypi.yml, read_pyproject_version.yml,
results_stats.csv, run_observatory_tests.yml, scan_duplicate_issues.yml,
test-litellm.yml, update_release.py).

Net result: same posture as ship/v1.83.10 — only release-docker.yml
and release-swr.yml remain enabled.

Tier: B (CI infra).
Move .github/workflows/release-docker.yml to .github/workflows.disabled/
so tag pushes no longer trigger the multi-arch Docker build/publish to
zsk2026/litellm.
@songkuan-zheng
songkuan-zheng merged commit 84a5abe into ship/v1.87.0 Jun 4, 2026
@songkuan-zheng
songkuan-zheng deleted the fix/v1.87.0-wave-1-ci-setup branch June 4, 2026 10:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants