ci: add FreeBSD and macOS M1 builds (#845)
* add OS to fingerprint cache * simplify cirrus test script * cleanup and add start of build script * add nightly cron job to CCI build, add artifact * add docs * avoid test task if cron
This commit is contained in:
parent
f9732bbb9e
commit
3fdd7cd48e
111
.cirrus.yml
111
.cirrus.yml
|
@ -1,81 +1,90 @@
|
|||
# Configuration for CirrusCI. This is primarily used for
|
||||
# FreeBSD and macOS M1 tests and builds.
|
||||
|
||||
env:
|
||||
CARGO_INCREMENTAL: 0
|
||||
CARGO_PROFILE_DEV_DEBUG: 0
|
||||
CARGO_HUSKY_DONT_INSTALL_HOOKS: true
|
||||
|
||||
task:
|
||||
name: "FreeBSD 13 Test"
|
||||
only_if: $CIRRUS_BRANCH == "master" || $CIRRUS_PR != ""
|
||||
freebsd_instance:
|
||||
image_family: freebsd-13-1
|
||||
setup_template: &SETUP_TEMPLATE
|
||||
setup_script:
|
||||
- curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs --output rustup.sh
|
||||
- sh rustup.sh --default-toolchain stable -y
|
||||
- . $HOME/.cargo/env
|
||||
- rustc --version
|
||||
|
||||
cache_template: &CACHE_TEMPLATE
|
||||
registry_cache:
|
||||
folder: $HOME/.cargo/registry
|
||||
reupload_on_changes: true
|
||||
fingerprint_script: md5 Cargo.lock
|
||||
fingerprint_script:
|
||||
- md5 Cargo.lock
|
||||
- echo $CIRRUS_OS
|
||||
- echo $CIRRUS_TASK_NAME
|
||||
target_cache:
|
||||
folder: target
|
||||
reupload_on_changes: true
|
||||
fingerprint_script:
|
||||
- . $HOME/.cargo/env && rustc --version
|
||||
- md5 Cargo.lock
|
||||
test_all_feature_script:
|
||||
- . $HOME/.cargo/env
|
||||
- cargo fmt --all -- --check
|
||||
- cargo test --no-run --locked --all-features
|
||||
- cargo test --no-fail-fast --all-features -- --nocapture --quiet
|
||||
- cargo clippy --all-targets --workspace --all-features -- -D warnings
|
||||
test_no_feature_script:
|
||||
- . $HOME/.cargo/env
|
||||
- cargo fmt --all -- --check
|
||||
- cargo test --no-run --locked --no-default-features
|
||||
- cargo test --no-fail-fast --no-default-features -- --nocapture --quiet
|
||||
- cargo clippy --all-targets --workspace --no-default-features -- -D warnings
|
||||
- echo $CIRRUS_OS
|
||||
- echo $CIRRUS_TASK_NAME
|
||||
|
||||
cleanup_template: &CLEANUP_TEMPLATE
|
||||
before_cache_script:
|
||||
- rm -rf $HOME/.cargo/registry/index
|
||||
- rm -f ./target/.rustc_info.json
|
||||
- find ./target/debug -maxdepth 1 -type f -delete # Delete stray files
|
||||
|
||||
task:
|
||||
name: "macOS M1 Test"
|
||||
only_if: $CIRRUS_BRANCH == "master" || $CIRRUS_PR != ""
|
||||
macos_instance:
|
||||
image: ghcr.io/cirruslabs/macos-monterey-base:latest
|
||||
setup_script:
|
||||
- curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs --output rustup.sh
|
||||
- sh rustup.sh --default-toolchain stable -y
|
||||
- source $HOME/.cargo/env
|
||||
- rustc --version
|
||||
registry_cache:
|
||||
folder: $HOME/.cargo/registry
|
||||
reupload_on_changes: true
|
||||
fingerprint_script: md5 Cargo.lock
|
||||
target_cache:
|
||||
folder: target
|
||||
reupload_on_changes: true
|
||||
fingerprint_script:
|
||||
- source $HOME/.cargo/env && rustc --version
|
||||
- md5 Cargo.lock
|
||||
env:
|
||||
CARGO_INCREMENTAL: 0
|
||||
CARGO_PROFILE_DEV_DEBUG: 0
|
||||
CARGO_HUSKY_DONT_INSTALL_HOOKS: true
|
||||
|
||||
test_task:
|
||||
only_if: $CIRRUS_CRON == "" && ($CIRRUS_BRANCH == "master" || $CIRRUS_PR != "")
|
||||
matrix:
|
||||
- name: "FreeBSD 13 Test"
|
||||
freebsd_instance:
|
||||
image_family: freebsd-13-1
|
||||
- name: "macOS M1 Test"
|
||||
macos_instance:
|
||||
image: ghcr.io/cirruslabs/macos-monterey-base:latest
|
||||
<<: *SETUP_TEMPLATE
|
||||
<<: *CACHE_TEMPLATE
|
||||
test_all_feature_script:
|
||||
- . $HOME/.cargo/env
|
||||
- cargo fmt --all -- --check
|
||||
- cargo test --no-run --locked --all-features
|
||||
- cargo test --no-fail-fast --all-features -- --nocapture --quiet
|
||||
- cargo test --no-fail-fast --all-features -- --nocapture --quiet
|
||||
- cargo clippy --all-targets --workspace --all-features -- -D warnings
|
||||
test_no_feature_script:
|
||||
- . $HOME/.cargo/env
|
||||
- cargo fmt --all -- --check
|
||||
- cargo test --no-run --locked --no-default-features
|
||||
- cargo test --no-fail-fast --no-default-features -- --nocapture --quiet
|
||||
- cargo test --no-fail-fast --no-default-features -- --nocapture --quiet
|
||||
- cargo clippy --all-targets --workspace --no-default-features -- -D warnings
|
||||
before_cache_script:
|
||||
- rm -rf $HOME/.cargo/registry/index
|
||||
- rm -f ./target/.rustc_info.json
|
||||
- find ./target/debug -maxdepth 1 -type f -delete # Delete stray files
|
||||
<<: *CLEANUP_TEMPLATE
|
||||
|
||||
build_task:
|
||||
only_if: $CIRRUS_RELEASE != "" || $CIRRUS_CRON == "nightly"
|
||||
env:
|
||||
BTM_GENERATE: true
|
||||
COMPLETION_DIR: "target/tmp/bottom/completion/"
|
||||
MANPAGE_DIR: "target/tmp/bottom/manpage/"
|
||||
matrix:
|
||||
- name: "FreeBSD 13 Build"
|
||||
freebsd_instance:
|
||||
image_family: freebsd-13-1
|
||||
env:
|
||||
TARGET: "x86_64-unknown-freebsd"
|
||||
- name: "macOS M1 Build"
|
||||
macos_instance:
|
||||
image: ghcr.io/cirruslabs/macos-monterey-base:latest
|
||||
env:
|
||||
TARGET: "aarch64-apple-darwin"
|
||||
<<: *SETUP_TEMPLATE
|
||||
<<: *CACHE_TEMPLATE
|
||||
build_script:
|
||||
- . $HOME/.cargo/env
|
||||
- cargo build --release --verbose --locked --features deploy
|
||||
- mv ./target/release/btm ./
|
||||
- mv "$COMPLETION_DIR" completion
|
||||
- mv "$MANPAGE_DIR" manpage
|
||||
- tar -czvf bottom_$TARGET.tar.gz btm completion
|
||||
binaries_artifacts:
|
||||
path: bottom_$TARGET.tar.gz
|
||||
<<: *CLEANUP_TEMPLATE
|
||||
|
|
|
@ -283,6 +283,7 @@ You can also try to use the generated release binaries and manually install on y
|
|||
|
||||
- [Latest stable release](https://github.com/ClementTsang/bottom/releases/latest), generated off of the release branch
|
||||
- [Latest nightly release](https://github.com/ClementTsang/bottom/releases/tag/nightly), generated daily off of the master branch at 00:00 UTC
|
||||
- FreeBSD and ARM macOS binaries are generated via Cirrus CI, and for now, can be found [here](https://cirrus-ci.com/github/ClementTsang/bottom).
|
||||
|
||||
#### Auto-completion
|
||||
|
||||
|
|
Loading…
Reference in New Issue