From: Jason Dillaman Date: Wed, 26 Jul 2017 19:37:48 +0000 (-0400) Subject: ceph-iscsi: added builder for ceph-iscsi-tools X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=161e4b05e77886251ad598acfeef8d49908fbee9;p=ceph-build.git ceph-iscsi: added builder for ceph-iscsi-tools Signed-off-by: Jason Dillaman --- diff --git a/ceph-iscsi-tools/build/build_deb b/ceph-iscsi-tools/build/build_deb new file mode 100644 index 00000000..03c4ec4e --- /dev/null +++ b/ceph-iscsi-tools/build/build_deb @@ -0,0 +1,9 @@ +#! /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 + +exit 1 diff --git a/ceph-iscsi-tools/build/build_rpm b/ceph-iscsi-tools/build/build_rpm new file mode 100644 index 00000000..eb61e927 --- /dev/null +++ b/ceph-iscsi-tools/build/build_rpm @@ -0,0 +1,80 @@ +#! /usr/bin/bash +set -ex + +PROJECT=ceph-iscsi-tools +BRANCH=`branch_slash_filter $BRANCH` + +# 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 the dependencies +sudo yum install -y mock + +## Get some basic information about the system and the repository +# Get version +RELEASE="$(lsb_release --short -r | cut -d '.' -f 1)" # system release +VERSION="$(git describe --abbrev=0 --tags HEAD)" +REVISION="$(git describe --tags HEAD | cut -d - -f 2- | sed 's/-/./')" + +# Create dummy dist tar +tar cf dist/${PROJECT}-${VERSION}.tar.gz \ + --exclude .git --exclude dist \ + --transform "s,^,${PROJECT}-${VERSION}/," * +tar tfv dist/${PROJECT}-${VERSION}.tar.gz + +# Update spec version +sed -i "s/^Version:.*$/Version:\t${VERSION}/g" $WORKSPACE/${PROJECT}.spec +sed -i "s/^Release:.*$/Release:\t${REVISION}%{?dist}/g" $WORKSPACE/${PROJECT}.spec +# for debugging +cat $WORKSPACE/${PROJECT}.spec + +# Update setup.py version +sed -i "s/version=\"[^\"]*\"/version=\"${VERSION}\"/g" $WORKSPACE/setup.py +# for debugging +cat $WORKSPACE/setup.py + +## Create the source rpm +echo "Building SRPM" +rpmbuild \ + --define "_sourcedir $WORKSPACE/dist" \ + --define "_specdir $WORKSPACE/dist" \ + --define "_builddir $WORKSPACE/dist" \ + --define "_srcrpmdir $WORKSPACE/dist/SRPMS" \ + --define "_rpmdir $WORKSPACE/dist/RPMS" \ + --nodeps -bs $WORKSPACE/${PROJECT}.spec +SRPM=$(readlink -f $WORKSPACE/dist/SRPMS/*.src.rpm) + +## Build the binaries with mock +echo "Building RPMs" +sudo mock --verbose -r ${MOCK_TARGET}-${RELEASE}-${ARCH} --scrub=all +sudo mock --verbose -r ${MOCK_TARGET}-${RELEASE}-${ARCH} --define "dist .el7" --resultdir=$WORKSPACE/dist/RPMS/ ${SRPM} || ( tail -n +1 $WORKSPACE/dist/RPMS/{root,build}.log && exit 1 ) + +## Upload the created RPMs to chacra +chacra_endpoint="${PROJECT}/${BRANCH}/${GIT_COMMIT}/${DISTRO}/${RELEASE}" + +[ "$FORCE" = true ] && chacra_flags="--force" || chacra_flags="" + +# push binaries to chacra +find $WORKSPACE/dist/RPMS/ | egrep "\.noarch\.rpm" | $VENV/chacractl binary ${chacra_flags} create ${chacra_endpoint}/noarch/ +PACKAGE_MANAGER_VERSION=$(rpm --queryformat '%{VERSION}-%{RELEASE}\n' -qp $(find $WORKSPACE/dist/RPMS/ | egrep "\.noarch\.rpm" | head -1)) + +# write json file with build info +cat > $WORKSPACE/repo-extra.json << EOF +{ + "version":"$VERSION", + "package_manager_version":"$PACKAGE_MANAGER_VERSION", + "build_url":"$BUILD_URL", + "root_build_cause":"$ROOT_BUILD_CAUSE", + "node_name":"$NODE_NAME", + "job_name":"$JOB_NAME" +} +EOF +# post the json to repo-extra json to chacra +curl -X POST -H "Content-Type:application/json" --data "@$WORKSPACE/repo-extra.json" -u $CHACRACTL_USER:$CHACRACTL_KEY ${chacra_url}repos/${chacra_endpoint}/extra/ + +# 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} diff --git a/ceph-iscsi-tools/build/setup b/ceph-iscsi-tools/build/setup new file mode 100644 index 00000000..41939805 --- /dev/null +++ b/ceph-iscsi-tools/build/setup @@ -0,0 +1,44 @@ +#! /usr/bin/bash +# +# Ceph distributed storage system +# +# Copyright (C) 2016 Red Hat +# +# Author: Boris Ranto +# +# 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 +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.4" ) +install_python_packages "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 diff --git a/ceph-iscsi-tools/build/validate_deb b/ceph-iscsi-tools/build/validate_deb new file mode 100644 index 00000000..0322b47a --- /dev/null +++ b/ceph-iscsi-tools/build/validate_deb @@ -0,0 +1,7 @@ +#!/bin/bash +set -ex + +# Only do actual work when we are a DEB distro +if test -f /etc/redhat-release ; then + exit 0 +fi diff --git a/ceph-iscsi-tools/build/validate_rpm b/ceph-iscsi-tools/build/validate_rpm new file mode 100644 index 00000000..17b41482 --- /dev/null +++ b/ceph-iscsi-tools/build/validate_rpm @@ -0,0 +1,7 @@ +#!/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 diff --git a/ceph-iscsi-tools/config/definitions/ceph-iscsi-tools.yml b/ceph-iscsi-tools/config/definitions/ceph-iscsi-tools.yml new file mode 100644 index 00000000..99688a18 --- /dev/null +++ b/ceph-iscsi-tools/config/definitions/ceph-iscsi-tools.yml @@ -0,0 +1,104 @@ +- job: + name: ceph-iscsi-tools + project-type: matrix + defaults: global + display-name: 'ceph-iscsi-tools' + block-downstream: false + block-upstream: false + concurrent: true + 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-pbuilder, precise, wheezy, and jessie" + default: "centos7 xenial" + + - string: + name: ARCHS + description: "A list of architectures to build for. Available options are: x86_64" + 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: + - small + - axis: + type: label-expression + name: AVAILABLE_ARCH + values: + - x86_64 + - axis: + type: label-expression + name: AVAILABLE_DIST + values: + - centos7 + - xenial + - axis: + type: dynamic + name: DIST + - axis: + type: dynamic + name: DIST + values: + - DISTROS + - axis: + type: dynamic + name: ARCH + values: + - ARCHS + + scm: + - git: + url: git@github.com:ceph/ceph-iscsi-tools.git + # Use the SSH key attached to the ceph-jenkins GitHub account. + credentials-id: '39fa150b-b2a1-416e-b334-29a9a2c0b32d' + branches: + - $BRANCH + skip-tag: true + wipe-workspace: true + + builders: + - shell: | + echo "Cleaning up top-level workarea (shared among workspaces)" + rm -rf dist + rm -rf venv + rm -rf release + # debian build scripts + - shell: + !include-raw: + - ../../build/validate_deb + - ../../../scripts/build_utils.sh + - ../../build/setup + - ../../build/build_deb + # 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