diff options
author | Devan Carpenter <devan@taler.net> | 2024-02-16 14:15:57 -0500 |
---|---|---|
committer | Devan Carpenter <devan@taler.net> | 2024-02-16 23:31:38 -0500 |
commit | 88a8da0662ae746bc5c5662456301452af6c2957 (patch) | |
tree | eceec78f42f79fa7d9338eabdcd66b401aa94141 | |
parent | c6476cd73f3b47d54994acadd19347df4a9297b0 (diff) | |
download | sandcastle-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/Containerfile | 12 | ||||
-rwxr-xr-x | contrib/ci/ci.sh | 36 | ||||
-rwxr-xr-x | contrib/ci/jobs/0-build/build.sh | 9 | ||||
-rwxr-xr-x | contrib/ci/jobs/0-build/job.sh | 6 | ||||
-rw-r--r-- | contrib/ci/jobs/1-deploy/config.ini | 6 | ||||
-rwxr-xr-x | contrib/ci/jobs/1-deploy/job.sh | 14 |
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} |