diff --git a/automation/Dockerfile b/automation/Dockerfile index 09132c5..b046564 100644 --- a/automation/Dockerfile +++ b/automation/Dockerfile @@ -2,10 +2,10 @@ # docker build -f automation/Dockerfile -t . # docker run -it FROM rust:latest -RUN apt-get update -RUN apt-get --yes upgrade +RUN apt-get update && apt-get --yes upgrade # tzdata is a dependency, won't install otherwise ARG DEBIAN_FRONTEND=noninteractive +RUN apt-get --yes install rsync curl # set CROSS_CONTAINER_IN_CONTAINER to inform `cross` that it is executed from within a container ENV CROSS_CONTAINER_IN_CONTAINER=true @@ -13,3 +13,13 @@ ENV CROSS_CONTAINER_IN_CONTAINER=true RUN rustup install nightly && \ rustup target add thumbv7em-none-eabihf armv7-unknown-linux-gnueabihf && \ rustup component add rustfmt clippy + +# RUN cargo install mdbook --no-default-features --features search --vers "^0.4" --locked +RUN curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.34/mdbook-v0.4.34-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory /usr/local/bin + +# SSH stuff to allow deployment to doc server +RUN adduser --uid 114 jenkins + +# Add documentation server to known hosts +RUN echo "|1|/LzCV4BuTmTb2wKnD146l9fTKgQ=|NJJtVjvWbtRt8OYqFgcYRnMQyVw= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBNL8ssTonYtgiR/6RRlSIK9WU1ywOcJmxFTLcEblAwH7oifZzmYq3XRfwXrgfMpylEfMFYfCU8JRqtmi19xc21A=" >> /etc/ssh/ssh_known_hosts +RUN echo "|1|CcBvBc3EG03G+XM5rqRHs6gK/Gg=|oGeJQ+1I8NGI2THIkJsW92DpTzs= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBNL8ssTonYtgiR/6RRlSIK9WU1ywOcJmxFTLcEblAwH7oifZzmYq3XRfwXrgfMpylEfMFYfCU8JRqtmi19xc21A=" >> /etc/ssh/ssh_known_hosts diff --git a/automation/Jenkinsfile b/automation/Jenkinsfile index 0770614..937fea1 100644 --- a/automation/Jenkinsfile +++ b/automation/Jenkinsfile @@ -1,59 +1,76 @@ pipeline { - - agent { - dockerfile { - dir 'automation' - reuseNode true - } + agent { + dockerfile { + dir 'automation' + reuseNode true + args '--network host' } + } - stages { - stage('Rust Toolchain Info') { - steps { - sh 'rustc --version' - } - } - stage('Clippy') { - steps { - sh 'cargo clippy' - } - } - stage('Docs') { - steps { - catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') { - sh 'cargo +nightly doc --all-features' - } - } - } - stage('Rustfmt') { - steps { - sh 'cargo fmt --all --check' - } - } - stage('Test') { - steps { - sh 'cargo test --all-features' - } - } - stage('Check with all features') { - steps { - sh 'cargo check --all-features' - } - } - stage('Check with no features') { - steps { - sh 'cargo check --no-default-features' - } - } - stage('Check Cross Embedded Bare Metal') { - steps { - sh 'cargo check -p satrs-core --target thumbv7em-none-eabihf --no-default-features' - } - } - stage('Check Cross Embedded Linux') { - steps { - sh 'cargo check --target armv7-unknown-linux-gnueabihf' - } - } + stages { + stage('Rust Toolchain Info') { + steps { + sh 'rustc --version' + } } + stage('Clippy') { + steps { + sh 'cargo clippy' + } + } + stage('Docs') { + steps { + catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') { + sh 'cargo +nightly doc --all-features' + } + } + } + stage('Rustfmt') { + steps { + sh 'cargo fmt --all --check' + } + } + stage('Test') { + steps { + sh 'cargo test --all-features' + } + } + stage('Check with all features') { + steps { + sh 'cargo check --all-features' + } + } + stage('Check with no features') { + steps { + sh 'cargo check --no-default-features' + } + } + stage('Check Cross Embedded Bare Metal') { + steps { + sh 'cargo check -p satrs-core --target thumbv7em-none-eabihf --no-default-features' + } + } + stage('Check Cross Embedded Linux') { + steps { + sh 'cargo check --target armv7-unknown-linux-gnueabihf' + } + } + stage('Deploy satrs-book') { + when { + anyOf { + branch 'main'; + branch pattern: 'mdbook-deployment*' + } + } + steps { + dir('satrs-book') { + sh 'mdbook build' + sshagent(credentials: ['documentation-buildfix']) { + // Deploy to Apache webserver + sh 'rsync -r --delete book/ buildfix@documentation.irs.uni-stuttgart.de:/projects/sat-rs' + } + } + } + } + } } diff --git a/satrs-book/src/SUMMARY.md b/satrs-book/src/SUMMARY.md index 995e8a9..0dfb982 100644 --- a/satrs-book/src/SUMMARY.md +++ b/satrs-book/src/SUMMARY.md @@ -8,12 +8,3 @@ - [Modes and Health](./modes-and-health.md) - [Housekeeping Data](./housekeeping.md) - [Events](./events.md) -- [Power Components](./power.md) -- [Thermal Components](./thermal.md) -- [Persistent TM storage](./persistent-tm-storage.md) -- [FDIR](./fdir.md) -- [Serialization of Data](./serialization.md) -- [Logging](./logging.md) -- [Modelling space systems](./modelling-space-systems.md) -- [Ground Segments](./ground-segments.md) - diff --git a/satrs-book/src/TODO.md b/satrs-book/src/TODO.md new file mode 100644 index 0000000..91f660f --- /dev/null +++ b/satrs-book/src/TODO.md @@ -0,0 +1,9 @@ +- [Power Components](./power.md) +- [Thermal Components](./thermal.md) +- [Persistent TM storage](./persistent-tm-storage.md) +- [FDIR](./fdir.md) +- [Serialization of Data](./serialization.md) +- [Logging](./logging.md) +- [Modelling space systems](./modelling-space-systems.md) +- [Ground Segments](./ground-segments.md) + diff --git a/satrs-book/src/communication.md b/satrs-book/src/communication.md index 447ebfd..8e8acd7 100644 --- a/satrs-book/src/communication.md +++ b/satrs-book/src/communication.md @@ -1,6 +1,6 @@ # Communication with sat-rs based software -Communication is a huge topic for space systems. Remote systems are usually not (directly) +Communication is a vital topic for remote system which are usually not (directly) connected to the internet and only have 1-2 communication links during nominal operation. However, most of these systems have internet access during development cycle. There are various standards provided by CCSDS and ECSS which can be useful to determine how to communicate with the satellite