summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDevan Carpenter <devan@taler.net>2024-02-16 14:15:57 -0500
committerDevan Carpenter <devan@taler.net>2024-02-16 23:31:38 -0500
commit88a8da0662ae746bc5c5662456301452af6c2957 (patch)
treeeceec78f42f79fa7d9338eabdcd66b401aa94141
parentc6476cd73f3b47d54994acadd19347df4a9297b0 (diff)
downloadsandcastle-ng-88a8da0662ae746bc5c5662456301452af6c2957.tar.gz
sandcastle-ng-88a8da0662ae746bc5c5662456301452af6c2957.tar.bz2
sandcastle-ng-88a8da0662ae746bc5c5662456301452af6c2957.zip
ci: add jobs to build and deploy container image
-rw-r--r--contrib/ci/Containerfile12
-rwxr-xr-xcontrib/ci/ci.sh36
-rwxr-xr-xcontrib/ci/jobs/0-build/build.sh9
-rwxr-xr-xcontrib/ci/jobs/0-build/job.sh6
-rw-r--r--contrib/ci/jobs/1-deploy/config.ini6
-rwxr-xr-xcontrib/ci/jobs/1-deploy/job.sh14
6 files changed, 83 insertions, 0 deletions
diff --git a/contrib/ci/Containerfile b/contrib/ci/Containerfile
new file mode 100644
index 0000000..7e09fa3
--- /dev/null
+++ b/contrib/ci/Containerfile
@@ -0,0 +1,12 @@
+FROM docker.io/library/debian:bookworm
+
+ENV DEBIAN_FRONTEND=noninteractive
+
+ADD https://github.com/containers/podman/releases/download/v4.3.1/podman-remote-static.tar.gz /tmp/podman-remote-static.tar.gz
+RUN tar -xvzf /tmp/podman-remote-static.tar.gz -C /usr/bin/ && \
+ rm -f /tmp/podman-remote-static.tar.gz && \
+ ln -s /usr/bin/podman-remote-static /usr/bin/podman
+
+WORKDIR /workdir
+
+CMD ["/usr/bin/bash"]
diff --git a/contrib/ci/ci.sh b/contrib/ci/ci.sh
new file mode 100755
index 0000000..3c946d4
--- /dev/null
+++ b/contrib/ci/ci.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+set -exvuo pipefail
+
+# Requires podman
+# Fails if not found in PATH
+OCI_RUNTIME=$(which podman)
+REPO_NAME=$(basename "${PWD}")
+JOB_NAME="${1}"
+JOB_ARCH=$((grep CONTAINER_ARCH contrib/ci/jobs/${JOB_NAME}/config.ini | cut -d' ' -f 3) || echo "${2:-amd64}")
+JOB_CONTAINER=$((grep CONTAINER_NAME contrib/ci/jobs/${JOB_NAME}/config.ini | cut -d' ' -f 3) || echo "localhost/${REPO_NAME}:${JOB_ARCH}")
+CONTAINER_BUILD=$((grep CONTAINER_BUILD contrib/ci/jobs/${JOB_NAME}/config.ini | cut -d' ' -f 3) || echo "True")
+
+echo "Image name: ${JOB_CONTAINER}"
+
+if [ "${CONTAINER_BUILD}" = "True" ] ; then
+ "${OCI_RUNTIME}" build \
+ --arch "${JOB_ARCH}" \
+ -t "${JOB_CONTAINER}" \
+ -f contrib/ci/Containerfile .
+fi
+
+"${OCI_RUNTIME}" run \
+ -v /run/user/$UID/podman/podman.sock:/run/podman/podman.sock \
+ --security-opt label=disable \
+ --rm \
+ -ti \
+ --arch "${JOB_ARCH}" \
+ --env CI_COMMIT_REF="$(git rev-parse HEAD)" \
+ --volume "${PWD}":/workdir \
+ --workdir /workdir \
+ "${JOB_CONTAINER}" \
+ contrib/ci/jobs/"${JOB_NAME}"/job.sh
+
+top_dir=$(dirname "${BASH_SOURCE[0]}")
+
+#"${top_dir}"/build.sh
diff --git a/contrib/ci/jobs/0-build/build.sh b/contrib/ci/jobs/0-build/build.sh
new file mode 100755
index 0000000..714ff88
--- /dev/null
+++ b/contrib/ci/jobs/0-build/build.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+set -exuo pipefail
+
+./sandcastle-build
+
+mkdir -p /artifacts/sandcastle-ng/${CI_COMMIT_REF} # Variable comes from CI environment
+podman save \
+ -o /artifacts/sandcastle-ng/${CI_COMMIT_REF}/taler-base-all.tar \
+ taler-base-all:latest
diff --git a/contrib/ci/jobs/0-build/job.sh b/contrib/ci/jobs/0-build/job.sh
new file mode 100755
index 0000000..8d79902
--- /dev/null
+++ b/contrib/ci/jobs/0-build/job.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+set -exuo pipefail
+
+job_dir=$(dirname "${BASH_SOURCE[0]}")
+
+"${job_dir}"/build.sh
diff --git a/contrib/ci/jobs/1-deploy/config.ini b/contrib/ci/jobs/1-deploy/config.ini
new file mode 100644
index 0000000..08c106f
--- /dev/null
+++ b/contrib/ci/jobs/1-deploy/config.ini
@@ -0,0 +1,6 @@
+[build]
+HALT_ON_FAILURE = True
+WARN_ON_FAILURE = True
+CONTAINER_BUILD = False
+CONTAINER_NAME = nixery.dev/shell/rsync
+CONTAINER_ARCH = amd64
diff --git a/contrib/ci/jobs/1-deploy/job.sh b/contrib/ci/jobs/1-deploy/job.sh
new file mode 100755
index 0000000..062abc1
--- /dev/null
+++ b/contrib/ci/jobs/1-deploy/job.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+set -exuo pipefail
+
+ARTIFACT_PATH="/artifacts/sandcastle-ng/${CI_COMMIT_REF}/*.tar"
+
+RSYNC_HOST="taler.host.internal"
+RSYNC_PORT=424240
+RSYNC_PATH="incoming"
+RSYNC_DEST="rsync://${RSYNC_HOST}/${RSYNC_PATH}"
+
+
+rsync -vP \
+ --port ${RSYNC_PORT} \
+ ${ARTIFACT_PATH} ${RSYNC_DEST}