-
-
Notifications
You must be signed in to change notification settings - Fork 15
153 lines (145 loc) · 5.78 KB
/
windows.yaml
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
151
152
153
# Adapted from https://github.com/rust-lang/rustup/blob/master/.github/workflows/windows-builds-on-master.yaml
name: Windows
permissions:
contents: write
on:
pull_request:
branches:
- "*"
push:
branches:
- master
- feature/*
- hotfix/*
tags:
- v*
schedule:
- cron: "30 0 * * 1" # Every Monday at half past midnight UTC
jobs:
build:
strategy:
fail-fast: true
matrix:
platform:
- os-name: Windows-x86_64
runs-on: windows-latest
target: x86_64-pc-windows-msvc
- os-name: Windows-aarch64
runs-on: windows-latest
target: aarch64-pc-windows-msvc
runs-on: ${{ matrix.platform.runs-on }}
permissions: write-all
env:
RUSTFLAGS: -Ctarget-feature=+crt-static -Dwarnings
GH_TOKEN: ${{ github.token }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- run: rustup toolchain install stable --profile minimal
- run: rustup toolchain install nightly --allow-downgrade -c rustfmt
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: "true"
cache-all-crates: "true"
- run: cargo +nightly fmt --check
- run: cargo clippy
- uses: houseabsolute/actions-rust-cross@v0
with:
command: "build"
target: ${{ matrix.platform.target }}
args: "--locked --release"
- run: |
cargo install cargo-wix
cargo wix --no-build --nocapture --target ${{ matrix.platform.target }}
- uses: actions/upload-artifact@v4
with:
name: whkd-${{ matrix.platform.target }}-${{ github.sha }}
path: |
target/${{ matrix.platform.target }}/release/*.exe
target/${{ matrix.platform.target }}/release/*.pdb
target/wix/whkd-*.msi
retention-days: 14
release-dry-run:
needs: build
runs-on: windows-latest
permissions: write-all
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- shell: bash
run: |
TAG=${{ github.ref_name }}
echo "VERSION=${TAG#v}" >> $GITHUB_ENV
- uses: actions/download-artifact@v4
- shell: bash
run: ls -R
- run: |
Compress-Archive -Force ./whkd-x86_64-pc-windows-msvc-${{ github.sha }}/x86_64-pc-windows-msvc/release/*.exe whkd-$Env:VERSION-x86_64-pc-windows-msvc.zip
Copy-Item ./whkd-x86_64-pc-windows-msvc-${{ github.sha }}/wix/*x86_64.msi -Destination ./whkd-$Env:VERSION-x86_64.msi
echo "$((Get-FileHash whkd-$Env:VERSION-x86_64-pc-windows-msvc.zip).Hash.ToLower()) whkd-$Env:VERSION-x86_64-pc-windows-msvc.zip" >checksums.txt
Compress-Archive -Force ./whkd-aarch64-pc-windows-msvc-${{ github.sha }}/aarch64-pc-windows-msvc/release/*.exe whkd-$Env:VERSION-aarch64-pc-windows-msvc.zip
Copy-Item ./whkd-aarch64-pc-windows-msvc-${{ github.sha }}/wix/*aarch64.msi -Destination ./whkd-$Env:VERSION-aarch64.msi
echo "$((Get-FileHash whkd-$Env:VERSION-aarch64-pc-windows-msvc.zip).Hash.ToLower()) whkd-$Env:VERSION-aarch64-pc-windows-msvc.zip" >>checksums.txt
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: "true"
cache-all-crates: "true"
- shell: bash
run: |
if ! type kokai >/dev/null; then cargo install --locked kokai --force; fi
git tag -d nightly || true
kokai release --no-emoji --add-links github:commits,issues --ref "$(git tag --points-at HEAD)" >"CHANGELOG.md"
- uses: softprops/action-gh-release@v2
with:
body_path: "CHANGELOG.md"
draft: true
files: |
checksums.txt
*.zip
*.msi
release:
needs: build
runs-on: windows-latest
permissions: write-all
if: startsWith(github.ref, 'refs/tags/v')
env:
GH_TOKEN: ${{ github.token }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- shell: bash
run: |
TAG=${{ github.ref_name }}
echo "VERSION=${TAG#v}" >> $GITHUB_ENV
- uses: actions/download-artifact@v4
- run: |
Compress-Archive -Force ./whkd-x86_64-pc-windows-msvc-${{ github.sha }}/x86_64-pc-windows-msvc/release/*.exe whkd-$Env:VERSION-x86_64-pc-windows-msvc.zip
Copy-Item ./whkd-x86_64-pc-windows-msvc-${{ github.sha }}/wix/*x86_64.msi -Destination ./whkd-$Env:VERSION-x86_64.msi
echo "$((Get-FileHash whkd-$Env:VERSION-x86_64-pc-windows-msvc.zip).Hash.ToLower()) whkd-$Env:VERSION-x86_64-pc-windows-msvc.zip" >checksums.txt
Compress-Archive -Force ./whkd-aarch64-pc-windows-msvc-${{ github.sha }}/aarch64-pc-windows-msvc/release/*.exe whkd-$Env:VERSION-aarch64-pc-windows-msvc.zip
Copy-Item ./whkd-aarch64-pc-windows-msvc-${{ github.sha }}/wix/*aarch64.msi -Destination ./whkd-$Env:VERSION-aarch64.msi
echo "$((Get-FileHash whkd-$Env:VERSION-aarch64-pc-windows-msvc.zip).Hash.ToLower()) whkd-$Env:VERSION-aarch64-pc-windows-msvc.zip" >>checksums.txt
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: "true"
cache-all-crates: "true"
- shell: bash
run: |
if ! type kokai >/dev/null; then cargo install --locked kokai --force; fi
git tag -d nightly || true
kokai release --no-emoji --add-links github:commits,issues --ref "$(git tag --points-at HEAD)" >"CHANGELOG.md"
- uses: softprops/action-gh-release@v2
with:
body_path: "CHANGELOG.md"
files: |
checksums.txt
*.zip
*.msi
- if: startsWith(github.ref, 'refs/tags/v')
uses: vedantmgoyal2009/winget-releaser@v2
with:
identifier: LGUG2Z.whkd
token: ${{ secrets.WINGET_TOKEN }}