aboutsummaryrefslogtreecommitdiff
path: root/contrib/ci
diff options
context:
space:
mode:
authorDevan Carpenter <git@dvn.me>2023-11-22 22:54:30 -0500
committerDevan Carpenter <git@dvn.me>2023-11-22 22:54:30 -0500
commit2f3120f189968c47c305ec7c66dba5b38bfb4170 (patch)
treef7cf503eb78a58e03c8713b4c3c7ec103bf18c1e /contrib/ci
parent12ab12595f5021427c4d09623f0d7bb9aac21710 (diff)
downloadgnunet-2f3120f189968c47c305ec7c66dba5b38bfb4170.tar.gz
gnunet-2f3120f189968c47c305ec7c66dba5b38bfb4170.zip
ci: move to contrib dir
Diffstat (limited to 'contrib/ci')
-rw-r--r--contrib/ci/Containerfile43
-rwxr-xr-xcontrib/ci/ci.sh30
-rwxr-xr-xcontrib/ci/jobs/0-build/build.sh10
-rwxr-xr-xcontrib/ci/jobs/0-build/job.sh6
-rwxr-xr-xcontrib/ci/jobs/2-deb-package/job.sh22
-rwxr-xr-xcontrib/ci/jobs/2-deb-package/version.sh12
-rw-r--r--contrib/ci/jobs/3-deploy-package/config.ini5
-rwxr-xr-xcontrib/ci/jobs/3-deploy-package/job.sh14
8 files changed, 142 insertions, 0 deletions
diff --git a/contrib/ci/Containerfile b/contrib/ci/Containerfile
new file mode 100644
index 000000000..e0778e7b7
--- /dev/null
+++ b/contrib/ci/Containerfile
@@ -0,0 +1,43 @@
1FROM docker.io/library/debian:bookworm
2
3ENV DEBIAN_FRONTEND=noninteractive
4
5RUN apt-get update -yqq && \
6 apt-get upgrade -yqq && \
7 apt-get install -yqq \
8 git \
9 autoconf \
10 libextractor-dev \
11 libjansson-dev \
12 libgcrypt-dev \
13 libqrencode-dev \
14 libpq-dev \
15 libmicrohttpd-dev \
16 pkg-config \
17 libtool \
18 recutils \
19 make \
20 python3-sphinx \
21 python3-sphinx-book-theme \
22 texinfo \
23 autopoint \
24 curl \
25 libcurl4-openssl-dev \
26 libsodium-dev \
27 libidn11-dev \
28 zlib1g-dev \
29 libunistring-dev \
30 iptables
31
32# Debian packaging tools
33RUN apt-get install -yqq \
34 po-debconf \
35 build-essential \
36 debhelper-compat \
37 devscripts \
38 git-buildpackage \
39 && rm -rf /var/lib/apt/lists/*
40
41WORKDIR /workdir
42
43CMD ["/bin/bash"]
diff --git a/contrib/ci/ci.sh b/contrib/ci/ci.sh
new file mode 100755
index 000000000..7dd3a957a
--- /dev/null
+++ b/contrib/ci/ci.sh
@@ -0,0 +1,30 @@
1#!/bin/bash
2set -evuo pipefail
3
4# Use podman if available, otherwise use docker.
5# Fails if neither is found in PATH
6OCI_RUNTIME=$(which podman || which docker)
7REPO_NAME=$(basename "${PWD}")
8JOB_NAME="${1}"
9JOB_CONTAINER=$((grep CONTAINER_NAME ci/jobs/${JOB_NAME}/config.ini | cut -d' ' -f 3) || echo "${REPO_NAME}")
10
11echo "${JOB_CONTAINER}"
12
13if [ "${JOB_CONTAINER}" = "${REPO_NAME}" ] ; then
14 "${OCI_RUNTIME}" build \
15 -t "${JOB_CONTAINER}" \
16 -f ci/Containerfile .
17fi
18
19"${OCI_RUNTIME}" run \
20 --rm \
21 -ti \
22 --env CI_COMMIT_REF="$(git rev-parse HEAD)" \
23 --volume "${PWD}":/workdir \
24 --workdir /workdir \
25 "${JOB_CONTAINER}" \
26 ci/jobs/"${JOB_NAME}"/job.sh
27
28top_dir=$(dirname "${BASH_SOURCE[0]}")
29
30#"${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 000000000..a5a89ca82
--- /dev/null
+++ b/contrib/ci/jobs/0-build/build.sh
@@ -0,0 +1,10 @@
1#!/bin/bash
2set -exuo pipefail
3
4./bootstrap
5./configure CFLAGS="-ggdb -O0" \
6 --enable-logging=verbose \
7 --disable-doc
8
9make -j $(nproc)
10make install
diff --git a/contrib/ci/jobs/0-build/job.sh b/contrib/ci/jobs/0-build/job.sh
new file mode 100755
index 000000000..8d79902c5
--- /dev/null
+++ b/contrib/ci/jobs/0-build/job.sh
@@ -0,0 +1,6 @@
1#!/bin/bash
2set -exuo pipefail
3
4job_dir=$(dirname "${BASH_SOURCE[0]}")
5
6"${job_dir}"/build.sh
diff --git a/contrib/ci/jobs/2-deb-package/job.sh b/contrib/ci/jobs/2-deb-package/job.sh
new file mode 100755
index 000000000..fc1f114f4
--- /dev/null
+++ b/contrib/ci/jobs/2-deb-package/job.sh
@@ -0,0 +1,22 @@
1#!/bin/bash
2set -exuo pipefail
3# This file is in the public domain.
4# Helper script to build the latest DEB packages in the container.
5
6
7unset LD_LIBRARY_PATH
8
9# Install build-time dependencies.
10# Update apt cache first
11apt-get update
12mk-build-deps --install --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' debian/control
13
14export VERSION="$(./ci/jobs/2-deb-package/version.sh)"
15echo "Building gnunet packages version ${VERSION}"
16EMAIL=none gbp dch --ignore-branch --debian-tag="%(version)s" --git-author --new-version="${VERSION}"
17./bootstrap
18dpkg-buildpackage -rfakeroot -b -uc -us
19
20ls -alh ../*.deb
21mkdir -p /artifacts/gnunet/${CI_COMMIT_REF} # Variable comes from CI environment
22mv ../*.deb /artifacts/gnunet/${CI_COMMIT_REF}/
diff --git a/contrib/ci/jobs/2-deb-package/version.sh b/contrib/ci/jobs/2-deb-package/version.sh
new file mode 100755
index 000000000..74d0099a2
--- /dev/null
+++ b/contrib/ci/jobs/2-deb-package/version.sh
@@ -0,0 +1,12 @@
1#!/bin/sh
2set -ex
3
4git fetch origin $(git rev-parse --abbrev-ref HEAD) --depth=1000 --tags
5RECENT_VERSION_TAG=$(git describe --tags --match 'v*.*.*' --always --abbrev=0 HEAD)
6
7commits="$(git rev-list ${RECENT_VERSION_TAG}..HEAD --count)"
8if [ "${commits}" = "0" ]; then
9 git describe --tag HEAD
10else
11 echo $(echo ${RECENT_VERSION_TAG} | cut -d'v' -f2)-${commits}-$(git rev-parse --short=8 HEAD)
12fi
diff --git a/contrib/ci/jobs/3-deploy-package/config.ini b/contrib/ci/jobs/3-deploy-package/config.ini
new file mode 100644
index 000000000..8d6409a6e
--- /dev/null
+++ b/contrib/ci/jobs/3-deploy-package/config.ini
@@ -0,0 +1,5 @@
1[build]
2HALT_ON_FAILURE = True
3WARN_ON_FAILURE = True
4CONTAINER_BUILD = False
5CONTAINER_NAME = nixery.dev/shell/rsync
diff --git a/contrib/ci/jobs/3-deploy-package/job.sh b/contrib/ci/jobs/3-deploy-package/job.sh
new file mode 100755
index 000000000..d53588a0f
--- /dev/null
+++ b/contrib/ci/jobs/3-deploy-package/job.sh
@@ -0,0 +1,14 @@
1#!/bin/bash
2set -exuo pipefail
3
4ARTIFACT_PATH="/artifacts/gnunet/${CI_COMMIT_REF}/*.deb"
5
6RSYNC_HOST="taler.host.internal"
7RSYNC_PORT=424242
8RSYNC_PATH="incoming_packages/bookworm-taler-ci/"
9RSYNC_DEST="rsync://${RSYNC_HOST}/${RSYNC_PATH}"
10
11
12rsync -vP \
13 --port ${RSYNC_PORT} \
14 ${ARTIFACT_PATH} ${RSYNC_DEST}