Skip to content

Commit bac71f6

Browse files
author
Yadan Wei
committed
add a manual workflow to test skip logic
Signed-off-by: Yadan Wei <yadanwei@amazon.com>
1 parent 6d58790 commit bac71f6

File tree

3 files changed

+153
-2
lines changed

3 files changed

+153
-2
lines changed

.github/config/vllm-0.10.2-rayserve.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ common:
2222
# Release configuration
2323
release:
2424
release: true
25-
force_release: true
25+
force_release: false
2626
public_registry: true
2727
private_registry: false
2828
enable_soci: true

.github/config/vllm-0.14.0-sagemaker.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ common:
2222
# Release configuration
2323
release:
2424
release: true
25-
force_release: true
25+
force_release: false
2626
public_registry: true
2727
private_registry: true
2828
enable_soci: false
Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
name: vLLM RayServe Manual Release
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
source-image-uri:
7+
description: 'Source image URI to release (e.g., 123456789.dkr.ecr.us-west-2.amazonaws.com/vllm:0.10.2-gpu-py3.11-cu12.4-ubuntu22.04-rayserve-ec2)'
8+
required: true
9+
type: string
10+
config-file:
11+
description: 'Config file path'
12+
required: false
13+
type: string
14+
default: '.github/config/vllm-0.10.2-rayserve.yml'
15+
aws-region:
16+
description: 'AWS region'
17+
required: false
18+
type: string
19+
default: 'us-west-2'
20+
21+
permissions:
22+
contents: read
23+
24+
env:
25+
FORCE_COLOR: "1"
26+
27+
jobs:
28+
load-config:
29+
runs-on: ubuntu-latest
30+
outputs:
31+
config: ${{ steps.load-config.outputs.config }}
32+
steps:
33+
- name: Checkout code
34+
uses: actions/checkout@v5
35+
36+
- name: Load configuration file
37+
id: load-config
38+
run: |
39+
# Install yq for YAML parsing
40+
sudo wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64
41+
sudo chmod +x /usr/local/bin/yq
42+
43+
# Load and output config as JSON
44+
{
45+
echo "config<<EOF"
46+
yq eval -o=json '.' ${{ inputs.config-file }}
47+
echo "EOF"
48+
} >> $GITHUB_OUTPUT
49+
50+
validate-image:
51+
needs: [load-config]
52+
runs-on: ubuntu-latest
53+
steps:
54+
- name: Validate image URI format
55+
run: |
56+
IMAGE_URI="${{ inputs.source-image-uri }}"
57+
58+
# Basic validation
59+
if [[ ! "$IMAGE_URI" =~ ^[0-9]+\.dkr\.ecr\.[a-z0-9-]+\.amazonaws\.com/.+:.+$ ]]; then
60+
echo "❌ Error: Invalid image URI format"
61+
echo "Expected format: ACCOUNT.dkr.ecr.REGION.amazonaws.com/REPO:TAG"
62+
echo "Received: $IMAGE_URI"
63+
exit 1
64+
fi
65+
66+
echo "✅ Image URI format is valid"
67+
echo "Image URI: $IMAGE_URI"
68+
69+
- name: Display release configuration
70+
run: |
71+
echo "=========================================="
72+
echo "Release Configuration"
73+
echo "=========================================="
74+
echo "Source Image: ${{ inputs.source-image-uri }}"
75+
echo "Config File: ${{ inputs.config-file }}"
76+
echo "AWS Region: ${{ inputs.aws-region }}"
77+
echo ""
78+
echo "Release Settings:"
79+
echo '${{ needs.load-config.outputs.config }}' | jq -r '.release'
80+
81+
generate-release-spec:
82+
needs: [load-config, validate-image]
83+
runs-on: ubuntu-latest
84+
outputs:
85+
release-spec: ${{ steps.generate.outputs.release-spec }}
86+
should-release: ${{ steps.check-release.outputs.should-release }}
87+
steps:
88+
- name: Checkout code
89+
uses: actions/checkout@v5
90+
91+
- name: Check if release is enabled
92+
id: check-release
93+
run: |
94+
echo '${{ needs.load-config.outputs.config }}' > config.json
95+
RELEASE_ENABLED=$(jq -r '.release.release // false' config.json)
96+
echo "Release enabled: ${RELEASE_ENABLED}"
97+
98+
if [ "$RELEASE_ENABLED" != "true" ]; then
99+
echo "❌ Error: Release is not enabled in config file"
100+
echo "Please set 'release.release: true' in ${{ inputs.config-file }}"
101+
exit 1
102+
fi
103+
104+
echo "should-release=${RELEASE_ENABLED}" >> $GITHUB_OUTPUT
105+
106+
- name: Generate release spec
107+
id: generate
108+
uses: ./.github/actions/generate-release-spec
109+
with:
110+
config-json: ${{ needs.load-config.outputs.config }}
111+
112+
release-image:
113+
needs: [load-config, validate-image, generate-release-spec]
114+
if: needs.generate-release-spec.outputs.should-release == 'true'
115+
uses: ./.github/workflows/reusable-release-image.yml
116+
with:
117+
source-image-uri: ${{ inputs.source-image-uri }}
118+
release-spec: ${{ needs.generate-release-spec.outputs.release-spec }}
119+
source-stage: ${{ fromJson(needs.load-config.outputs.config).release.source_stage }}
120+
target-stage: ${{ fromJson(needs.load-config.outputs.config).release.target_stage }}
121+
aws-region: ${{ inputs.aws-region }}
122+
runner-fleet: default-runner
123+
124+
summary:
125+
needs: [load-config, validate-image, generate-release-spec, release-image]
126+
if: always()
127+
runs-on: ubuntu-latest
128+
steps:
129+
- name: Release Summary
130+
run: |
131+
echo "=========================================="
132+
echo "vLLM RayServe Manual Release Summary"
133+
echo "=========================================="
134+
echo ""
135+
echo "Source Image: ${{ inputs.source-image-uri }}"
136+
echo "Config File: ${{ inputs.config-file }}"
137+
echo "AWS Region: ${{ inputs.aws-region }}"
138+
echo ""
139+
echo "Job Results:"
140+
echo " - Load Config: ${{ needs.load-config.result }}"
141+
echo " - Validate Image: ${{ needs.validate-image.result }}"
142+
echo " - Generate Release Spec: ${{ needs.generate-release-spec.result }}"
143+
echo " - Release Image: ${{ needs.release-image.result }}"
144+
echo ""
145+
146+
if [ "${{ needs.release-image.result }}" == "success" ]; then
147+
echo "✅ Release completed successfully!"
148+
else
149+
echo "❌ Release failed or was skipped"
150+
exit 1
151+
fi

0 commit comments

Comments
 (0)