aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsickcodes <[email protected]>2021-03-28 10:33:05 +0000
committersickcodes <[email protected]>2021-03-28 10:33:05 +0000
commitbf9a00e679bb5d40a86249ab7d8118b0fb22bb1d (patch)
treecc7e0e746736fc961ae0a8e139c5060ad92a3cba
parentAdd shields with live image sizes (diff)
downloaddocker-osx-bf9a00e679bb5d40a86249ab7d8118b0fb22bb1d.tar.xz
docker-osx-bf9a00e679bb5d40a86249ab7d8118b0fb22bb1d.zip
Script to build all the images
-rw-r--r--tests/test.sh300
1 files changed, 300 insertions, 0 deletions
diff --git a/tests/test.sh b/tests/test.sh
new file mode 100644
index 0000000..a8e328b
--- /dev/null
+++ b/tests/test.sh
@@ -0,0 +1,300 @@
+#!/usr/bin/docker
+# ____ __ ____ ______ __
+# / __ \____ _____/ /_____ _____/ __ \/ ___/ |/ /
+# / / / / __ \/ ___/ //_/ _ \/ ___/ / / /\__ \| /
+# / /_/ / /_/ / /__/ ,< / __/ / / /_/ /___/ / |
+# /_____/\____/\___/_/|_|\___/_/ \____//____/_/|_| TESTS
+#
+# Title: Docker-OSX (Mac on Docker)
+# Author: Sick.Codes https://twitter.com/sickcodes
+# Version: 4.2
+# License: GPLv3+
+# Repository: https://github.com/sickcodes/Docker-OSX
+# Website: https://sick.codes
+#
+# Status: Work in progress.
+#
+
+help_text="Usage: ./test.sh --branch <string> --repo <string>
+
+General options:
+ --branch, -b <string> Git branch, default is master
+ --repo, -r <url> Alternative link to build
+ --mirror-country, -m <SS> Two letter country code for Arch mirrors
+ --docker-username, -u <string> Docker hub username
+ --docker-password, -p <string> Docker hub password
+ --vnc-password, -v <string> Choose a VNC passwd.
+
+Flags
+ --no-no-cache, -nn Disable --no-cache docker builds
+ --help, -h, help Display this help and exit
+"
+
+# set -xeuf -o pipefail
+
+NO_CACHE='--no-cache'
+
+# gather arguments
+while (( "$#" )); do
+ case "${1}" in
+
+ --help | -h | h | help )
+ echo "${help_text}" && exit 0
+ ;;
+
+ --branch=* | -b=* )
+ export BRANCH="${1#*=}"
+ shift
+ ;;
+ --branch* | -b* )
+ export BRANCH="${2}"
+ shift
+ shift
+ ;;
+ --repo=* | -r=* )
+ export REPO="${1#*=}"
+ shift
+ ;;
+ --repo* | -r* )
+ export REPO="${2}"
+ shift
+ shift
+ ;;
+ --mirror-country=* | -m=* )
+ export MIRROR_COUNTRY="${1#*=}"
+ shift
+ ;;
+ --mirror-country* | -m* )
+ export MIRROR_COUNTRY="${2}"
+ shift
+ shift
+ ;;
+ --vnc-password=* | -v=* | --vnc-passwd=* )
+ export VNC_PASSWORD="${1#*=}"
+ shift
+ ;;
+ --vnc-password* | -v* | --vnc-passwd* )
+ export VNC_PASSWORD="${2}"
+ shift
+ shift
+ ;;
+ --docker-username=* | -u=* )
+ export DOCKER_USERNAME="${1#*=}"
+ shift
+ ;;
+ --docker-username* | -u* )
+ export DOCKER_USERNAME="${2}"
+ shift
+ shift
+ ;;
+ --docker-password=* | -p=* )
+ export DOCKER_PASSWORD="${1#*=}"
+ shift
+ ;;
+ --docker-password* | -p* )
+ export DOCKER_PASSWORD="${2}"
+ shift
+ shift
+ ;;
+ --no-no-cache | -nn )
+ export NO_CACHE=
+ shift
+ ;;
+ *)
+ echo "Invalid option: ${1}"
+ exit 1
+ ;;
+
+ esac
+done
+
+BRANCH="${BRANCH:=master}"
+REPO="${REPO:=https://github.com/sickcodes/Docker-OSX.git}"
+VNC_PASSWORD="${VNC_PASSWORD:=testing}"
+MIRROR_COUNTRY="${MIRROR_COUNTRY:=US}"
+
+TEST_BUILDS=(
+'docker-osx:latest'
+'docker-osx:naked'
+'docker-osx:big-sur'
+'docker-osx:auto'
+#'docker-osx:auto-big-sur'
+)
+
+install_docker () {
+ apt remove docker docker-engine docker.io containerd runc -y \
+ ; apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -y \
+ && curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - \
+ && apt-key fingerprint 0EBFCD88 \
+ && add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \
+ && apt update -y \
+ && apt install docker-ce docker-ce-cli containerd.io -y \
+ && usermod -aG docker "${USER}" \
+ && su hook docker run --rm hello-world
+}
+
+install_vnc () {
+ apt update -y \
+ && apt install xorg openbox tigervnc-standalone-server tigervnc-common tigervnc-xorg-extension tigervnc-viewer -y \
+ && mkdir -p ${HOME}/.vnc \
+ && touch ~/.vnc/config \
+ && tee -a ~/.vnc/config <<< 'geometry=1920x1080' \
+ && tee -a ~/.vnc/config <<< 'localhost' \
+ && tee -a ~/.vnc/config <<< 'alwaysshared' \
+ && touch ./vnc.sh \
+ && printf '\n%s\n' \
+ 'sudo rm -f /tmp/.X99-lock' \
+ 'export DISPLAY=:99' \
+ '/usr/bin/Xvnc -geometry 1920x1080 -rfbauth ~/.vnc/passwd :99 &' > ./vnc.sh \
+ && tee vncpasswd_file <<< "${VNC_PASSWORD:=testing}" && echo "${VNC_PASSWORD:="$(tr -dc '[:graph:]' </dev/urandom | head -c8)"}" \
+ && vncpasswd -f < vncpasswd_file > ${HOME}/.vnc/passwd \
+ && chmod 600 ~/.vnc/passwd \
+ && apt install qemu qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virt-manager -y \
+ && sudo systemctl enable libvirtd.service \
+ && sudo systemctl enable virtlogd.service \
+ && echo 1 | sudo tee /sys/module/kvm/parameters/ignore_msrs \
+ && sudo modprobe kvm \
+ && echo 'export DISPLAY=:99' >> ~/.bashrc \
+ && printf '\n\n\n\n%s\n%s\n\n\n\n' '===========VNC_PASSWORD========== ' "$(<vncpasswd_file)"
+ # ufw allow 5999
+}
+
+install_scrotcat () {
+ apt update -y
+ apt install git curl wget vim xvfb scrot build-essential sshpass -y
+ git clone https://github.com/stolk/imcat.git
+ make -C ./imcat
+ sudo cp ./imcat/imcat /usr/bin/imcat
+ touch /usr/bin/scrotcat
+ tee -a /usr/bin/scrotcat <<< '/usr/bin/imcat <(scrot -o /dev/stdout)'
+ chmod +x /usr/bin/scrotcat
+}
+
+export_display_99 () {
+ touch ~/.bashrc
+ tee -a ~/.bashrc <<< 'export DISPLAY=:99'
+ export DISPLAY=:99
+}
+
+start_xvfb () {
+ nohup Xvfb :99 -screen 0 1920x1080x16 &
+}
+
+start_vnc () {
+ nohup bash vnc.sh &
+}
+
+enable_kvm () {
+ echo 1 | tee /sys/module/kvm/parameters/ignore_msrs
+}
+
+
+clone_repo () {
+ git clone --branch="${1}" "${2}" Docker-OSX
+}
+
+
+docker-osx:latest () {
+ docker build \
+ "${NO_CACHE}" \
+ --build-arg BRANCH="${BRANCH}" \
+ --build-arg RANKMIRRORS=true \
+ --build-arg MIRROR_COUNTRY="${MIRROR_COUNTRY}" \
+ -f ./Dockerfile \
+ -t docker-osx:latest .
+ docker tag docker-osx:latest sickcodes/docker-osx:latest
+}
+
+
+docker-osx:naked () {
+ docker build \
+ "${NO_CACHE}" \
+ --build-arg RANKMIRRORS=true \
+ --build-arg MIRROR_COUNTRY="${MIRROR_COUNTRY}" \
+ -f ./Dockerfile.naked \
+ -t docker-osx:naked .
+ docker tag docker-osx:naked sickcodes/docker-osx:naked
+}
+
+
+docker-osx:big-sur () {
+ docker build \
+ "${NO_CACHE}" \
+ --build-arg VERSION=11 \
+ --build-arg RANKMIRRORS=true \
+ --build-arg MIRROR_COUNTRY="${MIRROR_COUNTRY}" \
+ -f ./Dockerfile \
+ -t docker-osx:big-sur .
+ docker tag docker-osx:big-sur sickcodes/docker-osx:big-sur
+}
+
+docker-osx:auto () {
+ docker build \
+ "${NO_CACHE}" \
+ --build-arg RANKMIRRORS=true \
+ --build-arg MIRROR_COUNTRY="${MIRROR_COUNTRY}" \
+ -f ./Dockerfile.auto \
+ -t docker-osx:auto .
+ docker tag docker-osx:auto sickcodes/docker-osx:auto
+}
+
+docker-osx:auto-big-sur () {
+ docker build \
+ "${NO_CACHE}" \
+ --build-arg RANKMIRRORS=true \
+ --build-arg MIRROR_COUNTRY="${MIRROR_COUNTRY}" \
+ --build-arg IMAGE_URL='https://images.sick.codes/mac_hdd_ng_auto_big_sur.img'
+ -f ./Dockerfile.auto-big-sur \
+ -t docker-osx:auto-big-sur .
+ docker tag docker-osx:auto-big-sur sickcodes/docker-osx:auto-big-sur
+}
+
+reset_docker_hard () {
+ systemctl disable --now docker
+ systemctl disable --now docker.socket
+ systemctl stop docker
+ systemctl stop docker.socket
+ rm -rf /var/lib/docker
+ systemctl enable --now docker
+}
+
+tee -a ~/.bashrc <<EOF ; true &&
+export DEBIAN_FRONTEND=noninteractive
+export TZ=UTC
+EOF
+export DEBIAN_FRONTEND=noninteractive \
+; export TZ=UTC \
+; ln -snf "/usr/share/zoneinfo/${TZ}" /etc/localtime \
+; tee -a /etc/timezone <<< "${TZ}" \
+; apt update -y \
+; apt-get install keyboard-configuration -y \
+; docker -v | grep '\ 20\.\|\ 19\.' || install_docker \
+; yes | apt install -y --no-install-recommends tzdata -y \
+; install_scrotcat \
+; yes | install_vnc \
+; export_display_99 \
+; echo start_xvfb \
+; start_vnc \
+; enable_kvm \
+; echo reset_docker_hard \
+; echo killall Xvfb \
+; clone_repo "${BRANCH}" "${REPO}" \
+; cd Docker-OSX \
+; for TEST_BUILD in "${TEST_BUILDS[@]}"; do
+ "${TEST_BUILD}"
+done \
+&& touch COMPLETED
+
+if [[ "${DOCKER_USERNAME}" ]] && [[ "${DOCKER_PASSWORD}" ]]; then
+ docker login --username "${DOCKER_USERNAME}" --password "${DOCKER_PASSWORD}" \
+ && docker push sickcodes/docker-osx:latest \
+ && docker push sickcodes/docker-osx:big-sur \
+ && docker push sickcodes/docker-osx:naked \
+ && docker push sickcodes/docker-osx:auto \
+ && docker push sickcodes/docker-osx:auto-big-sur \
+ && touch PUSHED
+fi
+
+# connect remotely to your server to use VNC
+# ssh -N [email protected] -L 5999:127.0.0.1:5999
+