From 0f85e30149560028c52ad87577ddec66cfdb0c85 Mon Sep 17 00:00:00 2001 From: Alex Zenla Date: Tue, 5 Mar 2024 22:17:14 +0000 Subject: [PATCH] nightly: bundle systemd service files and install script --- .github/workflows/nightly.yml | 4 +-- .gitignore | 3 +++ kernel/build.sh | 2 +- resources/install/install.sh | 32 ++++++++++++++++++++++++ resources/systemd/kratad.service | 3 ++- resources/systemd/kratanet.service | 3 ++- scripts/bundle.sh | 40 ++++++++++++++++++++++++++++++ scripts/ci/nightly.sh | 23 ----------------- 8 files changed, 82 insertions(+), 28 deletions(-) create mode 100755 resources/install/install.sh create mode 100755 scripts/bundle.sh delete mode 100755 scripts/ci/nightly.sh diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 64a0f8b..7923216 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -11,9 +11,9 @@ jobs: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - run: ./scripts/ci/install-deps.sh - - run: ./scripts/ci/nightly.sh + - run: ./scripts/bundle.sh - uses: actions/upload-artifact@v4 with: name: krata-nightly - path: krata.tgz + path: target/bundle/krata.tgz compression-level: 0 diff --git a/.gitignore b/.gitignore index 96ef6c0..214bd52 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ /target +/krata.tgz +/initrd/target +/kernel/target Cargo.lock diff --git a/kernel/build.sh b/kernel/build.sh index 1c73dae..3290c2c 100755 --- a/kernel/build.sh +++ b/kernel/build.sh @@ -10,7 +10,7 @@ if [ ! -f "${SRC_DIR_NAME}/Makefile" ] then rm -rf "${SRC_DIR_NAME}" curl -L -o "${SRC_DIR_NAME}.txz" "${KERNEL_SRC_URL}" - tar xvf "${SRC_DIR_NAME}.txz" + tar xf "${SRC_DIR_NAME}.txz" rm "${SRC_DIR_NAME}.txz" fi diff --git a/resources/install/install.sh b/resources/install/install.sh new file mode 100755 index 0000000..6a5fdb3 --- /dev/null +++ b/resources/install/install.sh @@ -0,0 +1,32 @@ +#!/bin/sh +set -e + +REAL_SCRIPT="$(realpath "${0}")" +cd "$(dirname "${REAL_SCRIPT}")" + +if [ -f "/etc/systemd/system/kratad.service" ] +then + systemctl disable --now kratad.service +fi + +if [ -f "/etc/systemd/system/kratanet.service" ] +then + systemctl disable --now kratanet.service +fi + +cp kratad.service /etc/systemd/system/kratad.service +cp kratanet.service /etc/systemd/system/kratanet.service + +cp kratad kratanet kratactl /usr/local/bin + +chmod +x /usr/local/bin/kratad +chmod +x /usr/local/bin/kratanet +chmod +x /usr/local/bin/kratactl + +mkdir -p /var/lib/krata/default +cp kernel /var/lib/krata/default/kernel +cp initrd /var/lib/krata/default/initrd + +systemctl daemon-reload +systemctl enable kratad.service kratanet.service +systemctl restart kratad.service kratanet.service diff --git a/resources/systemd/kratad.service b/resources/systemd/kratad.service index 8171871..dac8460 100644 --- a/resources/systemd/kratad.service +++ b/resources/systemd/kratad.service @@ -5,7 +5,8 @@ Description=Krata Controller Daemon Restart=on-failure Type=simple WorkingDirectory=/var/lib/krata -ExecStart=/usr/bin/kratad +ExecStart=/usr/local/bin/kratad -l /var/lib/krata/daemon.socket --unix-listen-unlink +Environment=RUST_LOG=info User=root [Install] diff --git a/resources/systemd/kratanet.service b/resources/systemd/kratanet.service index 5c3dca4..2ee22c9 100644 --- a/resources/systemd/kratanet.service +++ b/resources/systemd/kratanet.service @@ -5,7 +5,8 @@ Description=Krata Networking Daemon Restart=on-failure Type=simple WorkingDirectory=/var/lib/krata -ExecStart=/usr/bin/kratanet +ExecStart=/usr/local/bin/kratanet +Environment=RUST_LOG=info User=root [Install] diff --git a/scripts/bundle.sh b/scripts/bundle.sh new file mode 100755 index 0000000..a8fb250 --- /dev/null +++ b/scripts/bundle.sh @@ -0,0 +1,40 @@ +#!/bin/sh +set -e + +REAL_SCRIPT="$(realpath "${0}")" +cd "$(dirname "${REAL_SCRIPT}")/.." +KRATA_DIR="${PWD}" + +OUTPUT_DIR="${KRATA_DIR}/target/bundle" +mkdir -p "${OUTPUT_DIR}" +BUNDLE_TAR="${OUTPUT_DIR}/krata.tgz" +rm -f "${BUNDLE_TAR}" +BUNDLE_DIR="$(mktemp -d /tmp/krata-bundle.XXXXXXXXXXXXX)" +BUNDLE_DIR="${BUNDLE_DIR}/krata" +mkdir -p "${BUNDLE_DIR}" +for X in kratad kratanet kratactl +do + cargo build --release --target x86_64-unknown-linux-gnu --bin "${X}" + cp "${KRATA_DIR}/target/x86_64-unknown-linux-gnu/release/${X}" "${BUNDLE_DIR}/${X}" +done +./initrd/build.sh +if [ "${KRATA_BUNDLE_SKIP_KERNEL_BUILD}" != "1" ] +then + ./kernel/build.sh +fi +cd "${BUNDLE_DIR}" +cp "${KRATA_DIR}/initrd/target/initrd" initrd +cp "${KRATA_DIR}/kernel/target/kernel" kernel +cp "${KRATA_DIR}/resources/systemd/kratad.service" kratad.service +cp "${KRATA_DIR}/resources/systemd/kratanet.service" kratanet.service +cp "${KRATA_DIR}/resources/install/install.sh" install.sh + +for X in install.sh kratactl kratad kratanet +do + chmod +x "${X}" +done + +cd .. +tar czf "${BUNDLE_TAR}" . +cd "${KRATA_DIR}" +rm -rf "$(dirname "${BUNDLE_DIR}")" diff --git a/scripts/ci/nightly.sh b/scripts/ci/nightly.sh deleted file mode 100755 index e3ab4c7..0000000 --- a/scripts/ci/nightly.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh -set -e - -REAL_SCRIPT="$(realpath "${0}")" -cd "$(dirname "${REAL_SCRIPT}")/../.." -KRATA_DIR="${PWD}" -NIGHTLY_TAR="${KRATA_DIR}/krata.tgz" -NIGHTLY_DIR="$(mktemp -d /tmp/krata-release.XXXXXXXXXXXXX)" -for X in kratad kratanet kratactl -do - cargo build --release --target x86_64-unknown-linux-gnu --bin "${X}" - cp "${KRATA_DIR}/target/x86_64-unknown-linux-gnu/release/${X}" "${NIGHTLY_DIR}/${X}" -done -./initrd/build.sh -./kernel/build.sh -cd "${NIGHTLY_DIR}" -cp "${KRATA_DIR}/initrd/target/initrd" initrd -cp "${KRATA_DIR}/kernel/target/kernel" kernel -cp "${KRATA_DIR}/resources/systemd/kratad.service" kratad.service -cp "${KRATA_DIR}/resources/systemd/kratanet.service" kratanet.service -tar czf "${NIGHTLY_TAR}" . -cd "${KRATA_DIR}" -rm -rf "${NIGHTLY_DIR}"