Skip to content

Commit 64bfd2c

Browse files
committed
update pdf release workflow
1 parent b4e0cd0 commit 64bfd2c

File tree

1 file changed

+109
-16
lines changed

1 file changed

+109
-16
lines changed

.github/workflows/release-pdfs.yml

Lines changed: 109 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,14 @@ on:
55
branches:
66
- main
77
- master
8+
tags:
9+
- "*-agm"
10+
- "*-egm"
811

912
jobs:
10-
build-and-release:
13+
build:
1114
runs-on: ubuntu-latest
15+
1216
steps:
1317
- name: Checkout Repository
1418
uses: actions/checkout@v3
@@ -20,10 +24,8 @@ jobs:
2024
2125
- name: Convert Markdown to PDF
2226
run: |
23-
DATE=$(date -u +'%Y-%m-%dT%H:%M')
24-
echo "Timestamp: $DATE"
25-
CONSTITUTION_FILE="Constitution-${DATE}.pdf"
26-
COMMON_ROOM_FILE="Common-Room-Rules-${DATE}.pdf"
27+
CONSTITUTION_FILE="Constitution.pdf"
28+
COMMON_ROOM_FILE="Common-Room-Rules.pdf"
2729
2830
curl -L -o logo.svg "https://raw.githubusercontent.com/redbrick/design-system/main/assets/logos/redbrick.svg"
2931
@@ -42,33 +44,124 @@ jobs:
4244
echo "CONSTITUTION_FILE=$CONSTITUTION_FILE" >> $GITHUB_ENV
4345
echo "COMMON_ROOM_FILE=$COMMON_ROOM_FILE" >> $GITHUB_ENV
4446
45-
- name: Create Release
46-
id: create_release
47+
# Master Release (Rolling)
48+
49+
- name: Delete existing master release and tag
50+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/heads/')
51+
run: |
52+
gh release delete master --yes || true
53+
git push origin :refs/tags/master || true
54+
env:
55+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
56+
57+
- name: Get previous AGM/EGM tag
58+
id: last_tag
59+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/heads/')
60+
run: |
61+
git fetch --tags
62+
TAG=$(git tag --list "*-agm" "*-egm" --sort=-creatordate | head -n 1)
63+
echo "LAST_TAG=$TAG" >> $GITHUB_ENV
64+
echo "Found last AGM/EGM tag: $TAG"
65+
66+
- name: Generate changelog
67+
id: changelog
68+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/heads/')
69+
run: |
70+
if [ -n "$LAST_TAG" ]; then
71+
LOG=$(gh api repos/${{ github.repository }}/compare/$LAST_TAG...HEAD \
72+
--jq '.commits | map("- " + .commit.message + " by @" + .author.login) | join("\n")')
73+
echo -e "## What's Changed\n$LOG\n\nFull Changelog: https://github.com/${{ github.repository }}/compare/$LAST_TAG...master" > RELEASE.md
74+
else
75+
echo "## What's Changed\nNo previous AGM/EGM tag found." > RELEASE.md
76+
fi
77+
env:
78+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
79+
LAST_TAG: ${{ env.LAST_TAG }}
80+
81+
- name: Create master Release with changelog
82+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/heads/')
83+
run: |
84+
gh release create master \
85+
--title "master Build" \
86+
--notes-file RELEASE.md \
87+
--prerelease \
88+
--target ${{ github.sha }}
89+
env:
90+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
91+
92+
- name: Get master release upload URL (retry if not found)
93+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/heads/')
94+
id: get_master_upload_url
95+
run: |
96+
for i in {1..5}; do
97+
echo "Attempt $i to fetch master release upload URL..."
98+
UPLOAD_URL=$(gh api repos/${{ github.repository }}/releases/tags/master --jq '.upload_url' 2>/dev/null) && break || sleep 3
99+
done
100+
101+
if [ -z "$UPLOAD_URL" ]; then
102+
echo "Failed to fetch upload_url after 5 attempts"
103+
exit 1
104+
fi
105+
106+
echo "upload_url=${UPLOAD_URL}" >> $GITHUB_OUTPUT
107+
env:
108+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
109+
110+
- name: Upload Constitution PDF (master)
111+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/heads/')
112+
uses: actions/upload-release-asset@v1
113+
env:
114+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
115+
with:
116+
upload_url: ${{ steps.get_master_upload_url.outputs.upload_url }}
117+
asset_path: ${{ env.CONSTITUTION_FILE }}
118+
asset_name: Constitution.pdf
119+
asset_content_type: application/pdf
120+
121+
- name: Upload Common Room PDF (master)
122+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/heads/')
123+
uses: actions/upload-release-asset@v1
124+
env:
125+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
126+
with:
127+
upload_url: ${{ steps.get_master_upload_url.outputs.upload_url }}
128+
asset_path: ${{ env.COMMON_ROOM_FILE }}
129+
asset_name: Common-Room-Rules.pdf
130+
asset_content_type: application/pdf
131+
132+
# Tagged Release (AGM/EGM)
133+
134+
- name: Create AGM/EGM Tag Release
135+
if: startsWith(github.ref, 'refs/tags/') && (contains(github.ref, '-agm') || contains(github.ref, '-egm'))
136+
id: create_tag_release
47137
uses: actions/create-release@v1
48138
env:
49139
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
50140
with:
51-
tag_name: "v${{ github.run_number }}"
52-
release_name: "Release v${{ github.run_number }}"
141+
tag_name: ${{ github.ref_name }}
142+
release_name: "Release ${{ github.ref_name }}"
53143
draft: false
54-
prerelease: true
144+
prerelease: false
55145

56-
- name: Upload Constitution.pdf
146+
- name: Upload Constitution PDF (tag)
147+
if: startsWith(github.ref, 'refs/tags/') && (contains(github.ref, '-agm') || contains(github.ref, '-egm'))
57148
uses: actions/upload-release-asset@v1
58149
env:
59150
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
60151
with:
61-
upload_url: ${{ steps.create_release.outputs.upload_url }}
152+
upload_url: ${{ steps.create_tag_release.outputs.upload_url }}
62153
asset_path: ${{ env.CONSTITUTION_FILE }}
63-
asset_name: ${{ env.CONSTITUTION_FILE }}
154+
asset_name: Constitution.pdf
64155
asset_content_type: application/pdf
65156

66-
- name: Upload Common-Room-Rules.pdf
157+
- name: Upload Common Room PDF (tag)
158+
if: startsWith(github.ref, 'refs/tags/') && (contains(github.ref, '-agm') || contains(github.ref, '-egm'))
67159
uses: actions/upload-release-asset@v1
68160
env:
69161
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
70162
with:
71-
upload_url: ${{ steps.create_release.outputs.upload_url }}
163+
upload_url: ${{ steps.create_tag_release.outputs.upload_url }}
72164
asset_path: ${{ env.COMMON_ROOM_FILE }}
73-
asset_name: ${{ env.COMMON_ROOM_FILE }}
165+
asset_name: Common-Room-Rules.pdf
74166
asset_content_type: application/pdf
167+

0 commit comments

Comments
 (0)