From 48fb0052a46685801d010137b9450c3fa6c30b6e Mon Sep 17 00:00:00 2001 From: Norio Nomura Date: Tue, 9 Jul 2024 11:42:10 +0900 Subject: [PATCH] first commit --- .../action.yml | 36 ++++ .../action.yml | 44 +++++ .github/workflows/docker-image-ci.yml | 154 ++++++++++++++++++ .gitignore | 8 + Dockerfile | 12 ++ LICENSE | 21 +++ Package.resolved | 15 ++ Package.swift | 24 +++ Sources/main.swift | 25 +++ 9 files changed, 339 insertions(+) create mode 100644 .github/actions/configure-docker-containerd-image-store/action.yml create mode 100644 .github/actions/install_qemu_user_static_from_debian/action.yml create mode 100644 .github/workflows/docker-image-ci.yml create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 LICENSE create mode 100644 Package.resolved create mode 100644 Package.swift create mode 100644 Sources/main.swift diff --git a/.github/actions/configure-docker-containerd-image-store/action.yml b/.github/actions/configure-docker-containerd-image-store/action.yml new file mode 100644 index 0000000..d6a16d1 --- /dev/null +++ b/.github/actions/configure-docker-containerd-image-store/action.yml @@ -0,0 +1,36 @@ +name: 'configure docker containerd image store' +description: 'configure docker containerd image store' +inputs: + USE_CONTAINERD: + description: use containerd as docker image store + required: false + default: 'false' +runs: + using: "composite" + steps: + - run: | + # enable containerd image store + ENABLE_CONTAINERD_IMAGE_STORE=${{ inputs.USE_CONTAINERD }} + [ "$ENABLE_CONTAINERD_IMAGE_STORE" != 'false' ] \ + && ENABLE_CONTAINERD_IMAGE_STORE=true \ + || ENABLE_CONTAINERD_IMAGE_STORE=false + + # detect current configuration + config=/etc/docker/daemon.json + current=$((sudo cat "$config" 2>/dev/null || echo "{}")|jq '.features."containerd-snapshotter" // false') + + # update configuration if necessary + [ "$current" = "$ENABLE_CONTAINERD_IMAGE_STORE" ] && exit 0 + jq_expression='.features."containerd-snapshotter" = '$ENABLE_CONTAINERD_IMAGE_STORE + tmpfile=$(mktemp) && (sudo cat "$config" 2>/dev/null || echo "{}") | jq "$jq_expression" > "$tmpfile" + mkdir -p $(dirname "$config") && (cat "$tmpfile" | sudo tee "$config") && rm "$tmpfile" + + # restart docker + sudo systemctl restart docker || sudo journalctl -xeu docker.service + echo --- + docker info + echo --- + docker image ls + echo --- + sudo systemctl status docker + shell: bash diff --git a/.github/actions/install_qemu_user_static_from_debian/action.yml b/.github/actions/install_qemu_user_static_from_debian/action.yml new file mode 100644 index 0000000..9e50a92 --- /dev/null +++ b/.github/actions/install_qemu_user_static_from_debian/action.yml @@ -0,0 +1,44 @@ +name: 'install qemu-user-static from debian' +description: 'install qemu-user-static from debian' +inputs: + VERSION: + description: version of qemu-user-static + required: false + TARGET_RELEASE: + default: bookworm + description: target release specifying to apt-get install + required: false +runs: + using: "composite" + steps: + - id: process + run: | + TARGET_RELEASE=${{ inputs.TARGET_RELEASE }} + VERSION=${{ inputs.VERSION }} + + # install debian-archive-keyring + keyring=/etc/apt/keyrings/debian-archive-keyring.gpg + [ -f $keyring ] || curl https://ftp-master.debian.org/keys/archive-key-11.asc -o - | sudo gpg --dearmor -o $keyring + + # add debian sources + debian_sources=/etc/apt/sources.list.d/debian-$TARGET_RELEASE.sources + [ -f "$debian_sources" ] || sudo tee $debian_sources <