-
Notifications
You must be signed in to change notification settings - Fork 0
123 lines (101 loc) · 3.29 KB
/
Copy pathbuild-module.yml
File metadata and controls
123 lines (101 loc) · 3.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
name: Ultimate Release System
on:
push:
branches: [ main ]
concurrency:
group: release-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: write
env:
MODULE_ID: ColorOS-Themes-Rock
jobs:
build:
name: Ultimate PRO Release System
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Skip conditions
run: |
MSG="${{ github.event.head_commit.message }}"
if echo "$MSG" | grep -qi "\[skip release\]"; then
echo "Skipping release"
exit 0
fi
- name: Cache dependencies
uses: actions/cache@v4
with:
path: |
~/.cache
~/.gradle
key: ${{ runner.os }}-cache
- name: Install tools
run: |
sudo apt-get update
sudo apt-get install -y zip coreutils
- name: Detect channel
id: channel
run: |
if echo "${{ github.event.head_commit.message }}" | grep -qi "beta"; then
echo "channel=beta" >> $GITHUB_OUTPUT
else
echo "channel=stable" >> $GITHUB_OUTPUT
fi
- name: Get latest tag
id: tag
run: |
git fetch --tags
LATEST=$(git tag --sort=-v:refname | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+' | head -n 1 || true)
[ -z "$LATEST" ] && LATEST="v0.0.0"
echo "latest=$LATEST" >> $GITHUB_OUTPUT
- name: Compute version
id: version
run: |
LATEST="${{ steps.tag.outputs.latest }}"
VERSION_NUM=${LATEST#v}
IFS='.' read -r MAJOR MINOR PATCH <<< "$VERSION_NUM"
PATCH=$((PATCH+1))
CHANNEL="${{ steps.channel.outputs.channel }}"
if [ "$CHANNEL" = "beta" ]; then
NEW_VERSION="v${MAJOR}.${MINOR}.${PATCH}-beta"
else
NEW_VERSION="v${MAJOR}.${MINOR}.${PATCH}"
fi
# prevent duplicate tag
if git rev-parse "$NEW_VERSION" >/dev/null 2>&1; then
echo "Tag exists, skipping"
exit 0
fi
echo "MODULE_VERSION=$NEW_VERSION" >> $GITHUB_ENV
- name: Generate changelog
run: |
echo "# ColorOS Themes Rock ${MODULE_VERSION}" > RELEASE_NOTES.md
echo "" >> RELEASE_NOTES.md
git log $(git describe --tags --abbrev=0 2>/dev/null || echo '')..HEAD --pretty=format:'- %s' >> RELEASE_NOTES.md || true
echo "" >> RELEASE_NOTES.md
echo "## Channel: ${{ steps.channel.outputs.channel }}" >> RELEASE_NOTES.md
- name: Package module
run: bash scripts/package.sh
- name: Generate checksum
run: |
cd dist
for f in *.zip; do
sha256sum "$f" > "$f.sha256"
done
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: Ultimate-Release-${{ env.MODULE_VERSION }}
path: dist/*
- name: Publish Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.MODULE_VERSION }}
name: ColorOS Themes Rock ${{ env.MODULE_VERSION }}
body_path: RELEASE_NOTES.md
files: dist/*
draft: false
prerelease: ${{ contains(env.MODULE_VERSION, 'beta') }}