|
6 | 6 | - 'v*'
|
7 | 7 |
|
8 | 8 | jobs:
|
| 9 | + changelog: |
| 10 | + runs-on: ubuntu-latest |
| 11 | + steps: |
| 12 | + - name: Checkout |
| 13 | + if: ${{ !contains(github.ref, '+') }} |
| 14 | + uses: actions/checkout@v4 |
| 15 | + with: |
| 16 | + fetch-depth: 0 |
| 17 | + |
| 18 | + - name: Generate |
| 19 | + if: ${{ !contains(github.ref, '+') }} |
| 20 | + run: | |
| 21 | + tags=($(git tag --merged $(git rev-parse HEAD) --sort=-creatordate)) |
| 22 | + preTag=$(grep -oP '^## \K.*' CHANGELOG.md | head -n 1) |
| 23 | + currentTag="" |
| 24 | + for ((i = 0; i <= ${#tags[@]}; i++)); do |
| 25 | + if (( i < ${#tags[@]} )); then |
| 26 | + tag=${tags[$i]} |
| 27 | + else |
| 28 | + tag="" |
| 29 | + fi |
| 30 | + if [ -n "$currentTag" ]; then |
| 31 | + if [ "$(echo -e "$currentTag\n$preTag" | sort -V | head -n 1)" == "$currentTag" ]; then |
| 32 | + break |
| 33 | + fi |
| 34 | + fi |
| 35 | + if [ -n "$currentTag" ]; then |
| 36 | + echo "## $currentTag" >> NEW_CHANGELOG.md |
| 37 | + echo "" >> NEW_CHANGELOG.md |
| 38 | + if [ -n "$tag" ]; then |
| 39 | + git log --pretty=format:"%B" "$tag..$currentTag" | awk 'NF {print "- " $0} !NF {print ""}' >> NEW_CHANGELOG.md |
| 40 | + else |
| 41 | + git log --pretty=format:"%B" "$currentTag" | awk 'NF {print "- " $0} !NF {print ""}' >> NEW_CHANGELOG.md |
| 42 | + fi |
| 43 | + echo "" >> NEW_CHANGELOG.md |
| 44 | + fi |
| 45 | + currentTag=$tag |
| 46 | + done |
| 47 | + cat CHANGELOG.md >> NEW_CHANGELOG.md |
| 48 | + cat NEW_CHANGELOG.md > CHANGELOG.md |
| 49 | +
|
| 50 | + - name: Commit |
| 51 | + if: ${{ !contains(github.ref, '+') }} |
| 52 | + run: | |
| 53 | + git add CHANGELOG.md |
| 54 | + if ! git diff --cached --quiet; then |
| 55 | + echo "Commit pushing" |
| 56 | + git config --local user.email "chen08209@gmail.com" |
| 57 | + git config --local user.name "chen08209" |
| 58 | + git commit -m "Update changelog" |
| 59 | + git push |
| 60 | + if [ $? -eq 0 ]; then |
| 61 | + echo "Push succeeded" |
| 62 | + else |
| 63 | + echo "Push failed" |
| 64 | + exit 1 |
| 65 | + fi |
| 66 | + fi |
| 67 | +
|
| 68 | + env: |
| 69 | + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| 70 | + |
9 | 71 | build:
|
| 72 | + needs: [ changelog ] |
10 | 73 | runs-on: ${{ matrix.os }}
|
11 | 74 | strategy:
|
12 | 75 | matrix:
|
|
27 | 90 | arch: arm64
|
28 | 91 |
|
29 | 92 | steps:
|
30 |
| - - name: Setup Mingw64 |
31 |
| - if: startsWith(matrix.platform,'windows') |
32 |
| - uses: msys2/setup-msys2@v2 |
33 |
| - with: |
34 |
| - msystem: mingw64 |
35 |
| - install: mingw-w64-x86_64-gcc |
36 |
| - update: true |
37 |
| - |
38 |
| - - name: Set Mingw64 Env |
39 |
| - if: startsWith(matrix.platform,'windows') |
40 |
| - run: | |
41 |
| - echo "${{ runner.temp }}\msys64\mingw64\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append |
42 |
| -
|
43 |
| - - name: Check Matrix |
44 |
| - run: | |
45 |
| - echo "Running on ${{ matrix.os }}" |
46 |
| - echo "Arch: ${{ runner.arch }}" |
47 |
| - gcc --version |
48 |
| -
|
49 | 93 | - name: Checkout
|
50 | 94 | uses: actions/checkout@v4
|
51 | 95 | with:
|
@@ -103,7 +147,6 @@ jobs:
|
103 | 147 | path: ./dist
|
104 | 148 | overwrite: true
|
105 | 149 |
|
106 |
| - |
107 | 150 | upload:
|
108 | 151 | permissions: write-all
|
109 | 152 | needs: [ build ]
|
|
0 commit comments