77
88permissions :
99 contents : write
10- packages : write
1110
1211env :
1312 CARGO_TERM_COLOR : always
1413
1514jobs :
1615 create-release :
17- name : Create Release
1816 runs-on : ubuntu-latest
19- outputs :
20- release_id : ${{ steps.create_release.outputs.id }}
21- release_version : ${{ env.RELEASE_VERSION }}
2217 steps :
23- - name : Checkout
24- uses : actions/checkout@v4
25-
26- - name : Get release version from tag
27- run : |
28- echo "RELEASE_VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
29- echo "version is: ${{ env.RELEASE_VERSION }}"
30-
31- - name : Create Release
32- id : create_release
33- uses : softprops/action-gh-release@v2
18+ - uses : actions/checkout@v4
19+ - uses : taiki-e/create-gh-release-action@v1
3420 with :
35- name : 🦫 TLSferret ${{ env.RELEASE_VERSION }}
36- body : |
37- # 🦫 TLSferret ${{ env.RELEASE_VERSION }}
38-
39- Fast SSL/TLS security scanner written in Rust.
40-
41- ## Download
42-
43- Choose the appropriate binary for your platform:
44-
45- ### Linux
46- - **x86_64**: `tlsferret-${{ env.RELEASE_VERSION }}-x86_64-unknown-linux-gnu.tar.gz`
47- - **ARM64**: `tlsferret-${{ env.RELEASE_VERSION }}-aarch64-unknown-linux-gnu.tar.gz`
48-
49- ### macOS
50- - **Intel**: `tlsferret-${{ env.RELEASE_VERSION }}-x86_64-apple-darwin.tar.gz`
51- - **Apple Silicon**: `tlsferret-${{ env.RELEASE_VERSION }}-aarch64-apple-darwin.tar.gz`
52-
53- ### Windows
54- - **x86_64**: `tlsferret-${{ env.RELEASE_VERSION }}-x86_64-pc-windows-msvc.zip`
55-
56- ## Quick Start
57-
58- ```bash
59- # Extract the archive and run
60- tlsferret example.com
61-
62- # STARTTLS example
63- tlsferret smtp.example.com:587 --starttls smtp
64- ```
65-
66- ## What's New
67-
68- See the [CHANGELOG](https://github.com/shyuan/tlsferret/commits/${{ env.RELEASE_VERSION }}) for details.
69-
70- ## Checksums
71-
72- SHA256 checksums are provided for security verification.
73- draft : false
74- prerelease : false
75- generate_release_notes : true
21+ changelog : CHANGELOG.md
22+ title : 🦫 TLSferret $tag
23+ token : ${{ secrets.GITHUB_TOKEN }}
7624
77- build-release :
78- name : Build Release
79- needs : ['create-release']
80- runs-on : ${{ matrix.build.os }}
81- env :
82- CARGO : cargo
25+ upload-assets :
26+ needs : create-release
8327 strategy :
8428 matrix :
85- build :
29+ include :
8630 # Linux
87- - {
88- NAME : linux-x64-gnu,
89- OS : ubuntu-24.04,
90- TOOLCHAIN : stable,
91- TARGET : x86_64-unknown-linux-gnu,
92- }
93- - {
94- NAME : linux-arm64-gnu,
95- OS : ubuntu-24.04,
96- TOOLCHAIN : stable,
97- TARGET : aarch64-unknown-linux-gnu,
98- }
99- # macOS
100- - {
101- NAME : darwin-x64,
102- OS : macos-latest,
103- TOOLCHAIN : stable,
104- TARGET : x86_64-apple-darwin,
105- }
106- - {
107- NAME : darwin-arm64,
108- OS : macos-latest,
109- TOOLCHAIN : stable,
110- TARGET : aarch64-apple-darwin,
111- }
31+ - target : x86_64-unknown-linux-gnu
32+ os : ubuntu-latest
33+ - target : aarch64-unknown-linux-gnu
34+ os : ubuntu-latest
35+ # macOS
36+ - target : x86_64-apple-darwin
37+ os : macos-latest
38+ - target : aarch64-apple-darwin
39+ os : macos-latest
11240 # Windows
113- - {
114- NAME : windows-x64,
115- OS : windows-latest,
116- TOOLCHAIN : stable,
117- TARGET : x86_64-pc-windows-msvc,
118- }
119-
41+ - target : x86_64-pc-windows-msvc
42+ os : windows-latest
43+ runs-on : ${{ matrix.os }}
12044 steps :
121- - name : Checkout
122- uses : actions/checkout@v4
123-
124- - name : Set the release version
125- run : echo "RELEASE_VERSION=${GITHUB_REF:10}" >> $GITHUB_ENV
126- shell : bash
127-
128- - name : Install Rust toolchain
129- uses : dtolnay/rust-toolchain@stable
130- with :
131- toolchain : ${{ matrix.build.TOOLCHAIN }}
132- target : ${{ matrix.build.TARGET }}
133-
134- - name : Cache cargo registry
135- uses : actions/cache@v4
136- with :
137- path : ~/.cargo/registry
138- key : ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
139-
140- - name : Cache cargo index
141- uses : actions/cache@v4
142- with :
143- path : ~/.cargo/git
144- key : ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }}
145-
146- - name : Cache cargo build
147- uses : actions/cache@v4
148- with :
149- path : target
150- key : ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
151-
152- - name : Install cross
153- if : matrix.build.TARGET == 'aarch64-unknown-linux-gnu'
154- run : |
155- cargo install cross --git https://github.com/cross-rs/cross
156- echo "CARGO=cross" >> $GITHUB_ENV
157-
158- - name : Build
159- run : ${{ env.CARGO }} build --release --locked --target ${{ matrix.build.TARGET }}
160-
161- - name : Strip binary (linux and macos)
162- if : matrix.build.OS == 'ubuntu-24.04' || matrix.build.OS == 'macos-latest'
163- run : |
164- if [ "${{ matrix.build.TARGET }}" = "aarch64-unknown-linux-gnu" ]; then
165- sudo apt-get update && sudo apt-get install -y binutils-aarch64-linux-gnu
166- aarch64-linux-gnu-strip "target/${{ matrix.build.TARGET }}/release/tlsferret"
167- else
168- strip "target/${{ matrix.build.TARGET }}/release/tlsferret"
169- fi
170-
171- - name : Prepare build artifacts [Windows]
172- if : matrix.build.OS == 'windows-latest'
173- run : |
174- cd target/${{ matrix.build.TARGET }}/release
175- 7z a ../../../tlsferret-${{ env.RELEASE_VERSION }}-${{ matrix.build.TARGET }}.zip tlsferret.exe
176- cd -
177-
178- - name : Prepare build artifacts [-nix]
179- if : matrix.build.OS != 'windows-latest'
180- run : |
181- cd target/${{ matrix.build.TARGET }}/release
182- tar czvf ../../../tlsferret-${{ env.RELEASE_VERSION }}-${{ matrix.build.TARGET }}.tar.gz tlsferret
183- cd -
184-
185- - name : Generate SHA256
186- run : |
187- if [ "${{ matrix.build.OS }}" = "windows-latest" ]; then
188- certutil -hashfile tlsferret-${{ env.RELEASE_VERSION }}-${{ matrix.build.TARGET }}.zip SHA256 | grep -E [A-Fa-f0-9]{64} > tlsferret-${{ env.RELEASE_VERSION }}-${{ matrix.build.TARGET }}.zip.sha256
189- else
190- shasum -a 256 tlsferret-${{ env.RELEASE_VERSION }}-${{ matrix.build.TARGET }}.tar.gz > tlsferret-${{ env.RELEASE_VERSION }}-${{ matrix.build.TARGET }}.tar.gz.sha256
191- fi
192- shell : bash
193-
194- - name : Upload build artifacts
195- uses : softprops/action-gh-release@v2
45+ - uses : actions/checkout@v4
46+ - uses : taiki-e/upload-rust-binary-action@v1
19647 with :
197- files : |
198- tlsferret-${{ env.RELEASE_VERSION }}-${{ matrix.build.TARGET }}.*
48+ bin : tlsferret
49+ target : ${{ matrix.target }}
50+ token : ${{ secrets.GITHUB_TOKEN }}
0 commit comments