Skip to content

Commit 90065c0

Browse files
committed
Add CI/CD PDF Workflow
1 parent 31d645a commit 90065c0

File tree

1 file changed

+93
-0
lines changed

1 file changed

+93
-0
lines changed

.github/workflows/release.yml

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
name: Release
2+
3+
on:
4+
workflow_dispatch: ~
5+
push:
6+
branches: [ master ]
7+
8+
jobs:
9+
10+
# Create a Release
11+
create_release:
12+
name: 🚀 Create Release
13+
runs-on: ubuntu-latest
14+
outputs:
15+
release_exists: ${{ steps.check_release.outputs.release_exists }}
16+
release_id: ${{ steps.check_release.outputs.release_id }}
17+
upload_url: ${{ steps.create_release.outputs.upload_url }}
18+
steps:
19+
- name: Get current date
20+
id: date
21+
run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
22+
- name: Check if release exists
23+
id: check_release
24+
run: |
25+
release_name="${{ steps.date.outputs.date }}"
26+
release_data=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" "https://api.github.com/repos/${{ github.repository }}/releases/tags/${release_name}")
27+
if [ "$release_id" != "null" ]; then
28+
echo "release_exists=true" >> $GITHUB_OUTPUT
29+
echo "release_id=$(echo $release_data | jq -r '.id')" >> $GITHUB_OUTPUT
30+
else
31+
echo "release_exists=false" >> $GITHUB_OUTPUT
32+
fi
33+
- name: Create Release
34+
id: create_release
35+
uses: actions/create-release@v1
36+
if: steps.check_release.outputs.release_exists == 'false'
37+
env:
38+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
39+
with:
40+
tag_name: ${{ steps.date.outputs.date }}
41+
release_name: Amendment ${{ steps.date.outputs.date }}
42+
draft: false
43+
prerelease: false
44+
45+
upload_pdf:
46+
name: 🚀 Upload PDF Copy
47+
needs: create_release # Depends on release being created for upload URL
48+
runs-on: ubuntu-latest
49+
steps:
50+
- uses: actions/checkout@v3
51+
- name: Install TexLive, TexLive formats-extra, Git, and Make
52+
run: |
53+
sudo apt-get update
54+
sudo apt-get install -y texlive texlive-formats-extra git make
55+
- name: 🔨 Build
56+
run: |
57+
make
58+
- name: 🌥️⬆️ Upload Assets - New Release
59+
if: needs.create_release.outputs.release_exists == 'false'
60+
uses: actions/upload-release-asset@v1
61+
env:
62+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
63+
with:
64+
upload_url: ${{ needs.create_release.outputs.upload_url }}
65+
asset_name: Constitution.pdf
66+
asset_path: ./constitution.pdf
67+
asset_content_type: application/pdf
68+
- name: Upload Assets - Existing Release - Delete Existing Asset
69+
if: needs.create_release.outputs.release_exists == 'true'
70+
run: |
71+
asset_id=$(curl -L \
72+
-H "Accept: application/vnd.github+json" \
73+
-H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
74+
-H "X-GitHub-Api-Version: 2022-11-28" \
75+
https://api.github.com/repos/${{ github.repository }}/releases/${{ needs.create_release.outputs.release_id }}/assets | jq '.[] | select(.name == "Constitution.pdf") | .id')
76+
77+
curl -L \
78+
-X DELETE \
79+
-H "Accept: application/vnd.github+json" \
80+
-H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
81+
-H "X-GitHub-Api-Version: 2022-11-28" \
82+
https://api.github.com/repos/${{ github.repository }}/releases/assets/$asset_id
83+
- name: 🌥️⬆️ Upload Assets - Existing Release
84+
if: needs.create_release.outputs.release_exists == 'true'
85+
uses: actions/upload-release-asset@v1
86+
env:
87+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
88+
with:
89+
upload_url: "https://uploads.github.com/repos/${{ github.repository }}/releases/${{ needs.create_release.outputs.release_id }}/assets?name=Constitution.pdf"
90+
asset_name: Constitution.pdf
91+
asset_path: ./constitution.pdf
92+
asset_content_type: application/pdf
93+

0 commit comments

Comments
 (0)