Skip to content

Commit ec7e813

Browse files
committed
✏️ [release staged] Add a checking process of the project has Dockerfile or not and only run the Docker relative processes if it has.
1 parent f608fc6 commit ec7e813

File tree

1 file changed

+90
-24
lines changed

1 file changed

+90
-24
lines changed

.github/workflows/rw_release_staging_complete.yaml

Lines changed: 90 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,26 @@ jobs:
4545
name: Parse Configuration
4646
uses: Chisanan232/Template-Python-UV-Project/.github/workflows/rw_parse_project_config.yaml@master
4747

48+
check-dockerfile:
49+
name: Check Dockerfile Exists
50+
runs-on: ubuntu-latest
51+
outputs:
52+
has_dockerfile: ${{ steps.check.outputs.has_dockerfile }}
53+
steps:
54+
- name: Checkout repository
55+
uses: actions/checkout@v5
56+
57+
- name: Check for Dockerfile
58+
id: check
59+
run: |
60+
if [ -f "Dockerfile" ]; then
61+
echo "✅ Dockerfile found"
62+
echo "has_dockerfile=true" >> $GITHUB_OUTPUT
63+
else
64+
echo "⚠️ No Dockerfile found - Docker processes will be skipped"
65+
echo "has_dockerfile=false" >> $GITHUB_OUTPUT
66+
fi
67+
4868
compute-version:
4969
name: Compute Staging Version
5070
runs-on: ubuntu-latest
@@ -118,7 +138,8 @@ jobs:
118138
dockerhub-rc:
119139
name: Staging Release to DockerHub
120140
uses: Chisanan232/Template-Python-UV-Project/.github/workflows/rw_docker_operations.yaml@master
121-
needs: [config, compute-version, build_git-tag_and_create_github-release]
141+
needs: [config, check-dockerfile, compute-version, build_git-tag_and_create_github-release]
142+
if: needs.check-dockerfile.outputs.has_dockerfile == 'true'
122143
secrets:
123144
dockerhub-user: ${{ secrets.DOCKERHUB_USERNAME }}
124145
registry-token: ${{ secrets.DOCKERHUB_TOKEN }}
@@ -136,7 +157,8 @@ jobs:
136157
ghcr-rc:
137158
name: Staging Release to GHCR
138159
uses: Chisanan232/Template-Python-UV-Project/.github/workflows/rw_docker_operations.yaml@master
139-
needs: [config, compute-version, build_git-tag_and_create_github-release]
160+
needs: [config, check-dockerfile, compute-version, build_git-tag_and_create_github-release]
161+
if: needs.check-dockerfile.outputs.has_dockerfile == 'true'
140162
with:
141163
operation: 'push'
142164
registry: ${{ needs.config.outputs.docker_registry_ghcr }}
@@ -161,7 +183,7 @@ jobs:
161183
staging-summary:
162184
name: Staging Release Summary
163185
runs-on: ubuntu-latest
164-
needs: [config, compute-version, pypi-test, ghcr-rc, docs-preview]
186+
needs: [config, check-dockerfile, compute-version, pypi-test, dockerhub-rc, ghcr-rc, docs-preview]
165187
if: always()
166188
outputs:
167189
success: ${{ steps.summary.outputs.success }}
@@ -171,37 +193,81 @@ jobs:
171193
run: |
172194
echo "=== Staging Release Summary ==="
173195
echo ""
196+
echo "Dockerfile Check: ${{ needs.check-dockerfile.outputs.has_dockerfile == 'true' && '✅ Found' || '⚠️ Not Found (Docker skipped)' }}"
174197
echo "Version Computation: ${{ needs.compute-version.result }}"
175198
echo "TestPyPI Upload: ${{ needs.pypi-test.result }}"
176-
echo "GHCR RC Image: ${{ needs.ghcr-rc.result }}"
199+
200+
# Check if Docker processes were run
201+
HAS_DOCKERFILE="${{ needs.check-dockerfile.outputs.has_dockerfile }}"
202+
if [ "$HAS_DOCKERFILE" = "true" ]; then
203+
echo "DockerHub RC Image: ${{ needs.dockerhub-rc.result }}"
204+
echo "GHCR RC Image: ${{ needs.ghcr-rc.result }}"
205+
else
206+
echo "DockerHub RC Image: ⏭️ Skipped (no Dockerfile)"
207+
echo "GHCR RC Image: ⏭️ Skipped (no Dockerfile)"
208+
fi
209+
177210
echo "Docs Preview: ${{ needs.docs-preview.result }}"
178211
echo ""
179212
echo "📦 Staging Artifacts:"
180213
echo "- Base Version: ${{ needs.compute-version.outputs.version }}"
181214
echo "- RC Version: ${{ needs.compute-version.outputs.rc_version }}"
182215
echo "- TestPyPI: https://test.pypi.org/project/${{ needs.config.outputs.project_name }}/${{ needs.compute-version.outputs.version }}/"
183-
echo "- GHCR RC Image: ghcr.io/${{ github.repository }}:${{ needs.compute-version.outputs.rc_version }}"
216+
217+
if [ "$HAS_DOCKERFILE" = "true" ]; then
218+
echo "- DockerHub RC Image: docker.io/${{ github.repository }}:${{ needs.compute-version.outputs.rc_version }}"
219+
echo "- GHCR RC Image: ghcr.io/${{ github.repository }}:${{ needs.compute-version.outputs.rc_version }}"
220+
fi
221+
184222
echo "- Docs Preview: docs-preview branch"
185223
echo ""
186224
187-
if [[ "${{ needs.compute-version.result }}" == "success" && \
188-
"${{ needs.pypi-test.result }}" == "success" && \
189-
"${{ needs.ghcr-rc.result }}" == "success" && \
190-
"${{ needs.docs-preview.result }}" == "success" ]]; then
191-
echo "✅ Staging release completed successfully!"
192-
echo "success=true" >> $GITHUB_OUTPUT
193-
echo ""
194-
echo "🧪 Testing Instructions:"
195-
echo "1. Install from TestPyPI:"
196-
echo " pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ ${{ needs.config.outputs.project_name }}==${{ needs.compute-version.outputs.version }}"
197-
echo ""
198-
echo "2. Test RC Docker image:"
199-
echo " docker run -p ${{ needs.config.outputs.docker_health_check_port }}:${{ needs.config.outputs.docker_health_check_port }} ${{ needs.config.outputs.docker_run_options }} ghcr.io/${{ github.repository }}:${{ needs.compute-version.outputs.rc_version }}"
200-
echo ""
201-
echo "3. Review documentation preview in docs-preview branch"
202-
echo ""
225+
# Validate results based on whether Docker processes were expected
226+
VERSION_OK="${{ needs.compute-version.result == 'success' }}"
227+
PYPI_OK="${{ needs.pypi-test.result == 'success' }}"
228+
DOCS_OK="${{ needs.docs-preview.result == 'success' }}"
229+
230+
if [ "$HAS_DOCKERFILE" = "true" ]; then
231+
# Docker processes should have run - validate them
232+
DOCKERHUB_OK="${{ needs.dockerhub-rc.result == 'success' }}"
233+
GHCR_OK="${{ needs.ghcr-rc.result == 'success' }}"
234+
235+
if [[ "$VERSION_OK" == "true" && "$PYPI_OK" == "true" && \
236+
"$DOCKERHUB_OK" == "true" && "$GHCR_OK" == "true" && "$DOCS_OK" == "true" ]]; then
237+
echo "✅ Staging release completed successfully!"
238+
echo "success=true" >> $GITHUB_OUTPUT
239+
echo ""
240+
echo "🧪 Testing Instructions:"
241+
echo "1. Install from TestPyPI:"
242+
echo " pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ ${{ needs.config.outputs.project_name }}==${{ needs.compute-version.outputs.version }}"
243+
echo ""
244+
echo "2. Test RC Docker images:"
245+
echo " docker run -p ${{ needs.config.outputs.docker_health_check_port }}:${{ needs.config.outputs.docker_health_check_port }} ${{ needs.config.outputs.docker_run_options }} ghcr.io/${{ github.repository }}:${{ needs.compute-version.outputs.rc_version }}"
246+
echo " docker run -p ${{ needs.config.outputs.docker_health_check_port }}:${{ needs.config.outputs.docker_health_check_port }} ${{ needs.config.outputs.docker_run_options }} docker.io/${{ github.repository }}:${{ needs.compute-version.outputs.rc_version }}"
247+
echo ""
248+
echo "3. Review documentation preview in docs-preview branch"
249+
echo ""
250+
else
251+
echo "❌ Some staging deployment steps failed. Check the logs above."
252+
echo "success=false" >> $GITHUB_OUTPUT
253+
exit 1
254+
fi
203255
else
204-
echo "❌ Some staging deployment steps failed. Check the logs above."
205-
echo "success=false" >> $GITHUB_OUTPUT
206-
exit 1
256+
# No Docker processes - only validate non-Docker components
257+
if [[ "$VERSION_OK" == "true" && "$PYPI_OK" == "true" && "$DOCS_OK" == "true" ]]; then
258+
echo "✅ Staging release completed successfully!"
259+
echo "⚠️ Note: Docker builds were skipped (no Dockerfile found)"
260+
echo "success=true" >> $GITHUB_OUTPUT
261+
echo ""
262+
echo "🧪 Testing Instructions:"
263+
echo "1. Install from TestPyPI:"
264+
echo " pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ ${{ needs.config.outputs.project_name }}==${{ needs.compute-version.outputs.version }}"
265+
echo ""
266+
echo "2. Review documentation preview in docs-preview branch"
267+
echo ""
268+
else
269+
echo "❌ Some staging deployment steps failed. Check the logs above."
270+
echo "success=false" >> $GITHUB_OUTPUT
271+
exit 1
272+
fi
207273
fi

0 commit comments

Comments
 (0)