Merge branch 'add-ci' into 'main'
ci: Add cargo check See merge request redox-os/base!54
This commit is contained in:
+26
-5
@@ -1,19 +1,40 @@
|
||||
image: "redoxos/redoxer:latest"
|
||||
workflow:
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "main" && $CI_PROJECT_NAMESPACE == "redox-os"'
|
||||
- if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"'
|
||||
|
||||
stages:
|
||||
- build
|
||||
|
||||
- cross-build
|
||||
# TODO?
|
||||
# - test
|
||||
|
||||
# TODO check if all drivers build
|
||||
|
||||
fmt:
|
||||
stage: build
|
||||
needs: []
|
||||
script:
|
||||
- rustup component add rustfmt
|
||||
# TODO add more packages as they get formatted
|
||||
- CHECK_ONLY=1 ./fmt.sh
|
||||
|
||||
# TODO: unit tests
|
||||
|
||||
x86_64:
|
||||
stage: build
|
||||
script:
|
||||
- rustup component add rustfmt
|
||||
- ./check.sh
|
||||
|
||||
i586:
|
||||
stage: cross-build
|
||||
script:
|
||||
- ./check.sh --arch=i586
|
||||
|
||||
aarch64:
|
||||
stage: cross-build
|
||||
script:
|
||||
- ./check.sh --arch=aarch64
|
||||
|
||||
riscv64gc:
|
||||
stage: cross-build
|
||||
script:
|
||||
- ./check.sh --arch=riscv64gc
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
#!/bin/bash
|
||||
|
||||
RED='\033[1;38;5;196m'
|
||||
GREEN='\033[1;38;5;46m'
|
||||
NC='\033[0m'
|
||||
|
||||
show_help() {
|
||||
echo "Usage: $(basename "$0") [OPTIONS]"
|
||||
echo ""
|
||||
echo "Description:"
|
||||
echo " Wrapper for redoxer to run checks or tests on Redox OS targets."
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " --test Run 'cargo test' instead of 'cargo check'"
|
||||
echo " --all-target Run the command on all supported Redox architectures"
|
||||
echo " --target=<target> Override the target architecture (e.g., i586-unknown-redox)"
|
||||
echo " --arch=<arch> Override the target architecture using arch (e.g., i586)"
|
||||
echo " --help Show this help message"
|
||||
echo ""
|
||||
echo "Supported Targets:"
|
||||
for t in "${SUPPORTED_TARGETS[@]}"; do
|
||||
echo " - $t"
|
||||
done
|
||||
echo ""
|
||||
echo "Environment:"
|
||||
echo " TARGET Sets the default target (overridden by --target)"
|
||||
}
|
||||
|
||||
if ! command -v redoxer &> /dev/null; then
|
||||
echo "Error: 'redoxer' CLI not found."
|
||||
echo "Please install it: cargo install redoxer"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
SUPPORTED_TARGETS=(
|
||||
"x86_64-unknown-redox"
|
||||
"i586-unknown-redox"
|
||||
"aarch64-unknown-redox"
|
||||
"riscv64gc-unknown-redox"
|
||||
)
|
||||
|
||||
CURRENT_TARGET="${TARGET:-x86_64-unknown-redox}"
|
||||
CHECK_ALL=false
|
||||
CMD_ACTION="check"
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--all-target)
|
||||
CHECK_ALL=true
|
||||
;;
|
||||
--test)
|
||||
CMD_ACTION="test"
|
||||
;;
|
||||
--target=*)
|
||||
CURRENT_TARGET="${1#*=}"
|
||||
;;
|
||||
--arch=*)
|
||||
CURRENT_TARGET="${1#*=}-unknown-redox"
|
||||
;;
|
||||
--help)
|
||||
show_help
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo -e "${RED}Error: Unknown option '$1'${NC}"
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
run_redoxer() {
|
||||
export TARGET=$1
|
||||
redoxer toolchain || { echo -e "${RED}Fail: redoxer toolchain for: $target.${NC}" && exit 1; }
|
||||
|
||||
echo "----------------------------------------"
|
||||
echo "Running redoxer $CMD_ACTION for: $TARGET"
|
||||
|
||||
if redoxer "$CMD_ACTION"; then
|
||||
return 0
|
||||
else
|
||||
echo -e "${RED}Fail: $CMD_ACTION $TARGET failed.${NC}"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
if [ "$CHECK_ALL" = true ]; then
|
||||
echo "Running $CMD_ACTION for all supported Redox targets..."
|
||||
|
||||
has_error=false
|
||||
|
||||
for target in "${SUPPORTED_TARGETS[@]}"; do
|
||||
if ! run_redoxer "$target"; then
|
||||
has_error=true
|
||||
fi
|
||||
done
|
||||
|
||||
echo "----------------------------------------"
|
||||
if [ "$has_error" = true ]; then
|
||||
echo -e "${RED}Summary: One or more targets failed.${NC}"
|
||||
exit 1
|
||||
else
|
||||
echo -e "${GREEN}Summary: All targets passed!${NC}"
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
if run_redoxer "$CURRENT_TARGET"; then
|
||||
echo -e "${GREEN}Success: $CMD_ACTION $CURRENT_TARGET passed.${NC}"
|
||||
exit 0
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
Reference in New Issue
Block a user