forked from lxcafe/lxcafe
added test infrastructure based on docker/podman
* documentation added * scripts to setup image and start container added
This commit is contained in:
+4
@@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Create test image from Dockerfile
|
||||
docker build -t mint-script-test -f Dockerfile .
|
||||
@@ -0,0 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Start container with the test image (interactive shell)
|
||||
docker run -it --rm \
|
||||
--cap-drop ALL --security-opt no-new-privileges --tmpfs /tmp:rw \
|
||||
-v "$(pwd)/../post_installation_script/20251212_Nachinstallationsarbeiten_LC_Esslingen_XFCE_v8.sh":/workspace/script.sh:ro \
|
||||
mint-script-test
|
||||
@@ -0,0 +1,41 @@
|
||||
FROM ubuntu:22.04
|
||||
|
||||
# Minimal image for safe simulation of apt installs.
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
bash wget tar curl gnupg ca-certificates apt-utils apt coreutils file procps && \
|
||||
apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# sudo wrapper: simulate apt installs and avoid making changes to the image
|
||||
RUN cat > /usr/local/bin/sudo <<'EOF'
|
||||
#!/bin/sh
|
||||
# sudo wrapper for simulation:
|
||||
# - simulate installs with `apt-get -s install ...`
|
||||
# - run `apt-get update` quietly (needed so apt -s has metadata)
|
||||
# - otherwise echo the command (no-op)
|
||||
cmd="$1"
|
||||
arg2="${2:-}"
|
||||
if [ "$cmd" = "apt" ] || [ "$cmd" = "apt-get" ]; then
|
||||
if [ "$arg2" = "install" ]; then
|
||||
shift 2
|
||||
echo "[sudo-wrapper] simulating: apt-get -s install $@"
|
||||
apt-get -s install "$@"
|
||||
exit $?
|
||||
elif [ "$arg2" = "update" ]; then
|
||||
# do not run update at runtime (may require extra privileges); simulate instead
|
||||
echo "[sudo-wrapper] simulating: apt-get update (no-op in container)"
|
||||
exit 0
|
||||
else
|
||||
echo "[sudo-wrapper] would run: $@"
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
echo "[sudo-wrapper] would run: $@"
|
||||
exit 0
|
||||
fi
|
||||
EOF
|
||||
RUN chmod +x /usr/local/bin/sudo
|
||||
|
||||
ENV PATH=/usr/local/bin:$PATH
|
||||
|
||||
WORKDIR /workspace
|
||||
ENTRYPOINT ["/bin/bash"]
|
||||
@@ -0,0 +1,60 @@
|
||||
# Post-Installation Script Testing
|
||||
|
||||
This directory contains everything needed to test the post-installation script in a safe, isolated container environment.
|
||||
|
||||
## Contents
|
||||
|
||||
- `Dockerfile` - Container image definition for testing
|
||||
- `01_create_image.sh` - script for creating container image locally
|
||||
- `02_start_container_with_image.sh` - script for starting container from created image
|
||||
|
||||
## Purpose
|
||||
|
||||
Provides a reproducible testing environment that allows:
|
||||
|
||||
- Running the post-installation script without affecting the host system
|
||||
- Simulating `apt` installations (safe, no real package changes)
|
||||
- Testing script logic, prompts, and error handling
|
||||
- Validating syntax and tracing execution
|
||||
|
||||
## Features
|
||||
|
||||
The Dockerfile includes:
|
||||
|
||||
- Ubuntu 22.04 base image
|
||||
- Simulated `sudo` wrapper that runs `apt-get -s install` (simulates installs without making changes)
|
||||
- Useful utilities: `bash`, `wget`, `tar`, `curl`, `gnupg`, `ca-certificates`, `file`, `procps`
|
||||
|
||||
## Usage
|
||||
|
||||
### Build the test image
|
||||
Run the prepared shell script to build the image
|
||||
|
||||
```bash
|
||||
cd post_installation_script_test
|
||||
sh 01_create_image.sh
|
||||
```
|
||||
|
||||
### Start a container for testing
|
||||
Run the prepared shell script start a new container for testing based in the
|
||||
image and remove container after it is stopped. After container is started an interactive session is started into the container.
|
||||
|
||||
```bash
|
||||
cd post_installation_script_test
|
||||
sh 02_start_container_with_image.sh
|
||||
```
|
||||
|
||||
|
||||
### Test the script file in the running container
|
||||
After container is started an interactive session was started in the container and the script can be started for testing
|
||||
|
||||
```bash
|
||||
sh script.sh
|
||||
```
|
||||
|
||||
## Security Notes
|
||||
|
||||
- The script is mounted read-only (`:ro` flag) to prevent container from modifying host files
|
||||
- Container runs with reduced privileges (`--cap-drop ALL --security-opt no-new-privileges`)
|
||||
- The `sudo` wrapper simulates apt operations, so no packages are actually installed
|
||||
- Use `--tmpfs /tmp:rw` for any temporary writes inside the container
|
||||
Reference in New Issue
Block a user