1
- name : Zip and Upload Folders with GITHUB_TOKEN
1
+ # .github/workflows/create-release-zips.yml
2
2
3
+ name : Nén Thư Mục và Tải Lên Release
4
+
5
+ # 1. Kích hoạt thủ công
3
6
on :
4
7
workflow_dispatch :
5
8
6
9
jobs :
7
- zip -and-upload :
10
+ build -and-upload :
8
11
runs-on : ubuntu-latest
12
+ # Cấp quyền ghi cho job để có thể tải file lên release
13
+ permissions :
14
+ contents : write
9
15
10
16
steps :
17
+ # Bước 1: Checkout mã nguồn của repo
11
18
- name : Checkout repository
12
19
uses : actions/checkout@v4
13
20
14
- - name : Create zip files for each folder (excluding .github and README.md)
21
+ # Bước 2: Nén từng thư mục thành file zip riêng
22
+ # - Lặp qua tất cả các thư mục ở cấp gốc.
23
+ # - Bỏ qua thư mục .github.
24
+ # - Nén mỗi thư mục, loại trừ file README.md.
25
+ - name : Zip individual folders
15
26
run : |
16
- mkdir -p zip_outputs
17
- for dir in */ ; do
18
- folder=$(basename "$dir")
19
- if [ "$folder" != ".github" ]; then
20
- zip -r "zip_outputs/${folder}.zip" "$dir" -x "${dir}README.md"
27
+ # Lặp qua tất cả các mục kết thúc bằng dấu gạch chéo (tức là các thư mục)
28
+ for dir in */; do
29
+ # Lấy tên thư mục không có dấu gạch chéo
30
+ dirname="${dir%/}"
31
+
32
+ # 3. Bỏ qua thư mục .github
33
+ if [ "$dirname" == ".github" ]; then
34
+ echo "Skipping .github directory..."
35
+ continue
21
36
fi
37
+
38
+ echo "Zipping '$dirname'..."
39
+ # 2. Nén thư mục thành file zip, loại trừ file README.md
40
+ zip -r "${dirname}.zip" "$dirname" -x "*/README.md"
22
41
done
23
42
24
- - name : Get upload URL of release with tag 'latest'
25
- id : get_upload_url
43
+ # Bước 3: Tải các file zip lên release mới nhất
44
+ # - Sử dụng GitHub CLI (gh) để tải lên.
45
+ # - 'latest' là một alias chỉ đến bản phát hành gần đây nhất.
46
+ - name : Upload zip files to latest release
47
+ env :
48
+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
26
49
run : |
27
- api_url="https://api.github.com/repos/${{ github.repository }}/releases/tags/latest"
28
- response=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" "$api_url")
29
-
30
- upload_url=$(echo "$response" | jq -r .upload_url | sed -e "s/{?name,label}//")
31
- echo "Upload URL: $upload_url"
32
- echo "upload_url=$upload_url" >> "$GITHUB_OUTPUT"
33
-
34
- - name : Upload zip files using GitHub API
35
- run : |
36
- for file in zip_outputs/*.zip; do
37
- filename=$(basename "$file")
38
- echo "Uploading $filename..."
39
- curl -s -X POST \
40
- -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
41
- -H "Content-Type: application/zip" \
42
- --data-binary @"$file" \
43
- "${{ steps.get_upload_url.outputs.upload_url }}?name=$filename"
44
- done
50
+ # 4. Upload các file zip vào release cuối cùng (latest)
51
+ gh release upload latest *.zip --clobber
52
+ echo "✅ All zip files have been uploaded to the latest release."
0 commit comments