mirror of
https://github.com/ClementTsang/bottom
synced 2024-11-27 22:50:19 +00:00
54a35d632e
Some Windows compilation/deploy stuff. Mostly just a catch-all for some chores.
215 lines
7.4 KiB
YAML
215 lines
7.4 KiB
YAML
language: rust
|
|
notifications:
|
|
email:
|
|
on_success: never
|
|
|
|
matrix:
|
|
include:
|
|
# Standard x86-64 stuff, stable and beta
|
|
- os: linux
|
|
env: TARGET=x86_64-unknown-linux-gnu
|
|
arch: amd64
|
|
rust: stable
|
|
- os: linux
|
|
env: TARGET=x86_64-unknown-linux-gnu
|
|
arch: amd64
|
|
rust: beta
|
|
- os: osx
|
|
env: TARGET=x86_64-apple-darwin
|
|
arch: amd64
|
|
rust: stable
|
|
- os: osx
|
|
env: TARGET=x86_64-apple-darwin
|
|
arch: amd64
|
|
rust: beta
|
|
- os: windows
|
|
env: TARGET=x86_64-pc-windows-msvc
|
|
arch: amd64
|
|
rust: stable
|
|
- os: windows
|
|
env: TARGET=x86_64-pc-windows-msvc
|
|
arch: amd64
|
|
rust: beta
|
|
|
|
# musl
|
|
- os: linux
|
|
env: TARGET=x86_64-unknown-linux-musl
|
|
arch: amd64
|
|
rust: stable
|
|
|
|
# Windows GNU
|
|
- os: windows
|
|
env: TARGET=x86_64-pc-windows-gnu
|
|
arch: amd64
|
|
rust: stable
|
|
|
|
# ARM stuff (skip beta for now, see https://github.com/rust-lang/rust/issues/62896)
|
|
- os: linux
|
|
env: TARGET=aarch64-unknown-linux-gnu
|
|
arch: arm64
|
|
rust: stable
|
|
- os: linux
|
|
env: TARGET=armv7-unknown-linux-gnueabihf
|
|
arch: amd64
|
|
rust: stable
|
|
addons:
|
|
apt:
|
|
packages: &armhf
|
|
- gcc-arm-linux-gnueabihf
|
|
- libc6-armhf-cross
|
|
- libc6-dev-armhf-cross
|
|
|
|
fast_finish: true
|
|
exclude:
|
|
- if: tag IS present
|
|
rust: beta
|
|
- if: tag IS present
|
|
arch: arm64
|
|
- if: tag IS present
|
|
env: TARGET=armv7-unknown-linux-gnueabihf
|
|
allow_failures:
|
|
- arch: arm64 # ARM will be run, but support is still gonna be limited for now... may change.
|
|
- env: TARGET=armv7-unknown-linux-gnueabihf
|
|
|
|
branches:
|
|
only:
|
|
- master
|
|
- /^\d+\.\d+(\.\d+)?(-\S*)?$/
|
|
|
|
cache: cargo
|
|
|
|
before_install:
|
|
- export RUST_BACKTRACE=1
|
|
- |
|
|
if [[ $TRAVIS_OS_NAME == "windows" && -n $TRAVIS_TAG ]]; then
|
|
echo "Pre-installing deploy dependencies for Windows...";
|
|
powershell Install-WindowsFeature Net-Framework-Core;
|
|
choco install -y wixtoolset;
|
|
export PATH=$PATH:"/c/Program Files (x86)/WiX Toolset v3.11/bin";
|
|
choco install zip;
|
|
rustup target add i686-pc-windows-msvc;
|
|
fi
|
|
|
|
before_script:
|
|
- rustup target add $TARGET
|
|
- rustup update
|
|
- |
|
|
# Only check clippy if stable...
|
|
if [[ $TRAVIS_RUST_VERSION == "stable" ]]; then
|
|
rustup component add clippy
|
|
fi
|
|
|
|
script:
|
|
- |
|
|
# Only check clippy if stable...
|
|
if [[ $TRAVIS_RUST_VERSION == "stable" ]]; then
|
|
cargo clippy -- -D clippy::all
|
|
fi
|
|
- |
|
|
if [[ $TARGET == "armv7-unknown-linux-gnueabihf" ]]; then
|
|
cargo build --verbose --target $TARGET
|
|
else
|
|
cargo test --verbose --target $TARGET
|
|
fi
|
|
|
|
before_deploy:
|
|
- |
|
|
echo "Test whether installing works. This is mostly just a sanity check.";
|
|
cargo install --path . --target $TARGET --locked --force;
|
|
- |
|
|
echo "Building release..."
|
|
if [[ $TRAVIS_OS_NAME == "windows" ]]; then
|
|
echo "Building Windows 64-bit...";
|
|
cargo build --release --target $TARGET;
|
|
local target_dir=$(ls target/release/build/bottom-*/out/rg.bash | head -n1 | xargs dirname)
|
|
cp -r $target_dir completions
|
|
mv "./target/x86_64-pc-windows-msvc/release/btm" "btm.exe";
|
|
strip "btm.exe"
|
|
zip -r bottom_x86_64-pc-windows-msvc.zip "btm.exe" "completions";
|
|
rm "btm.exe"
|
|
rm -r "completions"
|
|
|
|
if [[ $TARGET == "x86_64-pc-windows-msvc" ]]; then
|
|
echo "Building Windows 32-bit...";
|
|
cargo clean;
|
|
cargo build --release --target i686-pc-windows-msvc;
|
|
local target_dir=$(ls target/release/build/bottom-*/out/rg.bash | head -n1 | xargs dirname)
|
|
cp -r $target_dir completions
|
|
mv "./target/i686-pc-windows-msvc/release/btm" "btm.exe";
|
|
strip "btm.exe"
|
|
zip -r bottom_i686-pc-windows-msvc.zip "btm.exe" "completions";
|
|
rm "btm.exe"
|
|
rm -r "completions"
|
|
|
|
echo "Building choco template...";
|
|
python "./deployment/windows/choco/choco_packager.py" "bottom_i686-pc-windows-msvc.zip" "bottom_x86_64-pc-windows-msvc.zip" $TRAVIS_TAG "./deployment/windows/choco/bottom.nuspec.template" "./deployment/windows/choco/chocolateyinstall.ps1.template" "./deployment/windows/choco/bottom.nuspec" "./deployment/windows/choco/tools/chocolateyinstall.ps1" "./deployment/windows/choco/tools/";
|
|
cd "./deployment/windows/choco/"
|
|
zip -r choco.zip "bottom.nuspec" "tools/";
|
|
cd "../../../";
|
|
mv "./deployment/windows/choco/choco.zip" "./choco.zip"
|
|
|
|
echo "Building msi file...";
|
|
cargo install cargo-wix;
|
|
cargo wix init;
|
|
cargo wix;
|
|
|
|
echo "Building winget template...";
|
|
python "./deployment/packager.py" $TRAVIS_TAG "./deployment/windows/winget/winget.yaml.template" "$TRAVIS_TAG.yaml" "SHA256" "./bottom_x86_64_installer.msi";
|
|
fi
|
|
|
|
echo "Done Windows pre-deploy!";
|
|
else
|
|
echo "Building release for macOS/Linux...";
|
|
cargo build --release;
|
|
cp ./target/release/btm btm;
|
|
strip btm;
|
|
local target_dir=$(ls target/release/build/bottom-*/out/rg.bash | head -n1 | xargs dirname)
|
|
cp -r $target_dir completions
|
|
echo "Tar-ing macOS/Linux binary and completions..."
|
|
tar -czvf bottom_$TARGET.tar.gz btm completions;
|
|
|
|
if [[ $TRAVIS_OS_NAME == "linux" ]]; then
|
|
echo "Generating AUR template...";
|
|
python "./deployment/packager.py" $TRAVIS_TAG "./deployment/linux/arch/PKGBUILD_BIN.template" "./PKGBUILD_BIN" "SHA512" "./bottom_x86_64-unknown-linux-gnu.tar.gz";
|
|
curl -LO "https://github.com/ClementTsang/bottom/archive/$TRAVIS_TAG.tar.gz";
|
|
|
|
echo "Generating AUR binary template...";
|
|
python "./deployment/packager.py" $TRAVIS_TAG "./deployment/linux/arch/PKGBUILD.template" "./PKGBUILD" "SHA512" "./$TRAVIS_TAG.tar.gz";
|
|
rm "$TRAVIS_TAG.tar.gz";
|
|
|
|
echo "Tar-ing AUR PKGBUILDs...";
|
|
tar -czvf arch.tar.gz PKGBUILD_BIN PKGBUILD;
|
|
|
|
# Note this requires the completions directory in the current directory.
|
|
echo "Generating Debian install file...";
|
|
cargo install cargo-deb;
|
|
cargo deb;
|
|
cp ./target/debian/bottom_*.deb .;
|
|
elif [[ $TRAVIS_OS_NAME == "osx" ]]; then
|
|
# The bottom.rb file must be generated AFTER, since it relies on the Linux binary file.
|
|
fi
|
|
|
|
echo "Done macOS/Linux pre-deploy!";
|
|
fi
|
|
|
|
deploy:
|
|
provider: releases
|
|
overwrite: true
|
|
api_key:
|
|
secure: ppBn0DnqZ+Rzb84doZQxYdUBQ0rVrZNIiH6ZSFEiCVJd0ttqXfOjK/qXbIf/zabwO0Olqz18jwd9piHjNigWRrHwX9N+YH0DZTM3f4WS2/2acvOP3AjSw6oERjYTwS5yKe/XP1sU11uL6O0oAxYFeiAkn7QOM7flVUE2BmmLAs2lLtQ+9ylmUeBGatrkTfQ0Z2i1o7p5mtI2fKUozpImtHq8TClQEsF4oQS5nvkHtpLuPQ0UrJ8vKZijDBeMuLbDkR121ujRnjoBt8+eXBRbwzAvVotwRozyol8noAN3i4VvYueId6oX7Y2DSEp26wnCuRXGurUnyya5JE55AKoevK+SUHRe5+29/2lPbC5d/etZt2tSX1AIJk9fHeIfRPSTzanIIyDpUzSGoMKjl1ARKGrgHYehRxMKpW0cC2xHSlQ+NrA5apLpXKr2IzpkGsxpAxLqRASbX2VJYCEL70WoJfXinZrxeDxXsaWBLGaj9ySyk059GZBMz9GBdYNtwF3G/3aSIt0nkEGgKipgYXHi5keKKGmyfeZyYkRJRbc369JRZiHuOWct+1ZsOdrKKdbyAdcDGj5kbKuYwA6E+wgI62IWvUTm+vtKDuIbLpu/48aOUuEslGHkYAszLTapX/Le9c9XTu3L+PMgkPq2LSyaeGrfnM+DE/Hwe3Jvurccp94=
|
|
file_glob: true
|
|
file:
|
|
- bottom_*.tar.gz
|
|
- bottom_*.zip
|
|
- bottom_*.deb
|
|
- arch.tar.gz
|
|
- bottom.rb
|
|
- choco.zip
|
|
- bottom_x86_64_installer.msi
|
|
- $TRAVIS_TAG.yaml
|
|
skip_cleanup: true
|
|
on:
|
|
tags: true
|
|
condition: "$TRAVIS_RUST_VERSION = stable"
|
|
repo: ClementTsang/bottom
|
|
draft: true
|