-
Notifications
You must be signed in to change notification settings - Fork 1
150 lines (130 loc) · 5.49 KB
/
Copy pathcreate-release.yml
File metadata and controls
150 lines (130 loc) · 5.49 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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
name: Create Release
on:
workflow_call:
inputs:
tag_name:
required: true
type: string
artifact_name:
required: false
type: string
default: build-artifacts
workflow_dispatch:
inputs:
tag_name:
description: Release tag to create
required: true
type: string
artifact_name:
description: Artifact name to attach
required: false
default: build-artifacts
permissions:
contents: write
issues: read
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Check if enough tags exist (at least 2)
id: check_tags
run: |
TAG_COUNT=$(git tag --merged HEAD | wc -l)
if [ "$TAG_COUNT" -ge 2 ]; then
echo "HAS_TAGS=true" >> $GITHUB_OUTPUT
else
echo "HAS_TAGS=false" >> $GITHUB_OUTPUT
fi
- name: Generate changelog from issues
if: steps.check_tags.outputs.HAS_TAGS == 'true'
id: changelog
uses: janheinrichmerker/action-github-changelog-generator@v2.4
with:
token: ${{ secrets.GITHUB_TOKEN }}
issues: true
pullRequests: false
onlyLastTag: true
excludeLabels: 'duplicate,question,invalid,wontfix'
configureSections: |
{
"features": {
"prefix": "### 🚀 New Features",
"labels": ["feature", "feature auto"]
},
"enhancements": {
"prefix": "### ✨ Enhancements",
"labels": ["enhancement", "enhancement auto"]
},
"localization": {
"prefix": "### 🌐 Localization",
"labels": ["localization", "localization auto"]
},
"documentation": {
"prefix": "### 📝 Documentation",
"labels": ["documentation", "documentation auto"]
},
"bugfixes": {
"prefix": "### 🐛 Fixed Bugs",
"labels": ["bug", "bug auto"]
}
}
output: CHANGELOG.md
- name: Create placeholder changelog when not enough tags
if: steps.check_tags.outputs.HAS_TAGS == 'false'
run: |
echo "## What's Changed" > CHANGELOG.md
echo "Initial release" >> CHANGELOG.md
- name: Show generated changelog
run: cat CHANGELOG.md
- name: Append installation section
run: |
TAG="${{ inputs.tag_name != '' && inputs.tag_name || github.event.inputs.tag_name }}"
VERSION="${TAG#v}"
cp CHANGELOG.md RELEASE.md
cat <<EOF >> RELEASE.md
---
# Installation
## Windows
Several installer options are available:
| Description | Files |
|-------------|-------|
| **Universal installer (EXE)** — universal installer for **x86 and x64**, supports installation **for the current user or for all users** | [pobatch‑${VERSION}‑any‑x86‑x64.exe](https://github.com/plaintool/pobatch/releases/download/${TAG}/pobatch-${VERSION}-any-x86-x64.exe) |
| **User installer (MSI)** — installs the application **for the current user** | [pobatch‑${VERSION}‑x64.msi](https://github.com/plaintool/pobatch/releases/download/${TAG}/pobatch-${VERSION}-x64.msi)<br>[pobatch‑${VERSION}‑x86.msi](https://github.com/plaintool/pobatch/releases/download/${TAG}/pobatch-${VERSION}-x86.msi) |
| **System installer (MSI)** — installs the application **for all users on the system** | [pobatch‑${VERSION}‑x64‑allusers.msi](https://github.com/plaintool/pobatch/releases/download/${TAG}/pobatch-${VERSION}-x64-allusers.msi)<br>[pobatch‑${VERSION}‑x86‑allusers.msi](https://github.com/plaintool/pobatch/releases/download/${TAG}/pobatch-${VERSION}-x86-allusers.msi) |
| **Portable version** — saves its settings to **form_settings.json** if it is near the executable; otherwise, in the user directory | [pobatch‑${VERSION}‑x86‑x64‑portable.zip](https://github.com/plaintool/pobatch/releases/download/${TAG}/pobatch-${VERSION}-x86-x64-portable.zip) |
## Linux
### *Debian-like systems (Debian, Ubuntu, etc.)*
\`\`\`bash
wget https://github.com/plaintool/pobatch/releases/download/${TAG}/pobatch-${VERSION}.deb
sudo apt install ./pobatch-${VERSION}.deb
\`\`\`
### *RPM-based systems (Fedora, RHEL, CentOS, openSUSE, etc.)*
\`\`\`bash
wget https://github.com/plaintool/pobatch/releases/download/${TAG}/pobatch-${VERSION}.rpm
sudo rpm -i ./pobatch-${VERSION}.rpm
\`\`\`
EOF
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
pattern: ${{ inputs.artifact_name || github.event.inputs.artifact_name }}
path: dist
merge-multiple: true
- name: Create GitHub release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ inputs.tag_name || github.event.inputs.tag_name }}
body_path: RELEASE.md
draft: true
prerelease: false
files: |
dist/**/*.exe
dist/**/*.msi
dist/**/*.zip
dist/**/*.deb
dist/**/*.rpm
dist/**/*.tar.gz