aboutsummaryrefslogtreecommitdiff
path: root/tcwg-make-release.yaml
diff options
context:
space:
mode:
Diffstat (limited to 'tcwg-make-release.yaml')
-rw-r--r--tcwg-make-release.yaml388
1 files changed, 0 insertions, 388 deletions
diff --git a/tcwg-make-release.yaml b/tcwg-make-release.yaml
deleted file mode 100644
index cdedddef34..0000000000
--- a/tcwg-make-release.yaml
+++ /dev/null
@@ -1,388 +0,0 @@
-# http://docs.openstack.org/infra/jenkins-job-builder/definition.html
-- job:
- name: tcwg-make-release
- project-type: matrix
- defaults: global
- properties:
- - authorization:
- anonymous:
- - job-read
- - job-extended-read
- linaro:
- - job-build
- - job-cancel
- - build-discarder:
- days-to-keep: 30
- num-to-keep: 10
- parameters:
- - string:
- name: gcc_src
- default: 'gcc-linaro-5.3-2016.02.tar.xz'
- description: 'The source of GCC. Specify as it would be passed to abe.sh, either a source tarball, git branch and revision, git tag, or a URL of a tarball e.g., "gcc-linaro-5.3-2016.02.tar.xz"'
- - string:
- name: binutils_src
- default: ''
- description: 'Optional revision of binutils to use for this release, e.g., "binutils-gdb.git~linaro_binutils-2_25-branch"'
- - string:
- name: glibc_src
- default: ''
- description: 'Optional revision of Glibc to use for this release, e.g., "glibc.git~linaro/2.21/master"'
- - string:
- name: release_name
- default: ''
- description: 'Optional release string to use, e.g., "2016.05", "2016.05-rc3", "2016.05-1", "2016.05-1-rc2". The default is to extract the release string from the gcc_src field'
- - string:
- name: toolchain_config
- default: 'default'
- description: 'Toolchain version config, e.g., "default", "gcc5", or "gcc6". Relative to abe config/ dir'
- - string:
- name: target_list
- default: 'aarch64-elf aarch64-linux-gnu aarch64-linux-gnu_ilp32 aarch64_be-elf aarch64_be-linux-gnu armv8l-linux-gnueabihf arm-eabi arm-linux-gnueabi arm-linux-gnueabihf armeb-eabi armeb-linux-gnueabi armeb-linux-gnueabihf'
- description: 'List of targets to use'
- - string:
- name: builder_arch_list
- default: 'amd64'
- description: 'List of builder architectures to use (amd64)'
- - string:
- name: abe_branch
- default: tested
- description: 'ABE revision to test'
- - string:
- name: scripts_branch
- default: master
- description: 'Scripts branch to use'
- - choice:
- name: debug
- choices:
- - none
- - abe
- - yaml
- description: "Level of debug information: none - No debugging information, abe - ABE debugging information, yaml - tcwg-make-release.yaml debug information (and exit)."
- - string:
- name: fileserver
- default: dev-01.tcwglab
- description: 'Remote file server for logs and binaries'
- - bool:
- name: testrelease
- default: 'true'
- description: 'Run test-release if make-release is successful'
- - string:
- name: tcwg_regression_rev
- default: 'master'
- description: 'tcwg-regression revision to use'
- - string:
- name: binariesdir
- default: ''
- description: 'Optional upload dir for binaries on fileserver. If empty, a suitable value is computed by the script'
- - string:
- name: logsdir
- default: ''
- description: 'Optional upload dir for logs on fileserver. If empty, a suitable value is computed by the script'
- - bool:
- name: dryrun
- default: false
- description: 'Dry-run, do nothing, just print steps'
- disabled: false
- node: tcwg-coordinator
- retry-count: 3
- concurrent: true
- display-name: 'TCWG Make Release'
- workspace: workspace/tcwg-make-release_$EXECUTOR_NUMBER
- child-workspace: .
- scm:
- - git:
- url: https://git.linaro.org/toolchain/abe.git
- refspec: +refs/changes/*:refs/remotes/changes/*
- branches:
- - ${abe_branch}
- skip-tag: true
- shallow-clone: true
- basedir: abe
- axes:
- - axis:
- type: slave
- name: label
- values:
- - tcwg-x86_64-build
- - axis:
- type: dynamic
- name: builder_arch
- values:
- - builder_arch_list
- - axis:
- type: dynamic
- name: target
- values:
- - target_list
- execution-strategy:
- sequential: false
- wrappers:
- - timeout:
- timeout: 300
- - timestamps
- - ssh-agent-credentials:
- # tcwg-buildslave user id
- users:
- - 'e0958a95-204f-4c14-a66c-5e2be6c5d50a'
- - build-name:
- name: '#${BUILD_NUMBER}-${ENV,var="release_name"}'
- - workspace-cleanup:
- include:
- - "*"
- dirmatch: true
- builders:
- - shell: |
- #!/bin/bash
- set -e
-
- if test x"${debug}" = x"abe"; then
- shell="/bin/bash -x"
- set -x
- else
- shell="/bin/bash"
- fi
-
- if test x"${debug}" = x"yaml"; then
- echo WORKSPACE: $WORKSPACE
- echo CURRENTDIR: `pwd`
- ls -lR
- exit 0
- fi
-
- git clone -b $scripts_branch --depth 1 https://git.linaro.org/toolchain/jenkins-scripts
- . jenkins-scripts/jenkins-helpers.sh
-
- # Start build container
- builder=$(print_host_for_node $NODE_NAME)
- bash -x ./jenkins-scripts/start-container-docker.sh --arch ${builder_arch} --distro default --session-host ${builder} > build-container.sh
-
- # Define CONTAINER, CONTAINER_CLEANUP, session_host and session_port
- . ./build-container.sh
- BUILD_CONTAINER="${CONTAINER}"
- BUILD_CONTAINER_CLEANUP="${CONTAINER_CLEANUP}"
-
- # Make sure to cleanup build container if something goes
- # wrong when preparing the rest of the environment
- if [ x"${BUILD_CONTAINER_CLEANUP}" != x ]; then
- CONTAINERS_CLEANUP="${BUILD_CONTAINER_CLEANUP}"
- trap "${CONTAINERS_CLEANUP}" EXIT
- fi
-
- tcwg_release=${release_name}
- # If there is no release_name set, extract release information from the gcc_src
- if test "${release_name:+set}" != "set"; then
- case "$gcc_src" in
- *.tar.xz)
- tcwg_release="$(basename $gcc_src | cut -d '-' -f4-)"
- tcwg_release=${tcwg_release%".tar.xz"}
- ;;
- gcc.git~*)
- tcwg_release="$(echo $gcc_src | grep -o -e '-\(20[0-9]\{2\}\.[01][0-9].*\)' )"
- tcwg_release=${tcwg_release#-}
- ;;
- *)
- echo "ERROR: Could not find tcwg release"
- exit 1
- ;;
- esac
- fi
-
- if [ x"${tcwg_release}" = x"" ]; then
- echo "ERROR: Could not find tcwg release"
- exit 1
- fi
-
- case "$target:$toolchain_config:$tcwg_release" in
- aarch64-linux-gnu_ilp32:gcc7:*-rc*)
- # Building ILP32 toolchain as release candidate of gcc7.
- ;;
- aarch64-linux-gnu_ilp32:*)
- echo "SKIPPING ILP32 TOOLCHAIN IN NON-RC/NON-GCC7 BUILD" | tee MakeRelease.log
- xz MakeRelease.log
- exit 0
- ;;
- esac
-
- # This job always uses Canadian cross builds and builds 2
- # toolchains at a time when run on a amd64 slave.
- # When run on a i386 host, no need to duplicate the
- # Canadian cross build for mingw.
- canadian=
- case ${builder_arch} in
- amd64)
- host=x86_64
- canadian=--canadian ;;
- i386)
- host=i686
- canadian=
- echo "ERROR: i386 hosts no longer unsupported"
- exit 1
- ;;
- *)
- echo "ERROR: unsupported label: ${label}"
- exit 1
- ;;
- esac
-
- # FIXME. MakeRelease copies to a directory, while
- # TestRelease downloads from a URL, so both dirs differ
- # depending on httpd's DocumentRoot
- # Setting url_prefix can be removed once test-release is
- # started after make-release has completed.
- case ${binariesdir} in
- releases/binaries/*)
- url_prefix=$(echo \~${USER}/${binariesdir})
- ;;
- "")
- # Compute default binariesdirs/logsdir in case they
- # are not supplied by the user. Normally they are set
- # by tcwg-make-and-test-release.
-
- # Extract the gcc_version information from gcc_src to determine
- # which directory to copy the tarballs into.
- case "$gcc_src" in
- *.tar.*) # src tarballs usually named like this
- gcc_version=$(basename $gcc_src | awk -F '-' '{ print $3 }')
- ;;
- *.git~*) # building from git branch or tag
- gcc_version=$(basename $gcc_src | awk -F '-' '{ print $2 }')
- ;;
- *)
- echo "ERROR: could not extract version from gcc_src"
- exit 1
- ;;
- esac
- if ! echo "${gcc_version}" | grep -xEq '[0-9]+\.[0-9]+(\.[0-9]+)?'; then
- echo "ERROR: gcc version '${gcc_version}' invalid"
- exit 1
- fi
-
- gcc_major="`echo $gcc_version | awk -F '.' '{ print $1 }'`"
- gcc_minor="`echo $gcc_version | awk -F '.' '{ print $2 }'`"
- tcwg_version="${gcc_major}.${gcc_minor}"
- if test ${gcc_major} -lt 5; then
- gcc_point="`echo $gcc_version | awk -F '.' '{ print $2 }'`"
- tcwg_version="${gcc_major}.${gcc_minor}.${gcc_point}"
- fi
-
- buildid=`printf '%04d' ${BUILD_NUMBER}`
-
- binariesdir=releases/binaries/${tcwg_version}-${tcwg_release}-${buildid}
- logsdir=releases/logs/${tcwg_version}-${tcwg_release}-${buildid}
-
- url_prefix=$(echo \~${USER}/${binariesdir})
- ;;
- *)
- echo Unsupported binariesdir: ${binariesdir}. Fix the job.
- ;;
- esac
-
- if $dryrun; then
- echo DRYRUN: ${BUILD_CONTAINER} "cd ${WORKSPACE} && ${shell} ${WORKSPACE}/jenkins-scripts/MakeRelease.job --abedir ${WORKSPACE}/abe --workspace ${WORKSPACE} ${canadian} --target ${target}${tcwg_release:+ --release_name ${tcwg_release}} --fileserver ${fileserver} --toolchainconfig ${toolchain_config} --binariesdir ${binariesdir}/${target} --logsdir ${logsdir}/${target} --buildnumber ${BUILD_NUMBER} ${gcc_src:+ --gcc ${gcc_src}} ${binutils_src:+ --binutils ${binutils_src}} ${glibc_src:+ --glibc ${glibc_src}}"
-
- # Dry-run: generate fake test jobs
- if $testrelease; then
- tarball_linux="tarball_linux-${host}-${target}"
- tarball_linux_url="http://${fileserver}/${url_prefix}/${target}/${tarball_linux}"
- cat << EOF > tcwg.params.linux
- tarball_url=${tarball_linux_url}
- release=${tcwg_version}-${tcwg_release}
- target=${host}-${target}
- dryrun=$dryrun
- EOF
-
- if test x"${canadian}" = x"--canadian"; then
- tarball_mingw="tarball_mingwx-${host}-${target}"
- tarball_mingw_url="http://${fileserver}/${url_prefix}/${target}/${tarball_mingw}"
- cat << EOF > tcwg.params.mingw
- tarball_url=${tarball_mingw_url}
- release=${tcwg_version}-${tcwg_release}
- target=mingw-${target}
- dryrun=$dryrun
- EOF
- fi
- fi
- # Keep Jenkins happy
- touch MakeRelease-DRYRUN.log.xz
- exit 0
- fi
-
- ${BUILD_CONTAINER} "cd ${WORKSPACE} && ${shell} ${WORKSPACE}/jenkins-scripts/MakeRelease.job --abedir ${WORKSPACE}/abe --workspace ${WORKSPACE} ${canadian} --target ${target}${tcwg_release:+ --release_name ${tcwg_release}} --fileserver ${fileserver} --toolchainconfig ${toolchain_config} --binariesdir ${binariesdir}/${target} --logsdir ${logsdir}/${target} --buildnumber ${BUILD_NUMBER} ${gcc_src:+ --gcc ${gcc_src}} ${binutils_src:+ --binutils ${binutils_src}} ${glibc_src:+ --glibc ${glibc_src}}"
- if test $? -gt 0; then
- exit 1
- fi
-
- # tarballs are written in ${WORKSPACE}/snapshots, which is
- # not shared between host and container. So, we need to
- # execute the find command inside the container.
-
- if test x"${canadian}" = x"--canadian"; then
- linux_artifacts=artifacts1.txt
- mingw_artifacts=artifacts2.txt
- else
- linux_artifacts=artifacts2.txt
- fi
-
- # We always build a Linux tarball, even in canadian cross mode
- tarball_linux=$(grep "^toolchain=" ${WORKSPACE}/${linux_artifacts} | cut -d = -f 2-)
- if test x"${tarball_linux}" = x"" -o ! -f "${tarball_linux}"; then
- echo "ERROR: no binary Linux tarball found!"
- exit 1
- fi
-
- if test x"${canadian}" = x"--canadian"; then
- tarball_mingw=$(grep "^toolchain=" ${WORKSPACE}/${mingw_artifacts} | cut -d = -f 2-)
- if test x"${tarball_mingw}" = x"" -o ! -f "${tarball_mingw}"; then
- echo "ERROR: no binary MingW tarball found!"
- exit 1
- fi
- fi
-
- if $testrelease; then
- tarball_linux="`basename ${tarball_linux}`"
- tarball_linux_url="http://${fileserver}/${url_prefix}/${target}/${tarball_linux}"
- cat << EOF > tcwg.params.linux
- tarball_url=${tarball_linux_url}
- release=${tcwg_version}-${tcwg_release}
- target=${host}-${target}
- EOF
-
- if test x"${canadian}" = x"--canadian"; then
- tarball_mingw="`basename ${tarball_mingw}`"
- tarball_mingw_url="http://${fileserver}/${url_prefix}/${target}/${tarball_mingw}"
- cat << EOF > tcwg.params.mingw
- tarball_url=${tarball_mingw_url}
- release=${tcwg_version}-${tcwg_release}
- target=mingw-${target}
- EOF
- fi
- fi
-
- - conditional-step:
- condition-kind: file-exists
- condition-filename: tcwg.params.linux
- steps:
- - trigger-builds:
- - project: 'tcwg-test-release'
- property-file: tcwg.params.linux
- current-parameters: true
- block: false
- - conditional-step:
- condition-kind: file-exists
- condition-filename: tcwg.params.mingw
- steps:
- - trigger-builds:
- - project: 'tcwg-test-release'
- property-file: tcwg.params.mingw
- current-parameters: true
- block: false
- publishers:
- - archive:
- artifacts: 'MakeRelease*.log.xz'
- latest-only: false
- - email-ext:
- recipients: 'tcwg-validation@linaro.org'
- aborted: true
- send-to:
- requester
- recipients