Skip to content

Commit c12d21c

Browse files
committed
workflow updated
1 parent 94b5494 commit c12d21c

File tree

1 file changed

+105
-32
lines changed

1 file changed

+105
-32
lines changed

.github/workflows/deploy.yml

Lines changed: 105 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,94 @@ on:
55
tags:
66
- "*"
77

8+
env:
9+
SVN_USERNAME: ${{ secrets.SVN_USERNAME }}
10+
SVN_PASSWORD: ${{ secrets.SVN_PASSWORD }}
11+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
12+
813
jobs:
14+
extract-release-notes:
15+
name: Extract Release Notes
16+
runs-on: ubuntu-latest
17+
outputs:
18+
release_notes: ${{ steps.release_notes.outputs.release_notes }}
19+
steps:
20+
- uses: actions/checkout@v3
21+
22+
- name: Find Readme File
23+
id: find_readme
24+
run: |
25+
for file in readme.txt Readme.txt README.txt README.md Readme.md readme.md; do
26+
if [ -f "$file" ]; then
27+
echo "readme_file=$file" >> $GITHUB_ENV
28+
break
29+
fi
30+
done
31+
32+
source $GITHUB_ENV
33+
34+
if [ -z "$readme_file" ]; then
35+
echo "::error::Readme file not found."
36+
exit 1
37+
fi
38+
39+
- name: Extract Release Notes
40+
id: release_notes
41+
run: |
42+
changelog_section_start="== Changelog =="
43+
readme_file="$readme_file"
44+
45+
if [[ "$GITHUB_REF" == refs/tags/* ]]; then
46+
plugin_version="${GITHUB_REF#refs/tags/}"
47+
else
48+
echo "::error::This workflow must be triggered by a tag push."
49+
exit 1
50+
fi
51+
52+
in_changelog=0
53+
found_version=0
54+
release_notes=""
55+
56+
while IFS= read -r line; do
57+
if [[ "$line" == "$changelog_section_start" ]]; then
58+
in_changelog=1
59+
continue
60+
fi
61+
62+
if [[ $in_changelog -eq 0 ]]; then
63+
continue
64+
fi
65+
66+
if [[ "$line" == "= ${plugin_version} =" ]]; then
67+
found_version=1
68+
continue
69+
fi
70+
71+
if [[ $found_version -eq 1 ]] && echo "$line" | grep -qE '^= [0-9]+\.[0-9]+\.[0-9]+ =$'; then
72+
break
73+
fi
74+
75+
if [[ $found_version -eq 1 ]] && echo "$line" | grep -qE '^\*'; then
76+
release_notes+="${line}\n"
77+
continue
78+
fi
79+
done < "$readme_file"
80+
81+
if [[ -z "$release_notes" ]]; then
82+
echo "::error::Failed to extract release notes for version ${plugin_version}."
83+
exit 1
84+
fi
85+
86+
# Output in a format usable by later jobs
87+
release_notes="${release_notes//'%'/'%25'}"
88+
release_notes="${release_notes//$'\n'/'%0A'}"
89+
release_notes="${release_notes//$'\r'/'%0D'}"
90+
echo "release_notes=$release_notes" >> $GITHUB_OUTPUT
91+
992
update-trunk:
1093
name: Update trunk in WordPress SVN
1194
runs-on: ubuntu-latest
12-
95+
needs: extract-release-notes
1396
steps:
1497
- uses: actions/checkout@v3
1598

@@ -18,22 +101,16 @@ jobs:
18101
sudo apt-get update
19102
sudo apt-get install -y subversion
20103
21-
- name: WordPress Plugin Deploy (Trunk Only)
104+
- name: Deploy to trunk
22105
uses: 10up/action-wordpress-plugin-deploy@stable
23106
with:
24-
skip-existing-assets: true
25107
skip-tags: true
26108
generate-zip: false
27109

28-
env:
29-
SVN_USERNAME: ${{ secrets.SVN_USERNAME }}
30-
SVN_PASSWORD: ${{ secrets.SVN_PASSWORD }}
31-
32110
tag-release:
33111
name: Tag SVN Release
34112
runs-on: ubuntu-latest
35113
needs: update-trunk
36-
37114
steps:
38115
- uses: actions/checkout@v3
39116

@@ -47,38 +124,34 @@ jobs:
47124
run: |
48125
echo "version=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
49126
50-
- name: WordPress Plugin Deploy (Tag Only)
127+
- name: Deploy tag
51128
uses: 10up/action-wordpress-plugin-deploy@stable
52129
with:
53130
skip-trunk: true
54131
skip-assets: true
55132
generate-zip: false
56133
tag: ${{ steps.version.outputs.version }}
57134

58-
env:
59-
SVN_USERNAME: ${{ secrets.SVN_USERNAME }}
60-
SVN_PASSWORD: ${{ secrets.SVN_PASSWORD }}
61-
62135
github-release:
63-
name: Create GitHub Release
64-
runs-on: ubuntu-latest
65-
needs: [tag-release]
66-
67-
steps:
68-
- uses: actions/checkout@v3
69-
70-
- name: Extract Plugin Version
71-
id: version
72-
run: |
73-
echo "version=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
136+
name: Create GitHub Release
137+
runs-on: ubuntu-latest
138+
needs: [tag-release, extract-release-notes]
139+
steps:
140+
- uses: actions/checkout@v3
74141

75-
- name: Create ZIP
76-
run: |
77-
zip -r "${{ github.event.repository.name }}.zip" . -x ".git/*" ".github/*"
142+
- name: Extract Plugin Version
143+
id: version
144+
run: |
145+
echo "version=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
78146
79-
- name: Create GitHub Release
80-
uses: softprops/action-gh-release@v2
81-
with:
82-
tag_name: ${{ steps.version.outputs.version }}
83-
files: ${{ github.event.repository.name }}.zip
147+
- name: Create ZIP Archive
148+
run: |
149+
zip -r "${{ github.event.repository.name }}.zip" . -x ".git/*" ".github/*"
84150
151+
- name: Publish GitHub Release
152+
uses: softprops/action-gh-release@v2
153+
with:
154+
tag_name: ${{ steps.version.outputs.version }}
155+
name: ${{ steps.version.outputs.version }}
156+
body: ${{ needs.extract-release-notes.outputs.release_notes }}
157+
files: ${{ github.event.repository.name }}.zip

0 commit comments

Comments
 (0)