+++ /dev/null
-#!/bin/bash
-set -ex
-
-if [[ ! -f /etc/redhat-release && ! -f /usr/bin/zypper ]] ; then
- exit 0
-fi
-
-cd $WORKSPACE
-
-get_rpm_dist() {
- LSB_RELEASE=/usr/bin/lsb_release
- [ ! -x $LSB_RELEASE ] && echo unknown && exit
-
- ID=`$LSB_RELEASE --short --id`
-
- case $ID in
- RedHatEnterpriseServer)
- RELEASE=`$LSB_RELEASE --short --release | cut -d. -f1`
- DIST=rhel$RELEASE
- DISTRO=rhel
- ;;
- CentOS)
- RELEASE=`$LSB_RELEASE --short --release | cut -d. -f1`
- DIST=el$RELEASE
- DISTRO=centos
- ;;
- Fedora)
- RELEASE=`$LSB_RELEASE --short --release`
- DIST=fc$RELEASE
- DISTRO=fedora
- ;;
- SUSE\ LINUX)
- DESC=`$LSB_RELEASE --short --description`
- RELEASE=`$LSB_RELEASE --short --release`
- case $DESC in
- *openSUSE*)
- DIST=opensuse$RELEASE
- DISTRO=opensuse
- ;;
- *Enterprise*)
- DIST=sles$RELEASE
- DISTRO=sles
- ;;
- esac
- ;;
- *)
- DIST=unknown
- DISTRO=unknown
- ;;
- esac
-
- echo $DIST
-}
-
-get_rpm_dist
-dist=$DIST
-[ -z "$dist" ] && echo no dist && exit 1
-echo dist $dist
-
-chacra_endpoint="calamari-clients/${BRANCH}/${SHA1}/${DISTRO}/${RELEASE}"
-chacra_check_url="${chacra_endpoint}/${ARCH}/calamari-clients-${VERSION}-${RPM_RELEASE}.${DIST}.${ARCH}.rpm"
-
-if [ "$THROWAWAY" = false ] ; then
- # this exists in scripts/build_utils.sh
- check_binary_existence $VENV $chacra_check_url
-fi
-
-HOST=$(hostname --short)
-echo "Building on $(hostname)"
-echo " DIST=${DIST}"
-echo " ARCH=${ARCH}"
-echo " WS=$WORKSPACE"
-echo " PWD=$(pwd)"
-echo " BUILD SOURCE=$COPYARTIFACT_BUILD_NUMBER_CEPH_SETUP"
-echo "*****"
-env
-echo "*****"
-
-# Install the dependencies
-sudo yum-builddep -y dist/calamari-clients.spec
-
-# Remove old source rpms
-rm -f *.src.rpm
-
-# Create the source rpm
-echo "Building SRPM"
-rpmbuild \
- --define "_sourcedir ./dist" \
- --define "_specdir ." \
- --define "_builddir ." \
- --define "_srcrpmdir ." \
- --define "_rpmdir ." \
- --define "dist .any" \
- --define "fedora 21" \
- --define "rhel 7" \
- --nodeps -bs dist/calamari-clients.spec
-SRPM=$(readlink -f *.src.rpm)
-
-# Build the binaries
-echo "Building RPMs"
-if ! sudo mock -r epel-${RELEASE}-${ARCH} --resultdir=./dist/rpm/"%(dist)s"/"%(target_arch)s"/ ${SRPM}; then
- for log in dist/rpm/*/*/*.log; do
- echo -e "\nLOG: $(basename $log)"
- cat "$log"
- done
- echo "ERROR: mock failed, see the build logs above"
-fi
-
-# Make sure we execute at the top level directory
-cd "$WORKSPACE"
-
-[ "$FORCE" = true ] && chacra_flags="--force" || chacra_flags=""
-
-if [ "$THROWAWAY" = false ] ; then
- # push binaries to chacra
- find dist/rpm/$DIST/ | egrep '\.rpm$' | $VENV/chacractl binary ${chacra_flags} create ${chacra_endpoint}/$ARCH/
-
- # start repo creation
- $VENV/chacractl repo update ${chacra_endpoint}
-
- echo Check the status of the repo at: https://shaman.ceph.com/api/repos/${chacra_endpoint}
-fi
+++ /dev/null
-#!/bin/bash
-#
-# Ceph distributed storage system
-#
-# Copyright (C) 2016 Red Hat <contact@redhat.com>
-#
-# Author: Boris Ranto <branto@redhat.com>
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-set -ex
-HOST=$(hostname --short)
-echo "Building on $(hostname)"
-echo " DIST=${DIST}"
-echo " BPTAG=${BPTAG}"
-echo " KEYID=${KEYID}"
-echo " WS=$WORKSPACE"
-echo " PWD=$(pwd)"
-echo " BUILD SOURCE=$COPYARTIFACT_BUILD_NUMBER_CEPH_SETUP"
-echo "*****"
-env
-echo "*****"
-
-if test $(id -u) != 0 ; then
- SUDO=sudo
-fi
-export LC_ALL=C # the following is vulnerable to i18n
-
-if test -f /etc/redhat-release ; then
- $SUDO yum install -y redhat-lsb-core
-fi
-
-if which apt-get > /dev/null ; then
- $SUDO apt-get install -y lsb-release
-fi
-
-case $(lsb_release -si) in
-CentOS|Fedora|SUSE*|RedHatEnterpriseServer)
- case $(lsb_release -si) in
- SUSE*)
- $SUDO zypper -y yum-utils
- ;;
- *)
- $SUDO yum install -y yum-utils mock
- ;;
- esac
- ;;
-*)
- echo "$(lsb_release -si) is unknown, dependencies will have to be installed manually."
- ;;
-esac
-
-pkgs=( "chacractl>=0.0.21" )
-TEMPVENV=$(create_venv_dir)
-VENV=${TEMPVENV}/bin
-install_python_packages $TEMPVENV "pkgs[@]"
-
-# ask shaman which chacra instance to use
-chacra_url=`curl -f -u $SHAMAN_API_USER:$SHAMAN_API_KEY https://shaman.ceph.com/api/nodes/next/`
-# create the .chacractl config file using global variables
-make_chacractl_config $chacra_url
+++ /dev/null
-#!/bin/bash
-set -ex
-
-# only do work if we are a RPM distro
-if [[ ! -f /etc/redhat-release && ! -f /usr/bin/zypper ]] ; then
- exit 0
-fi
+++ /dev/null
-- job:
- name: calamari-clients-build
- project-type: matrix
- defaults: global
- display-name: 'calamari-clients-build'
- block-downstream: false
- block-upstream: false
- concurrent: true
- properties:
- - github:
- url: https://github.com/ceph/calamari-clients
- execution-strategy:
- combination-filter: DIST==AVAILABLE_DIST && ARCH==AVAILABLE_ARCH && (ARCH=="x86_64" || (ARCH == "arm64" && (DIST == "xenial" || DIST == "centos7")))
- axes:
- - axis:
- type: label-expression
- name: MACHINE_SIZE
- values:
- - small
- - axis:
- type: label-expression
- name: AVAILABLE_ARCH
- values:
- - x86_64
- - arm64
- - axis:
- type: label-expression
- name: AVAILABLE_DIST
- values:
- - centos6
- - centos7
- - axis:
- type: dynamic
- name: DIST
- values:
- - DISTROS
- - axis:
- type: dynamic
- name: ARCH
- values:
- - ARCHS
-
-
-
- builders:
- - shell: |
- echo "Cleaning up top-level workarea (shared among workspaces)"
- rm -rf dist
- rm -rf venv
- rm -rf release
- - copyartifact:
- project: calamari-clients-setup
- filter: 'dist/**'
- which-build: last-successful
- - inject:
- properties-file: ${WORKSPACE}/dist/sha1
- - inject:
- properties-file: ${WORKSPACE}/dist/branch
- - inject:
- properties-file: ${WORKSPACE}/dist/version
- # rpm build scripts
- - shell:
- !include-raw:
- - ../../build/validate_rpm
- - ../../../scripts/build_utils.sh
- - ../../build/setup
- - ../../build/build_rpm
-
- wrappers:
- - inject-passwords:
- global: true
- mask-password-params: true
- - credentials-binding:
- - text:
- credential-id: shaman-api-key
- variable: SHAMAN_API_KEY
+++ /dev/null
-#!/bin/bash -ex
-
-HOST=$(hostname --short)
-echo "Building on ${HOST}"
-echo " DIST=${DIST}"
-echo " BPTAG=${BPTAG}"
-echo " WS=$WORKSPACE"
-echo " PWD=$(pwd)"
-echo " BRANCH=$BRANCH"
-echo " SHA1=$GIT_COMMIT"
-
-if [ -x "$BRANCH" ] ; then
- echo "No git branch was supplied"
- exit 1
-fi
-
-# Make sure the repo is clean
-echo "Cleaning up the repo"
-git clean -fxd
-
-# Make sure the dist directory is clean
-rm -rf dist build
-mkdir -p dist build
-
-echo "Building version $(git describe) Branch $BRANCH"
-
-# Install any setup-time deps
-if [ -x install-deps.sh ]; then
- echo "Ensuring dependencies are installed"
- ./install-deps.sh
-fi
-
-# Get the version
-eval $(./get-versions.sh)
-RPM_RELEASE=$(echo $REVISION | tr '-' '_')
-
-# Create the source tarball and move it to dist
-echo "Building source distribution"
-make DESTDIR=build/ REAL_BUILD=y VERSION=$VERSION REVISION=$REVISION RPM_REVISION=$RPM_RELEASE install
-tar -cvzf dist/calamari-clients-$VERSION-$RPM_RELEASE.tar.gz -C build opt
-
-# Prepare the spec file for build
-sed -e "s/@VERSION@/${VERSION}/g" -e "s/@RELEASE@/${RPM_RELEASE}/g" < calamari-clients.spec.in > dist/calamari-clients.spec
-
-# Save these so that we can later inject them into the build script
-cat > dist/sha1 << EOF
-SHA1=${GIT_COMMIT}
-EOF
-
-cat > dist/branch << EOF
-BRANCH=${BRANCH}
-EOF
-
-cat > dist/version << EOF
-VERSION=${VERSION}
-REVISION=${REVISION}
-RPM_RELEASE=${RPM_RELEASE}
-EOF
+++ /dev/null
-- job:
- name: calamari-clients-setup
- description: "This job step checks out the branch and builds the tarballs, diffs, and dsc that are passed to the calamari-clients-build step.\r\n\r\nNotes:\r\nJob needs to run on a releatively recent debian system. The Restrict where run feature is used to specifiy an appropriate label.\r\nThe clear workspace before checkout box for the git plugin is used."
- # we do not need to pin this to trusty anymore for the new jenkins instance
- # FIXME: unpin when this gets ported over
- node: small && centos7
- display-name: 'calamari-clients-setup'
- block-downstream: false
- block-upstream: false
- concurrent: true
- properties:
- - build-discarder:
- days-to-keep: -1
- num-to-keep: 25
- artifact-days-to-keep: -1
- artifact-num-to-keep: -1
- - github:
- url: https://github.com/ceph/calamari-clients
-
- parameters:
- - string:
- name: BRANCH
- description: "The git branch (or tag) to build"
-
- scm:
- - git:
- url: git@github.com:ceph/calamari-clients.git
- # Use the SSH key attached to the ceph-jenkins GitHub account.
- credentials-id: 'jenkins-build'
- branches:
- - $BRANCH
- skip-tag: true
- wipe-workspace: true
-
- builders:
- - shell:
- !include-raw: ../../build/build
-
- publishers:
- - archive:
- artifacts: 'dist/**'
- allow-empty: false
- latest-only: false
-
- wrappers:
- - inject-passwords:
- global: true
- mask-password-params: true
+++ /dev/null
-- job:
- name: calamari-clients
- description: 'This is the main calamari-clients build task which builds for testing purposes.'
- project-type: multijob
- defaults: global
- concurrent: true
- display-name: 'calamari-clients'
- block-downstream: false
- block-upstream: false
- properties:
- - build-discarder:
- days-to-keep: -1
- num-to-keep: 25
- artifact-days-to-keep: 25
- artifact-num-to-keep: 25
- - github:
- url: https://github.com/ceph/calamari-clients
-
- parameters:
- - string:
- name: BRANCH
- description: "The git branch (or tag) to build"
- default: master
-
- - string:
- name: DISTROS
- description: "A list of distros to build for. Available options are: xenial, centos7, centos6, trusty, precise, wheezy, and jessie"
- default: "centos6 centos7"
-
- - string:
- name: ARCHS
- description: "A list of architectures to build for. Available options are: x86_64, and arm64"
- default: "x86_64"
-
- - bool:
- name: THROWAWAY
- description: "
-Default: False. When True it will not POST binaries to chacra. Artifacts will not be around for long. Useful to test builds."
- default: false
-
- - bool:
- name: FORCE
- description: "
-If this is unchecked, then nothing is built or pushed if they already exist in chacra. This is the default.
-
-If this is checked, then the binaries will be built and pushed to chacra even if they already exist in chacra."
-
- - string:
- name: CALAMARI_BUILD_VIRTUALENV
- description: "Base parent path for virtualenv locations, set to avoid issues with extremely long paths that are incompatible with tools like pip. Defaults to '/tmp/' (note the trailing slash, which is required)."
- default: "/tmp/"
-
- builders:
- - multijob:
- name: 'calamari-clients setup phase'
- condition: SUCCESSFUL
- projects:
- - name: calamari-clients-setup
- current-parameters: true
- exposed-scm: false
- - multijob:
- name: 'calamari-clients build phase'
- condition: SUCCESSFUL
- projects:
- - name: calamari-clients-build
- current-parameters: true
- exposed-scm: false
-
- wrappers:
- - inject-passwords:
- global: true
- mask-password-params: true
+++ /dev/null
-#! /usr/bin/bash
-set -ex
-
-# Only do actual work when we are a DEB distro
-if test "$DISTRO" != "debian" -a "$DISTRO" != "ubuntu"; then
- exit 0
-fi
-
-
-## Install any setup-time deps
-# We need this for mk-build-deps
-sudo apt-get install -y equivs
-
-# Run the install-deps.sh upstream script if it exists
-if [ -x install-deps.sh ]; then
- echo "Ensuring dependencies are installed"
- sudo ./install-deps.sh
-fi
-
-
-## Get some basic information about the system and the repository
-DEB_ARCH=$(dpkg-architecture -qDEB_BUILD_ARCH)
-# Get VERSION, REVISION
-eval $(./get-versions.sh)
-
-
-## Install debian build-time dependencies
-yes | sudo mk-build-deps --install debian/control
-
-## Clean any old and build the new packages
-rm -f ../calamari-server*.deb ../calamari-server*.changes
-make dpkg
-
-
-## Upload the created DEBs to chacra
-chacra_endpoint="calamari/${BRANCH}/${GIT_COMMIT}/${DISTRO}/${DIST}"
-
-[ "$FORCE" = true ] && chacra_flags="--force" || chacra_flags=""
-
-# push binaries to chacra
-find ../calamari-server*.deb ../calamari-server*.changes | $VENV/chacractl binary ${chacra_flags} create ${chacra_endpoint}/${ARCH}/
-
-# start repo creation
-$VENV/chacractl repo update ${chacra_endpoint}
-
-echo Check the status of the repo at: https://shaman.ceph.com/api/repos/${chacra_endpoint}
+++ /dev/null
-#! /usr/bin/bash
-set -ex
-
-# Only do actual work when we are an RPM distro
-if test "$DISTRO" != "fedora" -a "$DISTRO" != "centos" -a "$DISTRO" != "rhel"; then
- exit 0
-fi
-
-
-## Install any setup-time deps (to make dist package)
-# We need this to get the major version from lsb_release
-sudo yum install -y redhat-lsb-core mock
-
-# Run the install-deps.sh upstream script if it exists
-if [ -x install-deps.sh ]; then
- echo "Ensuring dependencies are installed"
- sudo ./install-deps.sh
-fi
-
-
-## Get some basic information about the system and the repository
-RELEASE="$(lsb_release --short -r | cut -d '.' -f 1)" # sytem release
-# Get VERSION, REVISION (and RPM_RELEASE)
-eval $(./get-versions.sh)
-RPM_RELEASE=$(echo $REVISION | tr '-' '_') # the '-' has a special meaning
-
-
-## Build the source tarball
-echo "Building source distribution"
-make dist
-mv ../calamari-server_*.tar.gz dist/
-
-
-## Prepare the spec file for build
-sed -e "s/@VERSION@/${VERSION}/g" -e "s/@RELEASE@/${RPM_RELEASE}/g" < calamari-server.spec.in > dist/calamari-server.spec
-
-
-## Install the build-time dependencies (for rpmbuild -bs)
-sudo yum-builddep -y dist/calamari-server.spec
-
-
-## Create the source rpm
-echo "Building SRPM"
-rpmbuild \
- --define "_sourcedir ./dist" \
- --define "_specdir ." \
- --define "_builddir ." \
- --define "_srcrpmdir ." \
- --define "_rpmdir ." \
- --define "dist .any" \
- --define "fedora 21" \
- --define "rhel 7" \
- --nodeps -bs dist/calamari-server.spec
-SRPM=$(readlink -f *.src.rpm)
-
-
-## Build the binaries with mock
-echo "Building RPMs"
-sudo mock -r ${MOCK_TARGET}-${RELEASE}-${ARCH} --resultdir=./dist/rpm/ ${SRPM} || cat ./dist/rpm/build.log
-
-
-## Upload the created RPMs to chacra
-chacra_endpoint="calamari/${BRANCH}/${GIT_COMMIT}/${DISTRO}/${RELEASE}"
-
-[ "$FORCE" = true ] && chacra_flags="--force" || chacra_flags=""
-
-# push binaries to chacra
-find ./dist/rpm/ | egrep '\.rpm$' | $VENV/chacractl binary ${chacra_flags} create ${chacra_endpoint}/$ARCH/
-
-# start repo creation
-$VENV/chacractl repo update ${chacra_endpoint}
-
-echo Check the status of the repo at: https://shaman.ceph.com/api/repos/${chacra_endpoint}
+++ /dev/null
-sudo chown -R jenkins-build ./dist
-
+++ /dev/null
-#! /usr/bin/bash
-#
-# Ceph distributed storage system
-#
-# Copyright (C) 2016 Red Hat <contact@redhat.com>
-#
-# Author: Boris Ranto <branto@redhat.com>
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-set -ex
-
-# Make sure we execute at the top level directory before we do anything
-cd $WORKSPACE
-
-# This will set the DISTRO and MOCK_TARGET variables
-get_distro_and_target
-
-# Perform a clean-up
-git clean -fxd
-
-# Make sure the dist directory is clean
-sudo rm -rf dist
-mkdir -p dist
-
-# Print some basic system info
-HOST=$(hostname --short)
-echo "Building on $(hostname) with the following env"
-echo "*****"
-env
-echo "*****"
-
-export LC_ALL=C # the following is vulnerable to i18n
-
-pkgs=( "chacractl>=0.0.21" )
-TEMPVENV=$(create_venv_dir)
-VENV=${TEMPVENV}/bin
-install_python_packages $TEMPVENV "pkgs[@]"
-
-# ask shaman which chacra instance to use
-chacra_url=`curl -f -u $SHAMAN_API_USER:$SHAMAN_API_KEY https://shaman.ceph.com/api/nodes/next/`
-# create the .chacractl config file using global variables
-make_chacractl_config $chacra_url
+++ /dev/null
-- job:
- name: calamari
- project-type: matrix
- defaults: global
- display-name: 'calamari'
- block-downstream: false
- block-upstream: false
- concurrent: true
- parameters:
- - string:
- name: BRANCH
- description: "The git branch (or tag) to build"
-
- - string:
- name: DISTROS
- description: "A list of distros to build for. Available options are: xenial, centos7, centos6, trusty, precise, wheezy, and jessie"
- default: "centos7 xenial"
-
- - string:
- name: ARCHS
- description: "A list of architectures to build for. Available options are: x86_64, and arm64"
- default: "x86_64"
-
- - bool:
- name: FORCE
- description: "
-If this is unchecked, then nothing is built or pushed if they already exist in chacra. This is the default.
-
-If this is checked, then the binaries will be built and pushed to chacra even if they already exist in chacra."
-
- - string:
- name: BUILD_VIRTUALENV
- description: "Base parent path for virtualenv locations, set to avoid issues with extremely long paths that are incompatible with tools like pip. Defaults to '/tmp/' (note the trailing slash, which is required)."
- default: "/tmp/"
-
- execution-strategy:
- combination-filter: DIST==AVAILABLE_DIST && ARCH==AVAILABLE_ARCH && (ARCH=="x86_64" || (ARCH == "arm64" && (DIST == "xenial" || DIST == "centos7")))
- axes:
- - axis:
- type: label-expression
- name: MACHINE_SIZE
- values:
- - huge
- - axis:
- type: label-expression
- name: AVAILABLE_ARCH
- values:
- - x86_64
- - arm64
- - axis:
- type: label-expression
- name: AVAILABLE_DIST
- values:
- - centos7
- - trusty
- - xenial
- - jessie
- - axis:
- type: dynamic
- name: DIST
- values:
- - DISTROS
- - axis:
- type: dynamic
- name: ARCH
- values:
- - ARCHS
-
- scm:
- - git:
- url: git@github.com:ceph/calamari.git
- # Use the SSH key attached to the ceph-jenkins GitHub account.
- credentials-id: 'jenkins-build'
- branches:
- - $BRANCH
- skip-tag: true
- wipe-workspace: false
-
- builders:
- - shell: |
- echo "Cleaning up top-level workarea (shared among workspaces)"
- sudo rm -rf dist
- rm -rf venv
- rm -rf release
- # debian build scripts
- - shell:
- !include-raw:
- - ../../../scripts/build_utils.sh
- - ../../build/setup
- - ../../build/build_deb
- # rpm build scripts
- - shell:
- !include-raw:
- - ../../../scripts/build_utils.sh
- - ../../build/setup
- - ../../build/build_rpm
-
- wrappers:
- - inject-passwords:
- global: true
- mask-password-params: true
- - credentials-binding:
- - text:
- credential-id: shaman-api-key
- variable: SHAMAN_API_KEY