diff options
Diffstat (limited to 'contrib/ci')
-rw-r--r-- | contrib/ci/Containerfile | 45 | ||||
-rwxr-xr-x | contrib/ci/ci.sh | 34 | ||||
-rw-r--r-- | contrib/ci/docker/Dockerfile | 32 | ||||
-rw-r--r-- | contrib/ci/docker/docker-entrypoint.sh | 3 | ||||
-rwxr-xr-x | contrib/ci/jobs/0-build/build.sh | 10 | ||||
-rwxr-xr-x | contrib/ci/jobs/0-build/job.sh | 6 | ||||
-rwxr-xr-x | contrib/ci/jobs/2-deb-package/job.sh | 22 | ||||
-rwxr-xr-x | contrib/ci/jobs/2-deb-package/version.sh | 17 | ||||
-rw-r--r-- | contrib/ci/jobs/3-deploy-package/config.ini | 6 | ||||
-rwxr-xr-x | contrib/ci/jobs/3-deploy-package/job.sh | 14 | ||||
-rwxr-xr-x | contrib/ci/jobs/4-arm64-build/build.sh | 11 | ||||
-rw-r--r-- | contrib/ci/jobs/4-arm64-build/config.ini | 6 | ||||
-rwxr-xr-x | contrib/ci/jobs/4-arm64-build/job.sh | 6 | ||||
-rw-r--r-- | contrib/ci/jobs/5-arm64-deb-package/config.ini | 6 | ||||
-rwxr-xr-x | contrib/ci/jobs/5-arm64-deb-package/job.sh | 22 | ||||
-rwxr-xr-x | contrib/ci/jobs/5-arm64-deb-package/version.sh | 17 | ||||
-rw-r--r-- | contrib/ci/jobs/6-arm64-deploy-package/config.ini | 6 | ||||
-rwxr-xr-x | contrib/ci/jobs/6-arm64-deploy-package/job.sh | 14 |
18 files changed, 242 insertions, 35 deletions
diff --git a/contrib/ci/Containerfile b/contrib/ci/Containerfile new file mode 100644 index 000000000..a69c35f7e --- /dev/null +++ b/contrib/ci/Containerfile | |||
@@ -0,0 +1,45 @@ | |||
1 | FROM docker.io/library/debian:bookworm | ||
2 | |||
3 | ENV DEBIAN_FRONTEND=noninteractive | ||
4 | |||
5 | RUN 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 | python3-sphinx-multiversion \ | ||
23 | python3-sphinx-rtd-theme \ | ||
24 | texinfo \ | ||
25 | autopoint \ | ||
26 | curl \ | ||
27 | libcurl4-openssl-dev \ | ||
28 | libsodium-dev \ | ||
29 | libidn11-dev \ | ||
30 | zlib1g-dev \ | ||
31 | libunistring-dev \ | ||
32 | iptables | ||
33 | |||
34 | # Debian packaging tools | ||
35 | RUN apt-get install -yqq \ | ||
36 | po-debconf \ | ||
37 | build-essential \ | ||
38 | debhelper-compat \ | ||
39 | devscripts \ | ||
40 | git-buildpackage \ | ||
41 | && rm -rf /var/lib/apt/lists/* | ||
42 | |||
43 | WORKDIR /workdir | ||
44 | |||
45 | CMD ["/bin/bash"] | ||
diff --git a/contrib/ci/ci.sh b/contrib/ci/ci.sh new file mode 100755 index 000000000..0719015b9 --- /dev/null +++ b/contrib/ci/ci.sh | |||
@@ -0,0 +1,34 @@ | |||
1 | #!/bin/bash | ||
2 | set -exvuo pipefail | ||
3 | |||
4 | # Requires podman | ||
5 | # Fails if not found in PATH | ||
6 | OCI_RUNTIME=$(which podman) | ||
7 | REPO_NAME=$(basename "${PWD}") | ||
8 | JOB_NAME="${1}" | ||
9 | JOB_ARCH=$((grep CONTAINER_ARCH contrib/ci/jobs/${JOB_NAME}/config.ini | cut -d' ' -f 3) || echo "${2:-amd64}") | ||
10 | JOB_CONTAINER=$((grep CONTAINER_NAME contrib/ci/jobs/${JOB_NAME}/config.ini | cut -d' ' -f 3) || echo "localhost/${REPO_NAME}:${JOB_ARCH}") | ||
11 | CONTAINER_BUILD=$((grep CONTAINER_BUILD contrib/ci/jobs/${JOB_NAME}/config.ini | cut -d' ' -f 3) || echo "True") | ||
12 | |||
13 | echo "Image name: ${JOB_CONTAINER}" | ||
14 | |||
15 | if [ "${CONTAINER_BUILD}" = "True" ] ; then | ||
16 | "${OCI_RUNTIME}" build \ | ||
17 | --arch "${JOB_ARCH}" \ | ||
18 | -t "${JOB_CONTAINER}" \ | ||
19 | -f contrib/ci/Containerfile . | ||
20 | fi | ||
21 | |||
22 | "${OCI_RUNTIME}" run \ | ||
23 | --rm \ | ||
24 | -ti \ | ||
25 | --arch "${JOB_ARCH}" \ | ||
26 | --env CI_COMMIT_REF="$(git rev-parse HEAD)" \ | ||
27 | --volume "${PWD}":/workdir \ | ||
28 | --workdir /workdir \ | ||
29 | "${JOB_CONTAINER}" \ | ||
30 | contrib/ci/jobs/"${JOB_NAME}"/job.sh | ||
31 | |||
32 | top_dir=$(dirname "${BASH_SOURCE[0]}") | ||
33 | |||
34 | #"${top_dir}"/build.sh | ||
diff --git a/contrib/ci/docker/Dockerfile b/contrib/ci/docker/Dockerfile deleted file mode 100644 index b9f019c43..000000000 --- a/contrib/ci/docker/Dockerfile +++ /dev/null | |||
@@ -1,32 +0,0 @@ | |||
1 | FROM ubuntu:18.04 | ||
2 | |||
3 | # Install the required build tools | ||
4 | RUN apt update && apt install -y apt git autopoint automake texinfo gettext autoconf libtool libidn11-dev libunistring-dev gnutls-dev libgcrypt20 libgcrypt20-dev libjansson-dev libsqlite3-dev wget flex bison libglib2.0-dev libgmp3-dev libmicrohttpd-dev libglpk-dev libextractor-dev | ||
5 | |||
6 | # Install gnurl from source at version gnurl-7.54.0 | ||
7 | WORKDIR /usr/src | ||
8 | RUN git clone https://git.taler.net/gnurl.git --branch gnurl-7.57.0 | ||
9 | RUN cd /usr/src/gnurl && autoreconf -i && ./configure --prefix=/usr --disable-ntlm-wb && make install | ||
10 | |||
11 | # Install libpbc | ||
12 | WORKDIR /usr/src | ||
13 | RUN wget https://crypto.stanford.edu/pbc/files/pbc-0.5.14.tar.gz && tar xvzpf pbc-0.5.14.tar.gz && cd /usr/src/pbc-0.5.14 && ./configure --prefix=/usr && make install | ||
14 | |||
15 | # Install libbswabe | ||
16 | WORKDIR /usr/src | ||
17 | RUN git clone https://github.com/schanzen/libgabe.git && cd /usr/src/libgabe && ./configure --prefix=/usr && make install | ||
18 | |||
19 | WORKDIR /usr/src | ||
20 | RUN git clone git://gnunet.org/gnunet.git | ||
21 | RUN cd /usr/src/gnunet && ./bootstrap && ./configure --enable-experimental --prefix=/usr && make && make install | ||
22 | |||
23 | RUN addgroup gnunetdns && addgroup gnunet && adduser --system --home /var/lib/gnunet gnunet | ||
24 | RUN chown gnunet:gnunet /var/lib/gnunet | ||
25 | RUN echo '[arm]\nSTART_SYSTEM_SERVICES = YES\nSTART_USER_SERVICES = NO\n' > /etc/gnunet.conf | ||
26 | |||
27 | ADD docker-entrypoint.sh . | ||
28 | |||
29 | RUN rm -rf /usr/src/* | ||
30 | #RUN apt remove gcc | ||
31 | |||
32 | CMD ["sh", "docker-entrypoint.sh"] | ||
diff --git a/contrib/ci/docker/docker-entrypoint.sh b/contrib/ci/docker/docker-entrypoint.sh deleted file mode 100644 index db916cce7..000000000 --- a/contrib/ci/docker/docker-entrypoint.sh +++ /dev/null | |||
@@ -1,3 +0,0 @@ | |||
1 | #!/bin/bash | ||
2 | gnunet-arm -s > $HOME/gnunet.log 2>&1 | ||
3 | exec bash | ||
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 | ||
2 | set -exuo pipefail | ||
3 | |||
4 | ./bootstrap | ||
5 | ./configure CFLAGS="-ggdb -O0" \ | ||
6 | --enable-logging=verbose \ | ||
7 | --disable-doc | ||
8 | |||
9 | make -j $(nproc) | ||
10 | make 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 | ||
2 | set -exuo pipefail | ||
3 | |||
4 | job_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..00ded9323 --- /dev/null +++ b/contrib/ci/jobs/2-deb-package/job.sh | |||
@@ -0,0 +1,22 @@ | |||
1 | #!/bin/bash | ||
2 | set -exuo pipefail | ||
3 | # This file is in the public domain. | ||
4 | # Helper script to build the latest DEB packages in the container. | ||
5 | |||
6 | |||
7 | unset LD_LIBRARY_PATH | ||
8 | |||
9 | # Install build-time dependencies. | ||
10 | # Update apt cache first | ||
11 | apt-get update | ||
12 | mk-build-deps --install --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' debian/control | ||
13 | |||
14 | export VERSION="$(./contrib/ci/jobs/2-deb-package/version.sh)" | ||
15 | echo "Building gnunet packages version ${VERSION}" | ||
16 | EMAIL=none gbp dch --ignore-branch --debian-tag="%(version)s" --git-author --new-version="${VERSION}" | ||
17 | ./bootstrap | ||
18 | dpkg-buildpackage -rfakeroot -b -uc -us | ||
19 | |||
20 | ls -alh ../*.deb | ||
21 | mkdir -p /artifacts/gnunet/${CI_COMMIT_REF} # Variable comes from CI environment | ||
22 | mv ../*.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..b12ca77ba --- /dev/null +++ b/contrib/ci/jobs/2-deb-package/version.sh | |||
@@ -0,0 +1,17 @@ | |||
1 | #!/bin/sh | ||
2 | set -ex | ||
3 | |||
4 | BRANCH=$(git name-rev --name-only HEAD) | ||
5 | if [ -z "${BRANCH}" ]; then | ||
6 | exit 1 | ||
7 | else | ||
8 | # "Unshallow" our checkout, but only our current branch, and exclude the submodules. | ||
9 | git fetch --no-recurse-submodules --tags --depth=1000 origin "${BRANCH}" | ||
10 | RECENT_VERSION_TAG=$(git describe --tags --match 'v*.*.*' --exclude '*-*dev*' --always --abbrev=0 HEAD || exit 1) | ||
11 | commits="$(git rev-list ${RECENT_VERSION_TAG}..HEAD --count)" | ||
12 | if [ "${commits}" = "0" ]; then | ||
13 | git describe --tag HEAD | sed -r 's/^v//' || exit 1 | ||
14 | else | ||
15 | echo $(echo ${RECENT_VERSION_TAG} | sed -r 's/^v//')-${commits}-$(git rev-parse --short=8 HEAD) | ||
16 | fi | ||
17 | fi | ||
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..08c106f9c --- /dev/null +++ b/contrib/ci/jobs/3-deploy-package/config.ini | |||
@@ -0,0 +1,6 @@ | |||
1 | [build] | ||
2 | HALT_ON_FAILURE = True | ||
3 | WARN_ON_FAILURE = True | ||
4 | CONTAINER_BUILD = False | ||
5 | CONTAINER_NAME = nixery.dev/shell/rsync | ||
6 | CONTAINER_ARCH = amd64 | ||
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 | ||
2 | set -exuo pipefail | ||
3 | |||
4 | ARTIFACT_PATH="/artifacts/gnunet/${CI_COMMIT_REF}/*.deb" | ||
5 | |||
6 | RSYNC_HOST="taler.host.internal" | ||
7 | RSYNC_PORT=424242 | ||
8 | RSYNC_PATH="incoming_packages/bookworm-taler-ci/" | ||
9 | RSYNC_DEST="rsync://${RSYNC_HOST}/${RSYNC_PATH}" | ||
10 | |||
11 | |||
12 | rsync -vP \ | ||
13 | --port ${RSYNC_PORT} \ | ||
14 | ${ARTIFACT_PATH} ${RSYNC_DEST} | ||
diff --git a/contrib/ci/jobs/4-arm64-build/build.sh b/contrib/ci/jobs/4-arm64-build/build.sh new file mode 100755 index 000000000..7da9d4a75 --- /dev/null +++ b/contrib/ci/jobs/4-arm64-build/build.sh | |||
@@ -0,0 +1,11 @@ | |||
1 | #!/bin/bash | ||
2 | set -exuo pipefail | ||
3 | |||
4 | make clean | ||
5 | ./bootstrap | ||
6 | ./configure CFLAGS="-ggdb -O0" \ | ||
7 | --enable-logging=verbose \ | ||
8 | --disable-doc | ||
9 | |||
10 | make -j $(nproc) | ||
11 | make install | ||
diff --git a/contrib/ci/jobs/4-arm64-build/config.ini b/contrib/ci/jobs/4-arm64-build/config.ini new file mode 100644 index 000000000..b5b4b5fe7 --- /dev/null +++ b/contrib/ci/jobs/4-arm64-build/config.ini | |||
@@ -0,0 +1,6 @@ | |||
1 | [build] | ||
2 | HALT_ON_FAILURE = True | ||
3 | WARN_ON_FAILURE = True | ||
4 | CONTAINER_BUILD = True | ||
5 | CONTAINER_NAME = gnunet:arm64 | ||
6 | CONTAINER_ARCH = arm64 | ||
diff --git a/contrib/ci/jobs/4-arm64-build/job.sh b/contrib/ci/jobs/4-arm64-build/job.sh new file mode 100755 index 000000000..8d79902c5 --- /dev/null +++ b/contrib/ci/jobs/4-arm64-build/job.sh | |||
@@ -0,0 +1,6 @@ | |||
1 | #!/bin/bash | ||
2 | set -exuo pipefail | ||
3 | |||
4 | job_dir=$(dirname "${BASH_SOURCE[0]}") | ||
5 | |||
6 | "${job_dir}"/build.sh | ||
diff --git a/contrib/ci/jobs/5-arm64-deb-package/config.ini b/contrib/ci/jobs/5-arm64-deb-package/config.ini new file mode 100644 index 000000000..b5b4b5fe7 --- /dev/null +++ b/contrib/ci/jobs/5-arm64-deb-package/config.ini | |||
@@ -0,0 +1,6 @@ | |||
1 | [build] | ||
2 | HALT_ON_FAILURE = True | ||
3 | WARN_ON_FAILURE = True | ||
4 | CONTAINER_BUILD = True | ||
5 | CONTAINER_NAME = gnunet:arm64 | ||
6 | CONTAINER_ARCH = arm64 | ||
diff --git a/contrib/ci/jobs/5-arm64-deb-package/job.sh b/contrib/ci/jobs/5-arm64-deb-package/job.sh new file mode 100755 index 000000000..00ded9323 --- /dev/null +++ b/contrib/ci/jobs/5-arm64-deb-package/job.sh | |||
@@ -0,0 +1,22 @@ | |||
1 | #!/bin/bash | ||
2 | set -exuo pipefail | ||
3 | # This file is in the public domain. | ||
4 | # Helper script to build the latest DEB packages in the container. | ||
5 | |||
6 | |||
7 | unset LD_LIBRARY_PATH | ||
8 | |||
9 | # Install build-time dependencies. | ||
10 | # Update apt cache first | ||
11 | apt-get update | ||
12 | mk-build-deps --install --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' debian/control | ||
13 | |||
14 | export VERSION="$(./contrib/ci/jobs/2-deb-package/version.sh)" | ||
15 | echo "Building gnunet packages version ${VERSION}" | ||
16 | EMAIL=none gbp dch --ignore-branch --debian-tag="%(version)s" --git-author --new-version="${VERSION}" | ||
17 | ./bootstrap | ||
18 | dpkg-buildpackage -rfakeroot -b -uc -us | ||
19 | |||
20 | ls -alh ../*.deb | ||
21 | mkdir -p /artifacts/gnunet/${CI_COMMIT_REF} # Variable comes from CI environment | ||
22 | mv ../*.deb /artifacts/gnunet/${CI_COMMIT_REF}/ | ||
diff --git a/contrib/ci/jobs/5-arm64-deb-package/version.sh b/contrib/ci/jobs/5-arm64-deb-package/version.sh new file mode 100755 index 000000000..b12ca77ba --- /dev/null +++ b/contrib/ci/jobs/5-arm64-deb-package/version.sh | |||
@@ -0,0 +1,17 @@ | |||
1 | #!/bin/sh | ||
2 | set -ex | ||
3 | |||
4 | BRANCH=$(git name-rev --name-only HEAD) | ||
5 | if [ -z "${BRANCH}" ]; then | ||
6 | exit 1 | ||
7 | else | ||
8 | # "Unshallow" our checkout, but only our current branch, and exclude the submodules. | ||
9 | git fetch --no-recurse-submodules --tags --depth=1000 origin "${BRANCH}" | ||
10 | RECENT_VERSION_TAG=$(git describe --tags --match 'v*.*.*' --exclude '*-*dev*' --always --abbrev=0 HEAD || exit 1) | ||
11 | commits="$(git rev-list ${RECENT_VERSION_TAG}..HEAD --count)" | ||
12 | if [ "${commits}" = "0" ]; then | ||
13 | git describe --tag HEAD | sed -r 's/^v//' || exit 1 | ||
14 | else | ||
15 | echo $(echo ${RECENT_VERSION_TAG} | sed -r 's/^v//')-${commits}-$(git rev-parse --short=8 HEAD) | ||
16 | fi | ||
17 | fi | ||
diff --git a/contrib/ci/jobs/6-arm64-deploy-package/config.ini b/contrib/ci/jobs/6-arm64-deploy-package/config.ini new file mode 100644 index 000000000..a8ad1c16d --- /dev/null +++ b/contrib/ci/jobs/6-arm64-deploy-package/config.ini | |||
@@ -0,0 +1,6 @@ | |||
1 | [build] | ||
2 | HALT_ON_FAILURE = True | ||
3 | WARN_ON_FAILURE = True | ||
4 | CONTAINER_BUILD = False | ||
5 | CONTAINER_NAME = nixery.dev/shell/rsync | ||
6 | CONTAINER_ARCH = arm64 | ||
diff --git a/contrib/ci/jobs/6-arm64-deploy-package/job.sh b/contrib/ci/jobs/6-arm64-deploy-package/job.sh new file mode 100755 index 000000000..d53588a0f --- /dev/null +++ b/contrib/ci/jobs/6-arm64-deploy-package/job.sh | |||
@@ -0,0 +1,14 @@ | |||
1 | #!/bin/bash | ||
2 | set -exuo pipefail | ||
3 | |||
4 | ARTIFACT_PATH="/artifacts/gnunet/${CI_COMMIT_REF}/*.deb" | ||
5 | |||
6 | RSYNC_HOST="taler.host.internal" | ||
7 | RSYNC_PORT=424242 | ||
8 | RSYNC_PATH="incoming_packages/bookworm-taler-ci/" | ||
9 | RSYNC_DEST="rsync://${RSYNC_HOST}/${RSYNC_PATH}" | ||
10 | |||
11 | |||
12 | rsync -vP \ | ||
13 | --port ${RSYNC_PORT} \ | ||
14 | ${ARTIFACT_PATH} ${RSYNC_DEST} | ||