From 38a0cb6376f3ff61218c0528fc7e1960c357b4f2 Mon Sep 17 00:00:00 2001 From: Avi Deitcher Date: Sun, 21 Jul 2024 12:20:53 +0300 Subject: [PATCH] test cases for volumes Signed-off-by: Avi Deitcher --- .../070_volumes/000_rw_on_rw/check.sh | 15 ++++++++ .../070_volumes/000_rw_on_rw/test.sh | 26 +++++++++++++ .../070_volumes/000_rw_on_rw/test.yml | 31 +++++++++++++++ .../070_volumes/000_rw_on_rw/write.sh | 5 +++ .../070_volumes/001_ro_on_ro/check.sh | 15 ++++++++ .../070_volumes/001_ro_on_ro/test.sh | 26 +++++++++++++ .../070_volumes/001_ro_on_ro/test.yml | 23 +++++++++++ .../070_volumes/002_rw_on_ro/check.sh | 15 ++++++++ .../070_volumes/002_rw_on_ro/test.sh | 29 ++++++++++++++ .../070_volumes/002_rw_on_ro/test.yml | 23 +++++++++++ .../070_volumes/003_ro_on_rw/check.sh | 14 +++++++ .../070_volumes/003_ro_on_rw/test.sh | 26 +++++++++++++ .../070_volumes/003_ro_on_rw/test.yml | 28 ++++++++++++++ .../070_volumes/003_ro_on_rw/write.sh | 15 ++++++++ .../000_build/070_volumes/004_blank/check.sh | 16 ++++++++ .../000_build/070_volumes/004_blank/test.sh | 26 +++++++++++++ .../000_build/070_volumes/004_blank/test.yml | 22 +++++++++++ .../000_build/070_volumes/005_image/check.sh | 17 +++++++++ .../000_build/070_volumes/005_image/test.sh | 26 +++++++++++++ .../000_build/070_volumes/005_image/test.yml | 23 +++++++++++ .../070_volumes/006_mount_types/check.sh | 17 +++++++++ .../070_volumes/006_mount_types/test.sh | 26 +++++++++++++ .../070_volumes/006_mount_types/test.yml | 38 +++++++++++++++++++ 23 files changed, 502 insertions(+) create mode 100755 test/cases/000_build/070_volumes/000_rw_on_rw/check.sh create mode 100755 test/cases/000_build/070_volumes/000_rw_on_rw/test.sh create mode 100644 test/cases/000_build/070_volumes/000_rw_on_rw/test.yml create mode 100755 test/cases/000_build/070_volumes/000_rw_on_rw/write.sh create mode 100755 test/cases/000_build/070_volumes/001_ro_on_ro/check.sh create mode 100755 test/cases/000_build/070_volumes/001_ro_on_ro/test.sh create mode 100644 test/cases/000_build/070_volumes/001_ro_on_ro/test.yml create mode 100755 test/cases/000_build/070_volumes/002_rw_on_ro/check.sh create mode 100755 test/cases/000_build/070_volumes/002_rw_on_ro/test.sh create mode 100644 test/cases/000_build/070_volumes/002_rw_on_ro/test.yml create mode 100755 test/cases/000_build/070_volumes/003_ro_on_rw/check.sh create mode 100755 test/cases/000_build/070_volumes/003_ro_on_rw/test.sh create mode 100644 test/cases/000_build/070_volumes/003_ro_on_rw/test.yml create mode 100755 test/cases/000_build/070_volumes/003_ro_on_rw/write.sh create mode 100755 test/cases/000_build/070_volumes/004_blank/check.sh create mode 100755 test/cases/000_build/070_volumes/004_blank/test.sh create mode 100644 test/cases/000_build/070_volumes/004_blank/test.yml create mode 100755 test/cases/000_build/070_volumes/005_image/check.sh create mode 100755 test/cases/000_build/070_volumes/005_image/test.sh create mode 100644 test/cases/000_build/070_volumes/005_image/test.yml create mode 100755 test/cases/000_build/070_volumes/006_mount_types/check.sh create mode 100755 test/cases/000_build/070_volumes/006_mount_types/test.sh create mode 100644 test/cases/000_build/070_volumes/006_mount_types/test.yml diff --git a/test/cases/000_build/070_volumes/000_rw_on_rw/check.sh b/test/cases/000_build/070_volumes/000_rw_on_rw/check.sh new file mode 100755 index 000000000..a81383d46 --- /dev/null +++ b/test/cases/000_build/070_volumes/000_rw_on_rw/check.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +set -x + +function failed { + printf "rw_on_rw test suite FAILED\n" >&1 + exit 1 +} + +# check that the files we created are there and have the contents + +[ -d /vola ] || failed +[ -e /vola/mytestfile ] || failed +[ "$(cat /vola/mytestfile)" == "file" ] || failed +printf "rw_on_rw test suite PASSED\n" >&1 diff --git a/test/cases/000_build/070_volumes/000_rw_on_rw/test.sh b/test/cases/000_build/070_volumes/000_rw_on_rw/test.sh new file mode 100755 index 000000000..8605832d3 --- /dev/null +++ b/test/cases/000_build/070_volumes/000_rw_on_rw/test.sh @@ -0,0 +1,26 @@ +#!/bin/sh +# SUMMARY: Check that writing to a volume makes it visible +# LABELS: +# REPEAT: + +set -ex + +# Source libraries. Uncomment if needed/defined +#. "${RT_LIB}" +. "${RT_PROJECT_ROOT}/_lib/lib.sh" + +NAME=volume_rw_on_rw + +clean_up() { + rm -rf ${NAME}-* ${DISK} +} +trap clean_up EXIT + +# Test code goes here + +linuxkit build --format kernel+initrd --name ${NAME} test.yml +RESULT="$(linuxkit run ${NAME})" +echo "${RESULT}" +echo "${RESULT}" | grep -q "suite PASSED" + +exit 0 diff --git a/test/cases/000_build/070_volumes/000_rw_on_rw/test.yml b/test/cases/000_build/070_volumes/000_rw_on_rw/test.yml new file mode 100644 index 000000000..f13600035 --- /dev/null +++ b/test/cases/000_build/070_volumes/000_rw_on_rw/test.yml @@ -0,0 +1,31 @@ +kernel: + image: linuxkit/kernel:6.6.13 + cmdline: "console=ttyS0 console=ttyAMA0" +init: + - linuxkit/init:872d2e1be745f1acb948762562cf31c367303a3b + - linuxkit/runc:6062483d748609d505f2bcde4e52ee64a3329f5f +onboot: + - name: test1 + image: alpine:3.20 + binds: + - /write.sh:/write.sh + - vola:/vola + command: ["sh", "-c", "/write.sh"] + - name: test2 + image: alpine:3.20 + binds: + - /check.sh:/check.sh + - vola:/vola + command: ["sh", "-c", "/check.sh"] + - name: poweroff + image: linuxkit/poweroff:401dc53c604c0b2179ed0369a6968fd4179cc176 + command: ["/bin/sh", "/poweroff.sh", "10"] +volumes: + - name: vola +files: + - path: check.sh + source: ./check.sh + mode: "0700" + - path: write.sh + source: ./write.sh + mode: "0700" diff --git a/test/cases/000_build/070_volumes/000_rw_on_rw/write.sh b/test/cases/000_build/070_volumes/000_rw_on_rw/write.sh new file mode 100755 index 000000000..73017fbb8 --- /dev/null +++ b/test/cases/000_build/070_volumes/000_rw_on_rw/write.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +set -x + +echo -n "file" > /vola/mytestfile diff --git a/test/cases/000_build/070_volumes/001_ro_on_ro/check.sh b/test/cases/000_build/070_volumes/001_ro_on_ro/check.sh new file mode 100755 index 000000000..6e809228e --- /dev/null +++ b/test/cases/000_build/070_volumes/001_ro_on_ro/check.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +set -x + +function failed { + printf "ro_on_ro test suite FAILED\n" >&1 + exit 1 +} + +# this should fail as it is read-only +echo -n "file" > /vola/mytestfile || true + +[ -e /vola/mytestfile ] && failed + +printf "ro_on_ro test suite PASSED\n" >&1 diff --git a/test/cases/000_build/070_volumes/001_ro_on_ro/test.sh b/test/cases/000_build/070_volumes/001_ro_on_ro/test.sh new file mode 100755 index 000000000..8fbb4c99b --- /dev/null +++ b/test/cases/000_build/070_volumes/001_ro_on_ro/test.sh @@ -0,0 +1,26 @@ +#!/bin/sh +# SUMMARY: Check that writing to a volume makes it visible +# LABELS: +# REPEAT: + +set -ex + +# Source libraries. Uncomment if needed/defined +#. "${RT_LIB}" +. "${RT_PROJECT_ROOT}/_lib/lib.sh" + +NAME=volume_ro_on_ro + +clean_up() { + rm -rf ${NAME}-* ${DISK} +} +trap clean_up EXIT + +# Test code goes here + +linuxkit build --format kernel+initrd --name ${NAME} test.yml +RESULT="$(linuxkit run ${NAME})" +echo "${RESULT}" +echo "${RESULT}" | grep -q "suite PASSED" + +exit 0 diff --git a/test/cases/000_build/070_volumes/001_ro_on_ro/test.yml b/test/cases/000_build/070_volumes/001_ro_on_ro/test.yml new file mode 100644 index 000000000..f311d187d --- /dev/null +++ b/test/cases/000_build/070_volumes/001_ro_on_ro/test.yml @@ -0,0 +1,23 @@ +kernel: + image: linuxkit/kernel:6.6.13 + cmdline: "console=ttyS0 console=ttyAMA0" +init: + - linuxkit/init:872d2e1be745f1acb948762562cf31c367303a3b + - linuxkit/runc:6062483d748609d505f2bcde4e52ee64a3329f5f +onboot: + - name: test + image: alpine:3.20 + binds: + - /check.sh:/check.sh + - vola:/vola:ro + command: ["sh", "-c", "/check.sh"] + - name: poweroff + image: linuxkit/poweroff:401dc53c604c0b2179ed0369a6968fd4179cc176 + command: ["/bin/sh", "/poweroff.sh", "10"] +volumes: + - name: vola + readonly: true +files: + - path: check.sh + source: ./check.sh + mode: "0700" diff --git a/test/cases/000_build/070_volumes/002_rw_on_ro/check.sh b/test/cases/000_build/070_volumes/002_rw_on_ro/check.sh new file mode 100755 index 000000000..4e5a4f43a --- /dev/null +++ b/test/cases/000_build/070_volumes/002_rw_on_ro/check.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +set -x + +function failed { + printf "rw_on_ro test suite FAILED\n" >&1 + exit 1 +} + +# this should fail as it is read-only +echo -n "file" > /vola/mytestfile || true + +[ -e /vola/mytestfile ] && failed + +printf "rw_on_ro test suite PASSED\n" >&1 diff --git a/test/cases/000_build/070_volumes/002_rw_on_ro/test.sh b/test/cases/000_build/070_volumes/002_rw_on_ro/test.sh new file mode 100755 index 000000000..b860be2dc --- /dev/null +++ b/test/cases/000_build/070_volumes/002_rw_on_ro/test.sh @@ -0,0 +1,29 @@ +#!/bin/sh +# SUMMARY: Check that writing to a volume makes it visible +# LABELS: +# REPEAT: + +set -ex + +# Source libraries. Uncomment if needed/defined +#. "${RT_LIB}" +. "${RT_PROJECT_ROOT}/_lib/lib.sh" + +NAME=volume_rw_on_r0 + +clean_up() { + rm -rf ${NAME}-* ${DISK} +} +trap clean_up EXIT + +# Test code goes here + +set +e +linuxkit build --format kernel+initrd --name ${NAME} test.yml +retcode=$? +set -e + +# the build should fail, as we have are mounting a read-only volume as read-write in a container +if [ $retcode -eq 0 ]; then + exit 1 +fi diff --git a/test/cases/000_build/070_volumes/002_rw_on_ro/test.yml b/test/cases/000_build/070_volumes/002_rw_on_ro/test.yml new file mode 100644 index 000000000..3374a4a45 --- /dev/null +++ b/test/cases/000_build/070_volumes/002_rw_on_ro/test.yml @@ -0,0 +1,23 @@ +kernel: + image: linuxkit/kernel:6.6.13 + cmdline: "console=ttyS0 console=ttyAMA0" +init: + - linuxkit/init:872d2e1be745f1acb948762562cf31c367303a3b + - linuxkit/runc:6062483d748609d505f2bcde4e52ee64a3329f5f +onboot: + - name: test + image: alpine:3.20 + binds: + - /check.sh:/check.sh + - vola:/vola + command: ["sh", "-c", "/check.sh"] + - name: poweroff + image: linuxkit/poweroff:401dc53c604c0b2179ed0369a6968fd4179cc176 + command: ["/bin/sh", "/poweroff.sh", "10"] +volumes: + - name: vola + readonly: true +files: + - path: check.sh + source: ./check.sh + mode: "0700" diff --git a/test/cases/000_build/070_volumes/003_ro_on_rw/check.sh b/test/cases/000_build/070_volumes/003_ro_on_rw/check.sh new file mode 100755 index 000000000..99cc14028 --- /dev/null +++ b/test/cases/000_build/070_volumes/003_ro_on_rw/check.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +set -x + +function failed { + printf "ro_on_rw test suite FAILED\n" >&1 + exit 1 +} + +# the file should not exist, as it was mounted read-only + +[ -d /vola ] || failed +[ -e /vola/mytestfile ] && failed +printf "ro_on_rw test suite PASSED\n" >&1 diff --git a/test/cases/000_build/070_volumes/003_ro_on_rw/test.sh b/test/cases/000_build/070_volumes/003_ro_on_rw/test.sh new file mode 100755 index 000000000..a1a5bd856 --- /dev/null +++ b/test/cases/000_build/070_volumes/003_ro_on_rw/test.sh @@ -0,0 +1,26 @@ +#!/bin/sh +# SUMMARY: Check that writing to a volume makes it visible +# LABELS: +# REPEAT: + +set -ex + +# Source libraries. Uncomment if needed/defined +#. "${RT_LIB}" +. "${RT_PROJECT_ROOT}/_lib/lib.sh" + +NAME=volume_ro_on_rw + +clean_up() { + rm -rf ${NAME}-* ${DISK} +} +trap clean_up EXIT + +# Test code goes here + +linuxkit build --format kernel+initrd --name ${NAME} test.yml +RESULT="$(linuxkit run ${NAME})" +echo "${RESULT}" +echo "${RESULT}" | grep -q "suite PASSED" + +exit 0 diff --git a/test/cases/000_build/070_volumes/003_ro_on_rw/test.yml b/test/cases/000_build/070_volumes/003_ro_on_rw/test.yml new file mode 100644 index 000000000..e1d60c434 --- /dev/null +++ b/test/cases/000_build/070_volumes/003_ro_on_rw/test.yml @@ -0,0 +1,28 @@ +kernel: + image: linuxkit/kernel:6.6.13 + cmdline: "console=ttyS0 console=ttyAMA0" +init: + - linuxkit/init:872d2e1be745f1acb948762562cf31c367303a3b + - linuxkit/runc:6062483d748609d505f2bcde4e52ee64a3329f5f +onboot: + - name: test1 + image: alpine:3.20 + binds: + - /write.sh:/write.sh + - vola:/vola:ro + command: ["sh", "-c", "/write.sh"] + - name: test2 + image: alpine:3.20 + binds: + - /check.sh:/check.sh + - vola:/vola:ro + command: ["sh", "-c", "/check.sh"] + - name: poweroff + image: linuxkit/poweroff:401dc53c604c0b2179ed0369a6968fd4179cc176 + command: ["/bin/sh", "/poweroff.sh", "10"] +volumes: + - name: vola +files: + - path: check.sh + source: ./check.sh + mode: "0700" diff --git a/test/cases/000_build/070_volumes/003_ro_on_rw/write.sh b/test/cases/000_build/070_volumes/003_ro_on_rw/write.sh new file mode 100755 index 000000000..6e809228e --- /dev/null +++ b/test/cases/000_build/070_volumes/003_ro_on_rw/write.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +set -x + +function failed { + printf "ro_on_ro test suite FAILED\n" >&1 + exit 1 +} + +# this should fail as it is read-only +echo -n "file" > /vola/mytestfile || true + +[ -e /vola/mytestfile ] && failed + +printf "ro_on_ro test suite PASSED\n" >&1 diff --git a/test/cases/000_build/070_volumes/004_blank/check.sh b/test/cases/000_build/070_volumes/004_blank/check.sh new file mode 100755 index 000000000..b43601ce5 --- /dev/null +++ b/test/cases/000_build/070_volumes/004_blank/check.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +set -x + +function failed { + printf "blank volume test suite FAILED\n" >&1 + exit 1 +} + +# check that no files exist + +[ -d /vola ] || failed + +contents=$(ls -A /vola) +[ -z "$contents" ] || failed +printf "blank volume test suite PASSED\n" >&1 diff --git a/test/cases/000_build/070_volumes/004_blank/test.sh b/test/cases/000_build/070_volumes/004_blank/test.sh new file mode 100755 index 000000000..1f070b3e1 --- /dev/null +++ b/test/cases/000_build/070_volumes/004_blank/test.sh @@ -0,0 +1,26 @@ +#!/bin/sh +# SUMMARY: Check that writing to a volume makes it visible +# LABELS: +# REPEAT: + +set -ex + +# Source libraries. Uncomment if needed/defined +#. "${RT_LIB}" +. "${RT_PROJECT_ROOT}/_lib/lib.sh" + +NAME=volume_blank + +clean_up() { + rm -rf ${NAME}-* ${DISK} +} +trap clean_up EXIT + +# Test code goes here + +linuxkit build --format kernel+initrd --name ${NAME} test.yml +RESULT="$(linuxkit run ${NAME})" +echo "${RESULT}" +echo "${RESULT}" | grep -q "suite PASSED" + +exit 0 diff --git a/test/cases/000_build/070_volumes/004_blank/test.yml b/test/cases/000_build/070_volumes/004_blank/test.yml new file mode 100644 index 000000000..cde65bcb4 --- /dev/null +++ b/test/cases/000_build/070_volumes/004_blank/test.yml @@ -0,0 +1,22 @@ +kernel: + image: linuxkit/kernel:6.6.13 + cmdline: "console=ttyS0 console=ttyAMA0" +init: + - linuxkit/init:872d2e1be745f1acb948762562cf31c367303a3b + - linuxkit/runc:6062483d748609d505f2bcde4e52ee64a3329f5f +onboot: + - name: test + image: alpine:3.20 + binds: + - /check.sh:/check.sh + - vola:/vola + command: ["sh", "-c", "/check.sh"] + - name: poweroff + image: linuxkit/poweroff:401dc53c604c0b2179ed0369a6968fd4179cc176 + command: ["/bin/sh", "/poweroff.sh", "10"] +volumes: + - name: vola +files: + - path: check.sh + source: ./check.sh + mode: "0700" diff --git a/test/cases/000_build/070_volumes/005_image/check.sh b/test/cases/000_build/070_volumes/005_image/check.sh new file mode 100755 index 000000000..3e08dcc53 --- /dev/null +++ b/test/cases/000_build/070_volumes/005_image/check.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +set -x + +function failed { + printf "blank volume test suite FAILED\n" >&1 + exit 1 +} + +# check that no files exist + +[ -d /vola ] || failed + +contents=$(ls -A /vola) +[ -n "$contents" ] || failed +[ -e "/vola/bin/busybox" ] || failed +printf "blank volume test suite PASSED\n" >&1 diff --git a/test/cases/000_build/070_volumes/005_image/test.sh b/test/cases/000_build/070_volumes/005_image/test.sh new file mode 100755 index 000000000..099dc33be --- /dev/null +++ b/test/cases/000_build/070_volumes/005_image/test.sh @@ -0,0 +1,26 @@ +#!/bin/sh +# SUMMARY: Check that writing to a volume makes it visible +# LABELS: +# REPEAT: + +set -ex + +# Source libraries. Uncomment if needed/defined +#. "${RT_LIB}" +. "${RT_PROJECT_ROOT}/_lib/lib.sh" + +NAME=volume_image + +clean_up() { + rm -rf ${NAME}-* ${DISK} +} +trap clean_up EXIT + +# Test code goes here + +linuxkit build --format kernel+initrd --name ${NAME} test.yml +RESULT="$(linuxkit run ${NAME})" +echo "${RESULT}" +echo "${RESULT}" | grep -q "suite PASSED" + +exit 0 diff --git a/test/cases/000_build/070_volumes/005_image/test.yml b/test/cases/000_build/070_volumes/005_image/test.yml new file mode 100644 index 000000000..7b0aaf7de --- /dev/null +++ b/test/cases/000_build/070_volumes/005_image/test.yml @@ -0,0 +1,23 @@ +kernel: + image: linuxkit/kernel:6.6.13 + cmdline: "console=ttyS0 console=ttyAMA0" +init: + - linuxkit/init:872d2e1be745f1acb948762562cf31c367303a3b + - linuxkit/runc:6062483d748609d505f2bcde4e52ee64a3329f5f +onboot: + - name: test + image: alpine:3.20 + binds: + - /check.sh:/check.sh + - vola:/vola + command: ["sh", "-c", "/check.sh"] + - name: poweroff + image: linuxkit/poweroff:401dc53c604c0b2179ed0369a6968fd4179cc176 + command: ["/bin/sh", "/poweroff.sh", "10"] +volumes: + - name: vola + image: alpine:3.19 +files: + - path: check.sh + source: ./check.sh + mode: "0700" diff --git a/test/cases/000_build/070_volumes/006_mount_types/check.sh b/test/cases/000_build/070_volumes/006_mount_types/check.sh new file mode 100755 index 000000000..3e08dcc53 --- /dev/null +++ b/test/cases/000_build/070_volumes/006_mount_types/check.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +set -x + +function failed { + printf "blank volume test suite FAILED\n" >&1 + exit 1 +} + +# check that no files exist + +[ -d /vola ] || failed + +contents=$(ls -A /vola) +[ -n "$contents" ] || failed +[ -e "/vola/bin/busybox" ] || failed +printf "blank volume test suite PASSED\n" >&1 diff --git a/test/cases/000_build/070_volumes/006_mount_types/test.sh b/test/cases/000_build/070_volumes/006_mount_types/test.sh new file mode 100755 index 000000000..7bc5c5f34 --- /dev/null +++ b/test/cases/000_build/070_volumes/006_mount_types/test.sh @@ -0,0 +1,26 @@ +#!/bin/sh +# SUMMARY: Check that writing to a volume makes it visible +# LABELS: +# REPEAT: + +set -ex + +# Source libraries. Uncomment if needed/defined +#. "${RT_LIB}" +. "${RT_PROJECT_ROOT}/_lib/lib.sh" + +NAME=volume_mount_types + +clean_up() { + rm -rf ${NAME}-* ${DISK} +} +trap clean_up EXIT + +# Test code goes here + +linuxkit build --format kernel+initrd --name ${NAME} test.yml +RESULT="$(linuxkit run ${NAME})" +echo "${RESULT}" +echo "${RESULT}" | grep -q "suite PASSED" + +exit 0 diff --git a/test/cases/000_build/070_volumes/006_mount_types/test.yml b/test/cases/000_build/070_volumes/006_mount_types/test.yml new file mode 100644 index 000000000..311ac554d --- /dev/null +++ b/test/cases/000_build/070_volumes/006_mount_types/test.yml @@ -0,0 +1,38 @@ +kernel: + image: linuxkit/kernel:6.6.13 + cmdline: "console=ttyS0 console=ttyAMA0" +init: + - linuxkit/init:872d2e1be745f1acb948762562cf31c367303a3b + - linuxkit/runc:6062483d748609d505f2bcde4e52ee64a3329f5f +onboot: + - name: testbinds + image: alpine:3.20 + binds: + - /check.sh:/check.sh + - vola:/vola + command: ["sh", "-c", "/check.sh"] + - name: testmounts + image: alpine:3.20 + binds: + - /check.sh:/check.sh + mounts: + - type: bind + source: vola + destination: /vola + command: ["sh", "-c", "/check.sh"] + - name: testbindadds + image: alpine:3.20 + binds.add: + - /check.sh:/check.sh + - vola:/vola + command: ["sh", "-c", "/check.sh"] + - name: poweroff + image: linuxkit/poweroff:401dc53c604c0b2179ed0369a6968fd4179cc176 + command: ["/bin/sh", "/poweroff.sh", "10"] +volumes: + - name: vola + image: alpine:3.19 +files: + - path: check.sh + source: ./check.sh + mode: "0700"