diff --git a/extras/packaging/Jenkinsfile b/extras/packaging/Jenkinsfile index 48761c5eabaa8ca0cab7398084464baf95d5c229..d1040fad66c65c29af804b982fb7da0c3e536474 100644 --- a/extras/packaging/Jenkinsfile +++ b/extras/packaging/Jenkinsfile @@ -84,47 +84,57 @@ pipeline { } } stage('Build distributions') { - parallel { - stage('Ubuntu 22.04') { - steps { - dir('extras/packaging') { - sh """ - target="ubuntu-22" - mkdir -p "\$target" - docker build -t "dhtnet-builder:\$target" -f "gnu-linux/\$target.Dockerfile" --build-arg PKG_NAME="$FOLDER_NAME" . - docker run --rm \ - -v "\$(pwd)/\$target/":/build/artifacts \ - -e PKG_NAME="$FOLDER_NAME" "dhtnet-builder:\$target" - """ - } + matrix { + axes { + axis { + name 'TARGET' + values 'ubuntu_22.04', 'ubuntu_24.04', 'debian_12'/*, 'fedora_39', 'fedora_40', 'almalinux_9'*/ } } - stage('Ubuntu 24.04') { - steps { - dir('extras/packaging') { - sh """ - target="ubuntu-24" - mkdir -p "\$target" - docker build -t "dhtnet-builder:\$target" -f "gnu-linux/\$target.Dockerfile" --build-arg PKG_NAME="$FOLDER_NAME" . - docker run --rm \ - -v "\$(pwd)/\$target/":/build/artifacts \ - -e PKG_NAME="$FOLDER_NAME" "dhtnet-builder:\$target" - """ + stages { + stage('Build') { + steps { + dir('extras/packaging') { + sh """ + target="${TARGET}" + mkdir -p "\$target" + docker build -t "dhtnet-builder:\$target" -f "gnu-linux/\$target.Dockerfile" --build-arg PKG_NAME="$FOLDER_NAME" . + docker run --rm \ + -v "\$(pwd)/\$target/":/build/artifacts \ + -e PKG_NAME="$FOLDER_NAME" "dhtnet-builder:\$target" + """ + } } } } - stage('Debian 12') { - steps { - dir('extras/packaging') { - sh """ - target="debian-12" - mkdir -p "\$target" - docker build -t "dhtnet-builder:\$target" -f "gnu-linux/\$target.Dockerfile" --build-arg PKG_NAME="$FOLDER_NAME" . - docker run --rm \ - -v "\$(pwd)/\$target/":/build/artifacts \ - -e PKG_NAME="$FOLDER_NAME" "dhtnet-builder:\$target" - """ - } + } + } + stage('Publish to dhtnet.sfl.io') { + steps { + dir('extras/packaging') { + sshagent(credentials: [JENKINS_SSH_KEY, DL_SSH_KEY]) { + sh """ + mkdir -p publish + cp -R --parents ubuntu_*/dhtnet_*.deb publish/ + cp -R --parents debian_*/dhtnet_*.deb publish/ + # cp -R --parents fedora_*/dhtnet-*.rpm publish/ + # cp -R --parents almalinux_*/dhtnet-*.rpm publish/ + + rm -Rf publish/**/*debug* + rm -Rf publish/**/*.src.* + + if [ -f "\${SSH_IDENTITY_FILE}" ]; then + export RSYNC_RSH="ssh -i \${SSH_IDENTITY_FILE}" + fi + + echo "##########################" + echo "## deploying repository ##" + echo "##########################" + echo "Using RSYNC_RSH='\${RSYNC_RSH}'" + rsync --archive --recursive --verbose \ + --delete publish/ \ + "${REMOTE_HOST}:/srv/repository/dhtnet/$PUBLISH_CHANNEL" + """ } } } diff --git a/extras/packaging/build_packages.sh b/extras/packaging/build_packages.sh index 38e50f2dcef6c3e226e1ac4624ff31fb37d2cda8..95588ca50df1b1fcd8e3d2a3add89a873a36fc44 100755 --- a/extras/packaging/build_packages.sh +++ b/extras/packaging/build_packages.sh @@ -1,13 +1,14 @@ #!/bin/bash set -e +# move pwd to the directory of this script (extras/packaging) +cd "$(dirname "$0")" || exit 1 + PKG_NAME=dhtnet -PKG_VERSION="$(head -1 extras/packaging/build.version | grep -o '^[0-9\.]\+$' -)" +PKG_VERSION="$(head -1 build.version | grep -o '^[0-9\.]\+$' -)" FOLDER_NAME="${PKG_NAME}-${PKG_VERSION}" -# move pwd to the directory of this script (extras/packaging) -cd "$(dirname "$0")" || exit 1 rm -Rf "${FOLDER_NAME}" rm -f -- *${PKG_NAME}-${PKG_VERSION}.tar.gz @@ -20,9 +21,9 @@ rm -Rf "../../dependencies/restinio" (cd ../.. && git submodule update --init --recursive) build_ubuntu=false -build_ubuntu20=false -build_ubuntu22=false -build_ubuntu24=false +build_ubuntu20_04=false +build_ubuntu22_04=false +build_ubuntu24_04=false build_debian=false build_debian10=false build_debian11=false @@ -31,45 +32,45 @@ build_debian12=false parse_args() { while [ "$1" != "" ]; do case $1 in - -u | --ubuntu ) build_ubuntu=true - build_ubuntu20=true - build_ubuntu22=true - build_ubuntu24=true - ;; - -u20 | --ubuntu20 ) build_ubuntu20=true - build_ubuntu=true - ;; - -u22 | --ubuntu22 ) build_ubuntu22=true - build_ubuntu=true - ;; - -u24 | --ubuntu24 ) build_ubuntu24=true - build_ubuntu=true - ;; - -d | --debian ) build_debian=true - build_debian10=true - build_debian11=true - build_debian12=true - ;; - -d10 | --debian10 ) build_debian10=true - build_debian=true - ;; - -d11 | --debian11 ) build_debian11=true - build_debian=true - ;; - -d12 | --debian12 ) build_debian12=true - build_debian=true - ;; - -a | --all ) build_ubuntu=true - # not working: build_ubuntu20=true - build_ubuntu22=true - build_ubuntu24=true - build_debian=true - # not working: build_debian10=true - # not working: build_debian11=true - build_debian12=true - ;; - * ) echo "Argument '$1' is not recognized" - ;; + -u | --ubuntu ) build_ubuntu=true + build_ubuntu20_04=true + build_ubuntu22_04=true + build_ubuntu24_04=true + ;; + -u20 | -u20.04 | --ubuntu20.04 ) build_ubuntu20_04=true + build_ubuntu=true + ;; + -u22 | -u22.04 | --ubuntu22.04 ) build_ubuntu22_04=true + build_ubuntu=true + ;; + -u24 | -u24.04 | --ubuntu24.04 ) build_ubuntu24_04=true + build_ubuntu=true + ;; + -d | --debian ) build_debian=true + build_debian10=true + build_debian11=true + build_debian12=true + ;; + -d10 | --debian10 ) build_debian10=true + build_debian=true + ;; + -d11 | --debian11 ) build_debian11=true + build_debian=true + ;; + -d12 | --debian12 ) build_debian12=true + build_debian=true + ;; + -a | --all ) build_ubuntu=true + # not working: build_ubuntu20=true + build_ubuntu22_04=true + build_ubuntu24_04=true + build_debian=true + # not working: build_debian10=true + # not working: build_debian11=true + build_debian12=true + ;; + * ) echo "Argument '$1' is not recognized" + ;; esac shift done @@ -127,29 +128,29 @@ build_target() { } # build Ubuntu package (deb-*) -if [ "$build_ubuntu24" == true ]; then - build_target "ubuntu-24" +if [ "$build_ubuntu24_04" == true ]; then + build_target "ubuntu_24.04" fi -if [ "$build_ubuntu22" == true ]; then - build_target "ubuntu-22" +if [ "$build_ubuntu22_04" == true ]; then + build_target "ubuntu_22.04" fi -if [ "$build_ubuntu20" == true ]; then - build_target "ubuntu-20" +if [ "$build_ubuntu20_04" == true ]; then + build_target "ubuntu_20.04" fi # build Debian package (deb-*) if [ "$build_debian12" == true ]; then - build_target "debian-12" + build_target "debian_12" fi if [ "$build_debian11" == true ]; then - build_target "debian-11" + build_target "debian_11" fi if [ "$build_debian10" == true ]; then - build_target "debian-10" + build_target "debian_10" fi diff --git a/extras/packaging/gnu-linux/debian-10.Dockerfile b/extras/packaging/gnu-linux/debian_10.Dockerfile similarity index 100% rename from extras/packaging/gnu-linux/debian-10.Dockerfile rename to extras/packaging/gnu-linux/debian_10.Dockerfile diff --git a/extras/packaging/gnu-linux/debian-11.Dockerfile b/extras/packaging/gnu-linux/debian_11.Dockerfile similarity index 100% rename from extras/packaging/gnu-linux/debian-11.Dockerfile rename to extras/packaging/gnu-linux/debian_11.Dockerfile diff --git a/extras/packaging/gnu-linux/debian-12.Dockerfile b/extras/packaging/gnu-linux/debian_12.Dockerfile similarity index 100% rename from extras/packaging/gnu-linux/debian-12.Dockerfile rename to extras/packaging/gnu-linux/debian_12.Dockerfile diff --git a/extras/packaging/gnu-linux/ubuntu-20.Dockerfile b/extras/packaging/gnu-linux/ubuntu_20.04.Dockerfile similarity index 100% rename from extras/packaging/gnu-linux/ubuntu-20.Dockerfile rename to extras/packaging/gnu-linux/ubuntu_20.04.Dockerfile diff --git a/extras/packaging/gnu-linux/ubuntu-22.Dockerfile b/extras/packaging/gnu-linux/ubuntu_22.04.Dockerfile similarity index 100% rename from extras/packaging/gnu-linux/ubuntu-22.Dockerfile rename to extras/packaging/gnu-linux/ubuntu_22.04.Dockerfile diff --git a/extras/packaging/gnu-linux/ubuntu-24.Dockerfile b/extras/packaging/gnu-linux/ubuntu_24.04.Dockerfile similarity index 100% rename from extras/packaging/gnu-linux/ubuntu-24.Dockerfile rename to extras/packaging/gnu-linux/ubuntu_24.04.Dockerfile