1- name : build- selenium-manager
1+ name : Build selenium-manager
22
3- on : workflow_dispatch
3+ on :
4+ workflow_dispatch :
5+ inputs :
6+ debug :
7+ description : ' Include debug symbols in binaries'
8+ required : false
9+ type : boolean
410
511jobs :
612 win32 :
713 name : " [Windows x32] Build selenium-manager"
814 runs-on : windows-latest
9- env :
10- RUSTFLAGS : ' -Ctarget-feature=+crt-static'
1115 steps :
1216 - name : " Checkout project"
13- uses : actions/checkout@v3
17+ uses : actions/checkout@v4
1418 - name : " Update Rust"
1519 run : |
1620 rustup update
17- rustup toolchain install stable-i686-pc-windows-msvc
18- rustup default stable-i686-pc-windows-msvc
21+ rustup toolchain install stable-i686-pc-windows-gnu
22+ rustup default stable-i686-pc-windows-gnu
1923 rustc -vV
20- - name : " Build release"
24+ - name : " Build release binary"
25+ if : ${{ inputs.debug == false }}
2126 run : |
2227 cd rust
2328 cargo build --release
24- - name : " Upload binary"
29+ - name : " Upload release binary"
30+ if : ${{ inputs.debug == false }}
2531 uses : actions/upload-artifact@v3
2632 with :
2733 name : selenium-manager_windows-x32
2834 path : rust/target/release/selenium-manager.exe
2935 retention-days : 6
36+ - name : " Build debug binary"
37+ if : ${{ inputs.debug == true }}
38+ run : |
39+ cd rust
40+ cargo build --profile dev
41+ - name : " Upload debug binary"
42+ if : ${{ inputs.debug == true }}
43+ uses : actions/upload-artifact@v3
44+ with :
45+ name : selenium-manager_windows-x32-debug
46+ path : rust/target/debug/selenium-manager.exe
47+ retention-days : 6
3048
3149 linux64 :
3250 name : " [Linux x64] Build selenium-manager"
3351 runs-on : ubuntu-latest
34- env :
35- RUSTFLAGS : ' -Ctarget-feature=-crt-static'
3652 steps :
3753 - name : " Checkout project"
38- uses : actions/checkout@v3
54+ uses : actions/checkout@v4
3955 - name : " Update Rust"
4056 run : |
4157 rustup update
4258 rustc -vV
43- - name : " Install zig "
59+ - name : " Install cross "
4460 run : |
45- sudo snap install zig --beta --classic
46- - name : " Build release"
61+ cargo install cross --git https://github.com/cross-rs/cross
62+ cross -V
63+ - name : " Build release binary"
64+ if : ${{ inputs.debug == false }}
4765 run : |
4866 cd rust
49- cargo install cargo-zigbuild
50- rustup target add x86_64-unknown-linux-musl
51- cargo zigbuild --release --target x86_64-unknown-linux-musl
52- - name : " Tar binary (to keep executable permission)"
53- run : |
54- cd rust/target/x86_64-unknown-linux-musl/release
67+ cross build --target x86_64-unknown-linux-musl --release
68+ cd target/x86_64-unknown-linux-musl/release
5569 tar -cvf ../../../../selenium-manager.tar selenium-manager
56- - name : " Upload binary"
70+ - name : " Upload release binary"
71+ if : ${{ inputs.debug == false }}
5772 uses : actions/upload-artifact@v3
5873 with :
5974 name : selenium-manager_linux-x64
6075 path : selenium-manager.tar
6176 retention-days : 6
77+ - name : " Build debug binary"
78+ if : ${{ inputs.debug == true }}
79+ run : |
80+ cd rust
81+ cross build --target x86_64-unknown-linux-musl --profile dev
82+ cd target/x86_64-unknown-linux-musl/debug
83+ tar -cvf ../../../../selenium-manager.tar selenium-manager
84+ - name : " Upload debug binary"
85+ if : ${{ inputs.debug == true }}
86+ uses : actions/upload-artifact@v3
87+ with :
88+ name : selenium-manager_linux-x64-debug
89+ path : selenium-manager.tar
90+ retention-days : 6
6291
6392 macos64 :
64- name : " [macOS x64] Build selenium-manager"
93+ name : " [macOS x64/arm64 ] Build selenium-manager"
6594 runs-on : macos-latest
66- env :
67- RUSTFLAGS : ' -Ctarget-feature=+crt-static'
6895 steps :
6996 - name : " Checkout project"
70- uses : actions/checkout@v3
97+ uses : actions/checkout@v4
7198 - name : " Update Rust"
7299 run : |
73100 rustup update
101+ rustup target add aarch64-apple-darwin
74102 rustc -vV
75- - name : " Build release"
103+ - name : " Build release binary"
104+ if : ${{ inputs.debug == false }}
76105 run : |
77106 cd rust
78- cargo build --release --target x86_64-apple-darwin
79- - name : " Tar binary (to keep executable permission)"
107+ cargo build --target x86_64-apple-darwin --release
108+ cargo build --target aarch64-apple-darwin --release
109+ lipo -create -output target/selenium-manager \
110+ target/aarch64-apple-darwin/release/selenium-manager \
111+ target/x86_64-apple-darwin/release/selenium-manager
112+ cd target
113+ tar -cvf ../../selenium-manager.tar selenium-manager
114+ - name : " Upload release binary"
115+ if : ${{ inputs.debug == false }}
116+ uses : actions/upload-artifact@v3
117+ with :
118+ name : selenium-manager_macos-universal
119+ path : selenium-manager.tar
120+ retention-days : 6
121+ - name : " Build debug binary"
122+ if : ${{ inputs.debug == true }}
80123 run : |
81- cd rust/target/x86_64-apple-darwin/release
82- tar -cvf ../../../../selenium-manager.tar selenium-manager
83- - name : " Upload binary"
124+ cd rust
125+ cargo build --target x86_64-apple-darwin --profile dev
126+ cargo build --target aarch64-apple-darwin --profile dev
127+ lipo -create -output target/selenium-manager \
128+ target/aarch64-apple-darwin/debug/selenium-manager \
129+ target/x86_64-apple-darwin/debug/selenium-manager
130+ cd target
131+ tar -cvf ../../selenium-manager.tar selenium-manager
132+ - name : " Upload debug binary"
133+ if : ${{ inputs.debug == true }}
84134 uses : actions/upload-artifact@v3
85135 with :
86- name : selenium-manager_macos-x64
136+ name : selenium-manager_macos-universal-debug
87137 path : selenium-manager.tar
88138 retention-days : 6
0 commit comments