11# .github/workflows/publish.yml
2- name : 🚀 Publish to PyPI
2+ name : Publish to PyPI
33
44on :
55 release :
1717
1818jobs :
1919 validation :
20- name : 🔍 Pre-publish Validation
20+ name : Pre-publish Validation
2121 runs-on : ubuntu-latest
2222 steps :
23- - name : 📥 Checkout repository
23+ - name : Checkout repository
2424 uses : actions/checkout@v4
2525 with :
2626 fetch-depth : 0
2727
28- - name : 🐍 Set up Python
28+ - name : Set up Python
2929 uses : actions/setup-python@v5
3030 with :
3131 python-version : ' 3.11'
3232
33- - name : 📦 Install Poetry
33+ - name : Install Poetry
3434 uses : snok/install-poetry@v1
3535 with :
3636 version : latest
3737 virtualenvs-create : true
3838 virtualenvs-in-project : true
3939
40- - name : 🔄 Load cached dependencies
40+ - name : Load cached dependencies
4141 uses : actions/cache@v4
4242 with :
4343 path : .venv
4444 key : venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }}
4545
46- - name : 🧰 Install dependencies
46+ - name : Install dependencies
4747 run : poetry install --with dev
4848
49- - name : 🔍 Code quality checks
49+ - name : Code quality checks
5050 run : |
5151 poetry run ruff check src/ tests/
5252 poetry run ruff format --check src/ tests/
5353 # TODO: Re-enable MyPy after resolving module path conflicts
5454 # cd src && poetry run mypy contextcraft
5555
56- - name : 🛡️ Security scan
56+ - name : Security scan
5757 run : poetry run bandit -r src/
5858
59- - name : 🧪 Run test suite
59+ - name : Run test suite
6060 run : poetry run pytest --cov=src/contextcraft --cov-report=xml --cov-report=term-missing
6161
62- - name : 📋 Validate package metadata
62+ - name : Validate package metadata
6363 run : |
6464 poetry build
6565 poetry run twine check dist/*
6666
6767 build-and-publish :
68- name : 📦 Build & Publish Package
68+ name : Build & Publish Package
6969 runs-on : ubuntu-latest
7070 needs : validation
7171 if : >
@@ -77,78 +77,68 @@ jobs:
7777 contents : read
7878
7979 steps :
80- - name : 📥 Checkout repository
80+ - name : Checkout repository
8181 uses : actions/checkout@v4
8282 with :
8383 fetch-depth : 0
8484
85- - name : 🐍 Set up Python
85+ - name : Set up Python
8686 uses : actions/setup-python@v5
8787 with :
8888 python-version : ' 3.11'
8989
90- - name : 📦 Install Poetry
90+ - name : Install Poetry
9191 uses : snok/install-poetry@v1
9292 with :
9393 version : latest
9494 virtualenvs-create : true
9595 virtualenvs-in-project : true
9696
97- - name : 🔄 Load cached dependencies
97+ - name : Load cached dependencies
9898 uses : actions/cache@v4
9999 with :
100100 path : .venv
101101 key : venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }}
102102
103- - name : 🧰 Install dependencies
103+ - name : Install dependencies
104104 run : poetry install --only main
105105
106- - name : 🏗️ Build package
106+ - name : Build package
107107 run : poetry build
108108
109- - name : 📊 Package info
109+ - name : Package info
110110 run : |
111- echo "📦 Package files:"
111+ echo "Package files:"
112112 ls -la dist/
113113 echo ""
114- echo "📋 Package metadata:"
114+ echo "Package metadata:"
115115 poetry run twine check dist/* --strict
116116
117- - name : 🚀 Publish to PyPI
117+ - name : Publish to PyPI
118118 uses : pypa/gh-action-pypi-publish@release/v1
119119 with :
120120 print-hash : true
121121 verbose : true
122122
123- - name : ✅ Publication success
123+ - name : Publication success
124124 run : |
125- echo "🎉 ContextCraft successfully published to PyPI!"
126- echo "📦 Package: https://pypi.org/project/contextcraft/"
127- echo "🔗 Installation: pip install contextcraft"
125+ echo "ContextCraft successfully published to PyPI!"
126+ echo "Package: https://pypi.org/project/contextcraft/"
127+ echo "Installation: pip install contextcraft"
128128
129129 post-publish :
130- name : 📢 Post-publish Actions
130+ name : Post-publish Actions
131131 runs-on : ubuntu-latest
132132 needs : build-and-publish
133133 if : success()
134134 steps :
135- - name : 📥 Checkout repository
135+ - name : Checkout repository
136136 uses : actions/checkout@v4
137137
138- - name : 📧 Create release notification
138+ - name : Create release notification
139139 run : |
140- echo "🎉 ContextCraft has been published to PyPI!"
140+ echo "ContextCraft has been published to PyPI!"
141141 echo "Version: ${{ github.event.release.tag_name || github.sha }}"
142142 echo "PyPI: https://pypi.org/project/contextcraft/"
143143 echo "Docs: https://shorzinator.github.io/ContextCraft/"
144-
145- - name : 🔄 Trigger documentation update
146- uses : actions/github-script@v7
147- with :
148- script : |
149- github.rest.actions.createWorkflowDispatch({
150- owner: context.repo.owner,
151- repo: context.repo.repo,
152- workflow_id: 'docs.yml',
153- ref: 'main'
154- });
144+ echo "Release completed successfully!"
0 commit comments