Skip to content

Commit 19eed98

Browse files
CopilotRbb666
andcommitted
Implement RT-Thread 2025 Roadmap: Enhanced testing, automation, and BSP optimization
Co-authored-by: Rbb666 <[email protected]>
1 parent 84c040e commit 19eed98

File tree

14 files changed

+1517
-2
lines changed

14 files changed

+1517
-2
lines changed

.github/workflows/action_utest.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ jobs:
4646
- {UTEST: "kernel/mem/riscv64", RTT_BSP: "bsp/qemu-virt64-riscv", QEMU_ARCH: "riscv64", QEMU_MACHINE: "virt", CONFIG_FILE: "kernel/mem.conf", SD_FILE: "None", RUN: "yes"}
4747
- {UTEST: "kernel/atomic/riscv64", RTT_BSP: "bsp/qemu-virt64-riscv", QEMU_ARCH: "riscv64", QEMU_MACHINE: "virt", CONFIG_FILE: "kernel/atomic.conf", SD_FILE: "None", RUN: "yes"}
4848
- {UTEST: "kernel/atomic_c11/riscv64", RTT_BSP: "bsp/qemu-virt64-riscv", QEMU_ARCH: "riscv64", QEMU_MACHINE: "virt", CONFIG_FILE: "kernel/atomic_c11.conf", SD_FILE: "None", RUN: "yes"}
49+
- {UTEST: "components/all", RTT_BSP: "bsp/qemu-vexpress-a9", QEMU_ARCH: "arm", QEMU_MACHINE: "vexpress-a9", CONFIG_FILE: "components/components.conf", SD_FILE: "sd.bin", RUN: "yes"}
50+
- {UTEST: "drivers/all", RTT_BSP: "bsp/qemu-vexpress-a9", QEMU_ARCH: "arm", QEMU_MACHINE: "vexpress-a9", CONFIG_FILE: "drivers/drivers.conf", SD_FILE: "sd.bin", RUN: "no"}
4951
- {UTEST: "rtsmart/arm", RTT_BSP: "bsp/qemu-vexpress-a9", QEMU_ARCH: "arm", QEMU_MACHINE: "vexpress-a9", CONFIG_FILE: "rtsmart/base.conf", SD_FILE: "sd.bin", RUN: "no"}
5052
- {UTEST: "rtsmart/aarch64", RTT_BSP: "bsp/qemu-virt64-aarch64", QEMU_ARCH: "aarch64", QEMU_MACHINE: "virt", CONFIG_FILE: "rtsmart/base.conf", SD_FILE: "sd.bin", RUN: "no"}
5153
- {UTEST: "rtsmart/riscv64", RTT_BSP: "bsp/qemu-virt64-riscv", QEMU_ARCH: "riscv64", QEMU_MACHINE: "virt", CONFIG_FILE: "rtsmart/base.conf", SD_FILE: "None", RUN: "yes"}
Lines changed: 253 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,253 @@
1+
#
2+
# Copyright (c) 2006-2025, RT-Thread Development Team
3+
#
4+
# SPDX-License-Identifier: Apache-2.0
5+
#
6+
# Change Logs:
7+
# Date Author Notes
8+
# 2025-01-03 Copilot Add automated tagging workflow for RT-Thread 2025 roadmap
9+
#
10+
11+
name: Automated Release Tagging
12+
13+
# Controls when the action will run
14+
on:
15+
workflow_dispatch:
16+
inputs:
17+
version_type:
18+
description: 'Version type to release'
19+
required: true
20+
default: 'patch'
21+
type: choice
22+
options:
23+
- patch
24+
- minor
25+
- major
26+
- custom
27+
custom_version:
28+
description: 'Custom version (only if version_type is custom)'
29+
required: false
30+
type: string
31+
release_notes:
32+
description: 'Release notes'
33+
required: false
34+
type: string
35+
default: 'Automated release'
36+
37+
permissions:
38+
contents: write
39+
pull-requests: read
40+
41+
jobs:
42+
create_release:
43+
runs-on: ubuntu-22.04
44+
name: Create Automated Release
45+
if: github.repository_owner == 'RT-Thread' && github.ref == 'refs/heads/master'
46+
47+
steps:
48+
- uses: actions/checkout@main
49+
with:
50+
fetch-depth: 0
51+
token: ${{ secrets.GITHUB_TOKEN }}
52+
53+
- name: Configure Git
54+
run: |
55+
git config user.name "RT-Thread Bot"
56+
git config user.email "[email protected]"
57+
58+
- name: Get Current Version
59+
id: current_version
60+
run: |
61+
# Try to get the latest tag, fallback to v5.1.0 if no tags exist
62+
LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v5.1.0")
63+
echo "latest_tag=$LATEST_TAG" >> $GITHUB_OUTPUT
64+
65+
# Extract version components
66+
VERSION=${LATEST_TAG#v}
67+
MAJOR=$(echo $VERSION | cut -d. -f1)
68+
MINOR=$(echo $VERSION | cut -d. -f2)
69+
PATCH=$(echo $VERSION | cut -d. -f3)
70+
71+
echo "major=$MAJOR" >> $GITHUB_OUTPUT
72+
echo "minor=$MINOR" >> $GITHUB_OUTPUT
73+
echo "patch=$PATCH" >> $GITHUB_OUTPUT
74+
75+
echo "Current version: $LATEST_TAG ($MAJOR.$MINOR.$PATCH)"
76+
77+
- name: Calculate New Version
78+
id: new_version
79+
run: |
80+
MAJOR=${{ steps.current_version.outputs.major }}
81+
MINOR=${{ steps.current_version.outputs.minor }}
82+
PATCH=${{ steps.current_version.outputs.patch }}
83+
84+
case "${{ github.event.inputs.version_type }}" in
85+
"major")
86+
NEW_MAJOR=$((MAJOR + 1))
87+
NEW_MINOR=0
88+
NEW_PATCH=0
89+
;;
90+
"minor")
91+
NEW_MAJOR=$MAJOR
92+
NEW_MINOR=$((MINOR + 1))
93+
NEW_PATCH=0
94+
;;
95+
"patch")
96+
NEW_MAJOR=$MAJOR
97+
NEW_MINOR=$MINOR
98+
NEW_PATCH=$((PATCH + 1))
99+
;;
100+
"custom")
101+
if [[ -n "${{ github.event.inputs.custom_version }}" ]]; then
102+
CUSTOM_VERSION="${{ github.event.inputs.custom_version }}"
103+
# Remove 'v' prefix if present
104+
CUSTOM_VERSION=${CUSTOM_VERSION#v}
105+
NEW_VERSION="v$CUSTOM_VERSION"
106+
else
107+
echo "Custom version is required when version_type is custom"
108+
exit 1
109+
fi
110+
;;
111+
esac
112+
113+
if [[ "${{ github.event.inputs.version_type }}" != "custom" ]]; then
114+
NEW_VERSION="v$NEW_MAJOR.$NEW_MINOR.$NEW_PATCH"
115+
fi
116+
117+
echo "new_version=$NEW_VERSION" >> $GITHUB_OUTPUT
118+
echo "New version: $NEW_VERSION"
119+
120+
- name: Update Version in Files
121+
env:
122+
NEW_VERSION: ${{ steps.new_version.outputs.new_version }}
123+
run: |
124+
# Update version in include/rtdef.h if it exists
125+
if [ -f "include/rtdef.h" ]; then
126+
# Look for RT_VERSION patterns and update them
127+
sed -i "s/#define RT_VERSION.*/#define RT_VERSION \"${NEW_VERSION#v}\"/" include/rtdef.h || true
128+
fi
129+
130+
# Update version in Kconfig if it exists
131+
if [ -f "Kconfig" ]; then
132+
sed -i "s/default \".*\"/default \"${NEW_VERSION#v}\"/" Kconfig || true
133+
fi
134+
135+
# Update version in package.json if it exists (for any package manager integration)
136+
if [ -f "package.json" ]; then
137+
sed -i "s/\"version\": \".*\"/\"version\": \"${NEW_VERSION#v}\"/" package.json || true
138+
fi
139+
140+
- name: Generate Changelog
141+
id: changelog
142+
run: |
143+
LATEST_TAG="${{ steps.current_version.outputs.latest_tag }}"
144+
NEW_VERSION="${{ steps.new_version.outputs.new_version }}"
145+
146+
# Generate changelog since last tag
147+
if git tag --list | grep -q "$LATEST_TAG"; then
148+
COMMITS=$(git log --oneline --no-merges ${LATEST_TAG}..HEAD)
149+
else
150+
COMMITS=$(git log --oneline --no-merges HEAD~50..HEAD)
151+
fi
152+
153+
CHANGELOG_FILE="CHANGELOG_$NEW_VERSION.md"
154+
155+
echo "# Changelog for $NEW_VERSION" > "$CHANGELOG_FILE"
156+
echo "" >> "$CHANGELOG_FILE"
157+
echo "## Changes since $LATEST_TAG" >> "$CHANGELOG_FILE"
158+
echo "" >> "$CHANGELOG_FILE"
159+
echo "$COMMITS" >> "$CHANGELOG_FILE"
160+
echo "" >> "$CHANGELOG_FILE"
161+
echo "## RT-Thread 2025 Roadmap Progress" >> "$CHANGELOG_FILE"
162+
echo "" >> "$CHANGELOG_FILE"
163+
echo "This release includes progress on the RT-Thread 2025 roadmap:" >> "$CHANGELOG_FILE"
164+
echo "- ✅ Enhanced testing infrastructure with automated workflows" >> "$CHANGELOG_FILE"
165+
echo "- ✅ Improved code coverage reporting" >> "$CHANGELOG_FILE"
166+
echo "- ✅ Automated release tagging system" >> "$CHANGELOG_FILE"
167+
echo "- ⏳ Continued BSP and component improvements" >> "$CHANGELOG_FILE"
168+
echo "" >> "$CHANGELOG_FILE"
169+
echo "For full roadmap details, see: https://github.com/RT-Thread/rt-thread/issues/9822" >> "$CHANGELOG_FILE"
170+
echo "" >> "$CHANGELOG_FILE"
171+
echo "## Release Notes" >> "$CHANGELOG_FILE"
172+
echo "" >> "$CHANGELOG_FILE"
173+
echo "${{ github.event.inputs.release_notes }}" >> "$CHANGELOG_FILE"
174+
175+
echo "changelog_file=$CHANGELOG_FILE" >> $GITHUB_OUTPUT
176+
177+
- name: Commit Version Changes
178+
env:
179+
NEW_VERSION: ${{ steps.new_version.outputs.new_version }}
180+
run: |
181+
git add -A
182+
if git diff --staged --quiet; then
183+
echo "No changes to commit"
184+
else
185+
git commit -m "chore: bump version to $NEW_VERSION
186+
187+
This automated commit updates version information for release $NEW_VERSION
188+
as part of the RT-Thread 2025 roadmap automated tagging system.
189+
190+
Related to #9822"
191+
git push origin master
192+
fi
193+
194+
- name: Create Tag and Release
195+
env:
196+
NEW_VERSION: ${{ steps.new_version.outputs.new_version }}
197+
CHANGELOG_FILE: ${{ steps.changelog.outputs.changelog_file }}
198+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
199+
run: |
200+
# Create annotated tag
201+
git tag -a "$NEW_VERSION" -m "Release $NEW_VERSION
202+
203+
Automated release created as part of RT-Thread 2025 roadmap.
204+
See changelog for details.
205+
206+
Related to #9822"
207+
208+
# Push tag
209+
git push origin "$NEW_VERSION"
210+
211+
# Create GitHub release
212+
gh release create "$NEW_VERSION" \
213+
--title "RT-Thread $NEW_VERSION" \
214+
--notes-file "$CHANGELOG_FILE" \
215+
--generate-notes
216+
217+
- name: Update Issue Comment
218+
uses: actions/github-script@v6
219+
with:
220+
script: |
221+
const newVersion = '${{ steps.new_version.outputs.new_version }}';
222+
223+
const body = `## 🚀 Automated Release Created: ${newVersion}
224+
225+
A new release has been automatically created as part of the RT-Thread 2025 roadmap implementation.
226+
227+
**Release Details:**
228+
- **Version**: ${newVersion}
229+
- **Type**: ${{ github.event.inputs.version_type }}
230+
- **Created**: ${new Date().toISOString()}
231+
232+
**Roadmap Progress:**
233+
- ✅ Automated release tagging system implemented
234+
- ✅ Enhanced CI/CD workflows
235+
- ✅ Code coverage integration
236+
237+
🔗 [View Release](https://github.com/RT-Thread/rt-thread/releases/tag/${newVersion})
238+
`;
239+
240+
try {
241+
await github.rest.issues.createComment({
242+
issue_number: 9822,
243+
owner: 'RT-Thread',
244+
repo: 'rt-thread',
245+
body: body
246+
});
247+
} catch (error) {
248+
console.log('Could not comment on issue:', error.message);
249+
}
250+
251+
- name: Cleanup
252+
run: |
253+
rm -f CHANGELOG_*.md

0 commit comments

Comments
 (0)