Skip to content

Commit 69b9b2a

Browse files
committed
Adding release
1 parent 5cefe8d commit 69b9b2a

File tree

1 file changed

+143
-0
lines changed

1 file changed

+143
-0
lines changed
Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
name: Create and Update Releases
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
jobs:
9+
get-release:
10+
runs-on: ubuntu-latest
11+
outputs:
12+
latest_release: ${{ steps.get_latest_release.outputs.latest_release }}
13+
steps:
14+
- name: Checkout repository
15+
uses: actions/checkout@v3
16+
17+
- name: Get the latest release tag
18+
id: get_latest_release
19+
env:
20+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
21+
run: |
22+
LATEST_RELEASE=$(gh release list --limit 1 --json tagName --jq '.[0].tagName' || echo "none")
23+
echo "Latest release tag: $LATEST_RELEASE"
24+
echo "::set-output name=latest_release::$LATEST_RELEASE"
25+
echo "latest_release=${latest_release}" >> $GITHUB_ENV
26+
continue-on-error: true
27+
28+
create-release:
29+
needs: get-release
30+
runs-on: ubuntu-latest
31+
if: needs.get-release.outputs.latest_release == ''
32+
steps:
33+
- name: print latest release output
34+
run: echo "Latest release ${{ needs.get-release.outputs.latest_release }}"
35+
36+
- name: Checkout repository
37+
uses: actions/checkout@v3
38+
39+
- name: Release doesn't exist so create one
40+
id: create_release
41+
env:
42+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
43+
run: |
44+
gh release create v1.0.0 --generate-notes --prerelease=false
45+
echo "Release created"
46+
47+
- name: Zip files of folders
48+
id: zip_folders
49+
run: |
50+
mkdir -p temp
51+
for folder in */; do
52+
if [ -d "$folder" ]; then
53+
folder_name=$(basename "$folder")
54+
zip -r "temp/${folder_name}.zip" "$folder_name"
55+
fi
56+
done
57+
echo "Zip files created"
58+
59+
- name: upload files to the release
60+
id: upload_files
61+
env:
62+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
63+
run: |
64+
for file in temp/*.zip; do
65+
gh release upload v1.0.0 "$file" --clobber
66+
echo "Uploaded $file, waiting to avoid rate limits..."
67+
sleep 3
68+
done
69+
70+
- name: clean up
71+
run: |
72+
rm -r temp
73+
74+
update-release:
75+
needs: get-release
76+
runs-on: ubuntu-latest
77+
if: needs.get-release.outputs.latest_release != ''
78+
steps:
79+
- name: Checkout repository
80+
uses: actions/checkout@v3
81+
82+
- name: Fetch latest tags
83+
run: |
84+
git fetch --tags
85+
86+
- name: Get changed files
87+
id: get_changes
88+
run: |
89+
if [ -n "${{ needs.get-release.outputs.latest_release }}" ]; then
90+
git fetch origin refs/tags/${{ needs.get-release.outputs.latest_release }}:refs/tags/${{ needs.get-release.outputs.latest_release }}
91+
changed_files=$(git diff --name-only ${{ needs.get-release.outputs.latest_release }} HEAD)
92+
echo "Changed files: $changed_files"
93+
echo "$changed_files" > changed_files.txt
94+
else
95+
echo "No latest release found"
96+
echo "" > changed_files.txt
97+
fi
98+
99+
- name: Identify changed folders
100+
id: identify_folders
101+
run: |
102+
if [ -s changed_files.txt ]; then
103+
changed_folders=$(awk -F/ '{print $1}' changed_files.txt | sort | uniq)
104+
echo "Changed folders: $changed_folders"
105+
echo "$changed_folders" > changed_folders.txt
106+
else
107+
echo "No changed files"
108+
echo "" > changed_folders.txt
109+
fi
110+
111+
- name: Archive changed folders
112+
run: |
113+
mkdir -p temp_archives
114+
while IFS= read -r folder; do
115+
if [ -d "$folder" ]; then
116+
zip -r "temp_archives/$folder.zip" "$folder"
117+
echo "Archived $folder"
118+
else
119+
echo "Folder $folder does not exist"
120+
fi
121+
done < changed_folders.txt
122+
123+
- name: Upload archives to release
124+
if: needs.get-release.outputs.latest_release != ''
125+
env:
126+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
127+
run: |
128+
while IFS= read -r folder; do
129+
archive="temp_archives/$folder.zip"
130+
if [ -f "$archive" ]; then
131+
gh release upload ${{ needs.get-release.outputs.latest_release }} "$archive" --clobber
132+
echo "Uploaded $archive, waiting to avoid rate limits..."
133+
else
134+
echo "Archive $archive not found"
135+
fi
136+
done < changed_folders.txt
137+
138+
- name: Clean up
139+
if: (needs.get-release.outputs.latest_release != '') && ( steps. )
140+
run: |
141+
rm -r temp_archives
142+
rm changed_folders.txt
143+
rm changed_files.txt

0 commit comments

Comments
 (0)