language: rust cache: cargo 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 - os: linux env: TARGET=x86_64-unknown-linux-musl arch: amd64 rust: beta # 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*)?$/ before_install: - export RUST_BACKTRACE=1 - | if [[ $TRAVIS_OS_NAME == "windows" ]]; then if [[ -n $TRAVIS_TAG ]]; then 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 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 x86_64-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/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" 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"; 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