Skip to content

Commit c35229d

Browse files
committed
➕ Add the production environment release CI workflow.
1 parent 4c595d8 commit c35229d

File tree

1 file changed

+115
-0
lines changed

1 file changed

+115
-0
lines changed

.github/workflows/release.yml

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
# Production Release
2+
# This workflow calls the centralized release process from the template project
3+
name: release
4+
5+
on:
6+
push:
7+
branches:
8+
- master
9+
paths:
10+
- .github/tag_and_release/release-**
11+
workflow_dispatch:
12+
inputs:
13+
level:
14+
description: 'Release level'
15+
required: false
16+
default: 'auto'
17+
type: choice
18+
options:
19+
- auto
20+
- patch
21+
- minor
22+
- major
23+
python:
24+
description: 'Python package release'
25+
required: false
26+
default: 'auto'
27+
type: choice
28+
options:
29+
- auto
30+
- force
31+
- skip
32+
docker:
33+
description: 'Docker image release'
34+
required: false
35+
default: 'auto'
36+
type: choice
37+
options:
38+
- auto
39+
- force
40+
- skip
41+
docs:
42+
description: 'Documentation versioning'
43+
required: false
44+
default: 'auto'
45+
type: choice
46+
options:
47+
- auto
48+
- force
49+
- skip
50+
51+
permissions:
52+
contents: write
53+
packages: write
54+
id-token: write
55+
56+
concurrency:
57+
group: release-${{ github.ref_name }}
58+
cancel-in-progress: false
59+
60+
jobs:
61+
# Call the centralized complete release workflow
62+
release:
63+
name: Complete Release Process
64+
uses: Chisanan232/Template-Python-UV-Project/.github/workflows/rw_release_complete.yaml@master
65+
with:
66+
level: ${{ inputs.level }}
67+
python: ${{ inputs.python }}
68+
docker: ${{ inputs.docker }}
69+
docs: ${{ inputs.docs }}
70+
secrets:
71+
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
72+
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
73+
PYPI_API_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
74+
TEST_PYPI_API_TOKEN: ${{ secrets.TEST_PYPI_API_TOKEN }}
75+
76+
# Summary job to report results
77+
release-summary:
78+
name: Release Summary
79+
runs-on: ubuntu-latest
80+
needs: release
81+
if: always()
82+
steps:
83+
- name: Report release results
84+
run: |
85+
echo "=== Production Release Summary ==="
86+
echo ""
87+
echo "Release Status: ${{ needs.release.result }}"
88+
echo "Version Released: ${{ needs.release.outputs.version }}"
89+
echo "Release Performed: ${{ needs.release.outputs.release_performed }}"
90+
echo "Python Released: ${{ needs.release.outputs.python_released }}"
91+
echo "Docker Released: ${{ needs.release.outputs.docker_released }}"
92+
echo "Docs Released: ${{ needs.release.outputs.docs_released }}"
93+
echo ""
94+
95+
if [[ "${{ needs.release.result }}" == "success" && "${{ needs.release.outputs.release_performed }}" == "true" ]]; then
96+
echo "🎉 Production release completed successfully!"
97+
echo ""
98+
echo "📦 Released Artifacts:"
99+
if [[ "${{ needs.release.outputs.python_released }}" == "true" ]]; then
100+
echo "- Python Package: https://pypi.org/project/${{ github.repository_owner }}/${{ needs.release.outputs.version }}/"
101+
fi
102+
if [[ "${{ needs.release.outputs.docker_released }}" == "true" ]]; then
103+
echo "- Docker Images:"
104+
echo " - DockerHub: docker.io/${{ github.repository }}:${{ needs.release.outputs.version }}"
105+
echo " - GHCR: ghcr.io/${{ github.repository }}:${{ needs.release.outputs.version }}"
106+
fi
107+
if [[ "${{ needs.release.outputs.docs_released }}" == "true" ]]; then
108+
echo "- Documentation: Versioned documentation deployed"
109+
fi
110+
elif [[ "${{ needs.release.outputs.release_performed }}" == "false" ]]; then
111+
echo "ℹ️ No release was performed (intent evaluation determined no release needed)"
112+
else
113+
echo "❌ Release process failed. Check the workflow logs above."
114+
exit 1
115+
fi

0 commit comments

Comments
 (0)