mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-12-03 18:00:36 +00:00
chore(ci): make stainless workflow more DRY (#4195)
# What does this PR do? <!-- Provide a short summary of what this PR does and why. Link to relevant issues if applicable. --> Addresses feedback from https://github.com/llamastack/llama-stack/pull/4187#discussion_r2542797437 <!-- If resolving an issue, uncomment and update the line below --> <!-- Closes #[issue-number] --> ## Test Plan <!-- Describe the tests you ran to verify your changes with result summaries. *Provide clear instructions so the plan can be easily re-executed.* -->
This commit is contained in:
parent
0757d5a917
commit
aa2a7dae07
1 changed files with 38 additions and 50 deletions
88
.github/workflows/stainless-builds.yml
vendored
88
.github/workflows/stainless-builds.yml
vendored
|
|
@ -43,7 +43,41 @@ env:
|
||||||
# Stainless organization dashboard
|
# Stainless organization dashboard
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
compute-branch:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
preview_branch: ${{ steps.compute.outputs.preview_branch }}
|
||||||
|
base_branch: ${{ steps.compute.outputs.base_branch }}
|
||||||
|
merge_branch: ${{ steps.compute.outputs.merge_branch }}
|
||||||
|
steps:
|
||||||
|
- name: Compute branch names
|
||||||
|
id: compute
|
||||||
|
run: |
|
||||||
|
HEAD_REPO="${{ github.event.pull_request.head.repo.full_name }}"
|
||||||
|
BASE_REPO="${{ github.repository }}"
|
||||||
|
BRANCH_NAME="${{ github.event.pull_request.head.ref }}"
|
||||||
|
FORK_OWNER="${{ github.event.pull_request.head.repo.owner.login }}"
|
||||||
|
|
||||||
|
if [ "$HEAD_REPO" != "$BASE_REPO" ]; then
|
||||||
|
# Fork PR: prefix with fork owner for isolation
|
||||||
|
if [ -z "$FORK_OWNER" ]; then
|
||||||
|
echo "Error: Fork PR detected but fork owner is empty" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
PREVIEW_BRANCH="preview/${FORK_OWNER}/${BRANCH_NAME}"
|
||||||
|
BASE_BRANCH="preview/base/${FORK_OWNER}/${BRANCH_NAME}"
|
||||||
|
else
|
||||||
|
# Same-repo PR
|
||||||
|
PREVIEW_BRANCH="preview/${BRANCH_NAME}"
|
||||||
|
BASE_BRANCH="preview/base/${BRANCH_NAME}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "preview_branch=${PREVIEW_BRANCH}" >> $GITHUB_OUTPUT
|
||||||
|
echo "base_branch=${BASE_BRANCH}" >> $GITHUB_OUTPUT
|
||||||
|
echo "merge_branch=${PREVIEW_BRANCH}" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
preview:
|
preview:
|
||||||
|
needs: compute-branch
|
||||||
if: github.event.action != 'closed'
|
if: github.event.action != 'closed'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
permissions:
|
||||||
|
|
@ -59,32 +93,6 @@ jobs:
|
||||||
ref: ${{ github.event.pull_request.head.sha }}
|
ref: ${{ github.event.pull_request.head.sha }}
|
||||||
fetch-depth: 2
|
fetch-depth: 2
|
||||||
|
|
||||||
# Compute the Stainless branch name, prefixing with fork owner if PR is from a fork.
|
|
||||||
# For fork PRs like "contributor:fix/issue-123", this creates "preview/contributor/fix/issue-123"
|
|
||||||
# For same-repo PRs, this creates "preview/fix/issue-123"
|
|
||||||
- name: Compute branch names
|
|
||||||
id: branch-names
|
|
||||||
run: |
|
|
||||||
HEAD_REPO="${{ github.event.pull_request.head.repo.full_name }}"
|
|
||||||
BASE_REPO="${{ github.repository }}"
|
|
||||||
BRANCH_NAME="${{ github.event.pull_request.head.ref }}"
|
|
||||||
|
|
||||||
if [ "$HEAD_REPO" != "$BASE_REPO" ]; then
|
|
||||||
# Fork PR: prefix with fork owner for isolation
|
|
||||||
FORK_OWNER="${{ github.event.pull_request.head.repo.owner.login }}"
|
|
||||||
PREVIEW_BRANCH="preview/${FORK_OWNER}/${BRANCH_NAME}"
|
|
||||||
BASE_BRANCH="preview/base/${FORK_OWNER}/${BRANCH_NAME}"
|
|
||||||
else
|
|
||||||
# Same-repo PR
|
|
||||||
PREVIEW_BRANCH="preview/${BRANCH_NAME}"
|
|
||||||
BASE_BRANCH="preview/base/${BRANCH_NAME}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "preview_branch=${PREVIEW_BRANCH}" >> $GITHUB_OUTPUT
|
|
||||||
echo "base_branch=${BASE_BRANCH}" >> $GITHUB_OUTPUT
|
|
||||||
|
|
||||||
# This action builds preview SDKs from the OpenAPI spec changes and
|
|
||||||
# posts/updates a comment on the PR with build results and links to the preview.
|
|
||||||
- name: Run preview builds
|
- name: Run preview builds
|
||||||
uses: stainless-api/upload-openapi-spec-action/preview@32823b096b4319c53ee948d702d9052873af485f # 1.6.0
|
uses: stainless-api/upload-openapi-spec-action/preview@32823b096b4319c53ee948d702d9052873af485f # 1.6.0
|
||||||
with:
|
with:
|
||||||
|
|
@ -97,10 +105,11 @@ jobs:
|
||||||
base_sha: ${{ github.event.pull_request.base.sha }}
|
base_sha: ${{ github.event.pull_request.base.sha }}
|
||||||
base_ref: ${{ github.event.pull_request.base.ref }}
|
base_ref: ${{ github.event.pull_request.base.ref }}
|
||||||
head_sha: ${{ github.event.pull_request.head.sha }}
|
head_sha: ${{ github.event.pull_request.head.sha }}
|
||||||
branch: ${{ steps.branch-names.outputs.preview_branch }}
|
branch: ${{ needs.compute-branch.outputs.preview_branch }}
|
||||||
base_branch: ${{ steps.branch-names.outputs.base_branch }}
|
base_branch: ${{ needs.compute-branch.outputs.base_branch }}
|
||||||
|
|
||||||
merge:
|
merge:
|
||||||
|
needs: compute-branch
|
||||||
if: github.event.action == 'closed' && github.event.pull_request.merged == true
|
if: github.event.action == 'closed' && github.event.pull_request.merged == true
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
permissions:
|
||||||
|
|
@ -116,27 +125,6 @@ jobs:
|
||||||
ref: ${{ github.event.pull_request.head.sha }}
|
ref: ${{ github.event.pull_request.head.sha }}
|
||||||
fetch-depth: 2
|
fetch-depth: 2
|
||||||
|
|
||||||
# Compute the Stainless branch name, prefixing with fork owner if PR is from a fork.
|
|
||||||
# For fork PRs like "contributor:fix/issue-123", this creates "preview/contributor/fix/issue-123"
|
|
||||||
# For same-repo PRs, this creates "preview/fix/issue-123"
|
|
||||||
- name: Compute branch names
|
|
||||||
id: branch-names
|
|
||||||
run: |
|
|
||||||
HEAD_REPO="${{ github.event.pull_request.head.repo.full_name }}"
|
|
||||||
BASE_REPO="${{ github.repository }}"
|
|
||||||
BRANCH_NAME="${{ github.event.pull_request.head.ref }}"
|
|
||||||
|
|
||||||
if [ "$HEAD_REPO" != "$BASE_REPO" ]; then
|
|
||||||
# Fork PR: prefix with fork owner for isolation
|
|
||||||
FORK_OWNER="${{ github.event.pull_request.head.repo.owner.login }}"
|
|
||||||
MERGE_BRANCH="preview/${FORK_OWNER}/${BRANCH_NAME}"
|
|
||||||
else
|
|
||||||
# Same-repo PR
|
|
||||||
MERGE_BRANCH="preview/${BRANCH_NAME}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "merge_branch=${MERGE_BRANCH}" >> $GITHUB_OUTPUT
|
|
||||||
|
|
||||||
# Note that this only merges in changes that happened on the last build on
|
# Note that this only merges in changes that happened on the last build on
|
||||||
# the computed preview branch. It's possible that there are OAS/config
|
# the computed preview branch. It's possible that there are OAS/config
|
||||||
# changes that haven't been built, if the preview job didn't finish
|
# changes that haven't been built, if the preview job didn't finish
|
||||||
|
|
@ -155,4 +143,4 @@ jobs:
|
||||||
base_sha: ${{ github.event.pull_request.base.sha }}
|
base_sha: ${{ github.event.pull_request.base.sha }}
|
||||||
base_ref: ${{ github.event.pull_request.base.ref }}
|
base_ref: ${{ github.event.pull_request.base.ref }}
|
||||||
head_sha: ${{ github.event.pull_request.head.sha }}
|
head_sha: ${{ github.event.pull_request.head.sha }}
|
||||||
merge_branch: ${{ steps.branch-names.outputs.merge_branch }}
|
merge_branch: ${{ needs.compute-branch.outputs.merge_branch }}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue