Skip to content

Commit f876742

Browse files
author
PencilMario
committed
ci(release): 每次构建都上传打包产物
1 parent 5155962 commit f876742

4 files changed

Lines changed: 54 additions & 31 deletions

File tree

‎.github/workflows/release.yml‎

Lines changed: 22 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -71,14 +71,12 @@ jobs:
7171
echo "create_release=true" >> $GITHUB_OUTPUT
7272
fi
7373
74-
- name: Create release version file
75-
if: steps.get_version.outputs.is_development == 'false' && steps.check_release.outputs.create_release == 'true'
76-
run: |
74+
- name: Create release version file
75+
run: |
7776
echo "${{ steps.get_version.outputs.version }}" > game/python-packages/maica_release_version
7877
79-
- name: Download Ignore Translation Conflicts dependency
80-
if: steps.get_version.outputs.is_development == 'false' && steps.check_release.outputs.create_release == 'true'
81-
run: |
78+
- name: Download Ignore Translation Conflicts dependency
79+
run: |
8280
dependency_tmp_dir="$(mktemp -d)"
8381
dependency_archive="$dependency_tmp_dir/dependency.zip"
8482
dependency_extracted="$dependency_tmp_dir/extracted"
@@ -103,7 +101,6 @@ jobs:
103101
cp -R "$dependency_source" game/Submods/
104102
105103
- name: Download CertifiFixer dependency
106-
if: steps.get_version.outputs.is_development == 'false' && steps.check_release.outputs.create_release == 'true'
107104
env:
108105
GH_TOKEN: ${{ github.token }}
109106
run: |
@@ -131,30 +128,36 @@ jobs:
131128
cp -R "$dependency_source" game/Submods/
132129
133130
- name: Copy documentation into submod package
134-
if: steps.get_version.outputs.is_development == 'false' && steps.check_release.outputs.create_release == 'true'
135131
run: |
136132
cp README.md README_EN.md LICENSE game/Submods/MAICA_ChatSubmod/
137133
138134
- name: Create zip package
139-
if: steps.get_version.outputs.is_development == 'false' && steps.check_release.outputs.create_release == 'true'
140135
run: |
141136
zip -r MAICA_ChatSubmod-${{ steps.get_version.outputs.version }}.zip \
142137
characters \
143138
game \
144139
lib
145-
146-
- name: Generate Release Notes
147-
id: generate_release_notes
148-
if: steps.get_version.outputs.is_development == 'false' && steps.check_release.outputs.create_release == 'true'
149-
run: |
140+
141+
- name: Generate Release Notes
142+
id: generate_release_notes
143+
run: |
150144
# Extract release notes from the latest commit message or a predefined template
151145
release_notes=$(git log -1 --pretty=%B)
152146
# Convert release notes to GitHub Flavored Markdown
153147
echo "$release_notes" | sed 's/^/- /' > release_notes.md
154148
# Prepend version information
155149
echo "## MAICA ChatSubmod ${{ steps.get_version.outputs.version }}" | cat - release_notes.md > temp && mv temp release_notes.md
156-
echo "RELEASE_NOTES_PATH=release_notes.md" >> $GITHUB_OUTPUT
157-
150+
echo "RELEASE_NOTES_PATH=release_notes.md" >> $GITHUB_OUTPUT
151+
152+
- name: Upload artifact
153+
uses: actions/upload-artifact@v4
154+
with:
155+
name: release-files
156+
path: |
157+
MAICA_ChatSubmod-${{ steps.get_version.outputs.version }}.zip
158+
release_notes.md
159+
retention-days: 30
160+
158161
- name: Create Release
159162
if: steps.get_version.outputs.is_development == 'false' && steps.check_release.outputs.create_release == 'true'
160163
uses: softprops/action-gh-release@v2
@@ -171,17 +174,7 @@ jobs:
171174
run: |
172175
echo "Release ${{ steps.get_version.outputs.version }} already exists. Skipping release creation."
173176
174-
- name: Skip development build
175-
if: steps.get_version.outputs.is_development == 'true'
176-
run: |
177+
- name: Skip development build
178+
if: steps.get_version.outputs.is_development == 'true'
179+
run: |
177180
echo "Development build ${{ steps.get_version.outputs.version }} is not eligible for release."
178-
179-
- name: Upload artifact
180-
if: steps.get_version.outputs.is_development == 'false' && steps.check_release.outputs.create_release == 'true'
181-
uses: actions/upload-artifact@v4
182-
with:
183-
name: release-files
184-
path: |
185-
MAICA_ChatSubmod-${{ steps.get_version.outputs.version }}.zip
186-
release_notes.md
187-
retention-days: 30

‎tests/test_certifi_fixer_dependency.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def test_release_stages_certifi_fixer_before_creating_package():
2626
assert DEPENDENCY_REPO in dependency_block
2727
assert 'gh release download' in dependency_block
2828
assert '--pattern "CertifiFixer-*.zip"' in dependency_block
29-
assert "if: steps.get_version.outputs.is_development == 'false' && steps.check_release.outputs.create_release == 'true'" in dependency_block
29+
assert "if: steps.get_version.outputs.is_development == 'false' && steps.check_release.outputs.create_release == 'true'" not in dependency_block
3030
assert "unzip -q" in dependency_block
3131
assert "game/Submods/CertifiFixer" in dependency_block
3232
for filename in ("certifi_fixer.rpy", "core.py", "__init__.py", "cacert.pem"):

‎tests/test_ignore_translation_conflicts_dependency.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def test_release_stages_dependency_before_creating_package():
2323
dependency_block = workflow[download_step:package_step]
2424

2525
assert DEPENDENCY_URL in dependency_block
26-
assert "if: steps.get_version.outputs.is_development == 'false' && steps.check_release.outputs.create_release == 'true'" in dependency_block
26+
assert "if: steps.get_version.outputs.is_development == 'false' && steps.check_release.outputs.create_release == 'true'" not in dependency_block
2727
assert "curl" in dependency_block
2828
assert "--fail" in dependency_block
2929
assert "--location" in dependency_block

‎tests/test_release_artifact.py‎

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
from pathlib import Path
2+
3+
4+
WORKFLOW = (
5+
Path(__file__).resolve().parents[1] / ".github" / "workflows" / "release.yml"
6+
)
7+
8+
9+
def test_zip_and_artifact_are_created_even_when_release_is_skipped():
10+
workflow = WORKFLOW.read_text(encoding="utf-8")
11+
package_step = workflow.index("- name: Create zip package")
12+
artifact_step = workflow.index("- name: Upload artifact")
13+
release_step = workflow.index("- name: Create Release")
14+
15+
assert package_step < artifact_step < release_step
16+
for step_name in (
17+
"Create release version file",
18+
"Download Ignore Translation Conflicts dependency",
19+
"Download CertifiFixer dependency",
20+
"Copy documentation into submod package",
21+
"Create zip package",
22+
"Generate Release Notes",
23+
"Upload artifact",
24+
):
25+
block = workflow.split("- name: " + step_name, 1)[1].split("\n - name:", 1)[0]
26+
assert "\n if:" not in block
27+
28+
artifact = workflow[artifact_step:release_step]
29+
assert "MAICA_ChatSubmod-${{ steps.get_version.outputs.version }}.zip" in artifact
30+
assert "release_notes.md" in artifact

0 commit comments

Comments
 (0)