ci: Add initial buildkite ci setup
Add setup to utilize buildkite for CI purposes: 1. .buildkite/hooks/pre-command: * Handles getting git checkout setup against upstream repo * Setup some west module cache (dirs, clean out files & locks) * init dir for ccache 2. .buildkite/hooks/post-command: * Report disk usage (meant for possible debugging) 3. .buildkite/pipeline.yml [uses to determine what to do]: * setup zephyr env vars * set which docker container to use (export some local disk caches for git, west modules, and ccache) * uses plug to general build annotation on failure (junit-annotate) 4. .buildkite/run.sh [ buildkite wrapper to invoke scripts/ci/run.sh ] Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
This commit is contained in:
parent
491bbad8e8
commit
bea131835d
5 changed files with 121 additions and 0 deletions
8
.buildkite/hooks/post-command
Executable file
8
.buildkite/hooks/post-command
Executable file
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Copyright (c) 2020 Linaro Limited
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
# report disk usage:
|
||||||
|
echo "--- $0 disk usage"
|
||||||
|
df -h
|
38
.buildkite/hooks/pre-command
Executable file
38
.buildkite/hooks/pre-command
Executable file
|
@ -0,0 +1,38 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Copyright (c) 2020 Linaro Limited
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
# Save off where we started so we can go back there
|
||||||
|
WORKDIR=${PWD}
|
||||||
|
|
||||||
|
if [ -n "${BUILDKITE_PULL_REQUEST_BASE_BRANCH}" ]; then
|
||||||
|
git fetch -v origin ${BUILDKITE_PULL_REQUEST_BASE_BRANCH}
|
||||||
|
git checkout FETCH_HEAD
|
||||||
|
git config --local user.email "builds@zephyrproject.org"
|
||||||
|
git config --local user.name "Zephyr CI"
|
||||||
|
git merge --no-edit "${BUILDKITE_COMMIT}" || {
|
||||||
|
local merge_result=$?
|
||||||
|
echo "Merge failed: ${merge_result}"
|
||||||
|
git merge --abort
|
||||||
|
exit $merge_result
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p /var/lib/buildkite-agent/zephyr-ccache/
|
||||||
|
|
||||||
|
# create cache dirs, no-op if they already exist
|
||||||
|
mkdir -p /var/lib/buildkite-agent/zephyr-module-cache/modules
|
||||||
|
mkdir -p /var/lib/buildkite-agent/zephyr-module-cache/tools
|
||||||
|
mkdir -p /var/lib/buildkite-agent/zephyr-module-cache/bootloader
|
||||||
|
|
||||||
|
# Clean cache - if it already exists
|
||||||
|
cd /var/lib/buildkite-agent/zephyr-module-cache
|
||||||
|
find -type f -not -path "*/.git/*" -not -name ".git" -delete
|
||||||
|
|
||||||
|
# Remove any stale locks
|
||||||
|
find -name index.lock -delete
|
||||||
|
|
||||||
|
# return from where we started so we can find pipeline files from
|
||||||
|
# git repo
|
||||||
|
cd ${WORKDIR}
|
28
.buildkite/pipeline.yml
Normal file
28
.buildkite/pipeline.yml
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
steps:
|
||||||
|
- command:
|
||||||
|
- .buildkite/run.sh
|
||||||
|
env:
|
||||||
|
ZEPHYR_TOOLCHAIN_VARIANT: "zephyr"
|
||||||
|
ZEPHYR_SDK_INSTALL_DIR: "/opt/sdk/zephyr-sdk-0.11.3"
|
||||||
|
parallelism: 20
|
||||||
|
timeout_in_minutes: 120
|
||||||
|
retry:
|
||||||
|
manual: true
|
||||||
|
plugins:
|
||||||
|
- docker#v3.5.0:
|
||||||
|
image: "zephyrprojectrtos/ci:v0.11.8"
|
||||||
|
propagate-environment: true
|
||||||
|
volumes:
|
||||||
|
- "/var/lib/buildkite-agent/git-mirrors:/var/lib/buildkite-agent/git-mirrors"
|
||||||
|
- "/var/lib/buildkite-agent/zephyr-module-cache:/var/lib/buildkite-agent/zephyr-module-cache"
|
||||||
|
- "/var/lib/buildkite-agent/zephyr-ccache:/root/.ccache"
|
||||||
|
workdir: "/workdir/zephyr"
|
||||||
|
agents:
|
||||||
|
- "queue=default"
|
||||||
|
|
||||||
|
- wait: ~
|
||||||
|
continue_on_failure: true
|
||||||
|
|
||||||
|
- plugins:
|
||||||
|
- junit-annotate#v1.7.0:
|
||||||
|
artifacts: sanitycheck-*.xml
|
46
.buildkite/run.sh
Executable file
46
.buildkite/run.sh
Executable file
|
@ -0,0 +1,46 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Copyright (c) 2020 Linaro Limited
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
echo "--- run $0"
|
||||||
|
|
||||||
|
git log -n 5 --oneline --decorate --abbrev=12
|
||||||
|
|
||||||
|
# Setup module cache
|
||||||
|
cd /workdir
|
||||||
|
ln -s /var/lib/buildkite-agent/zephyr-module-cache/modules
|
||||||
|
ln -s /var/lib/buildkite-agent/zephyr-module-cache/tools
|
||||||
|
ln -s /var/lib/buildkite-agent/zephyr-module-cache/bootloader
|
||||||
|
cd /workdir/zephyr
|
||||||
|
|
||||||
|
export JOB_NUM=$((${BUILDKITE_PARALLEL_JOB}+1))
|
||||||
|
|
||||||
|
# ccache stats
|
||||||
|
echo ""
|
||||||
|
echo "--- ccache stats at start"
|
||||||
|
ccache -s
|
||||||
|
|
||||||
|
if [ -n "${BUILDKITE_PULL_REQUEST_BASE_BRANCH}" ]; then
|
||||||
|
./scripts/ci/run_ci.sh -c -b ${BUILDKITE_PULL_REQUEST_BASE_BRANCH} -r origin \
|
||||||
|
-m ${JOB_NUM} -M ${BUILDKITE_PARALLEL_JOB_COUNT} -p ${BUILDKITE_PULL_REQUEST}
|
||||||
|
else
|
||||||
|
./scripts/ci/run_ci.sh -c -b ${BUILDKITE_BRANCH} -r origin \
|
||||||
|
-m ${JOB_NUM} -M ${BUILDKITE_PARALLEL_JOB_COUNT};
|
||||||
|
fi;
|
||||||
|
|
||||||
|
SANITY_EXIT_STATUS=$?
|
||||||
|
|
||||||
|
# Rename sanitycheck junit xml for use with junit-annotate-buildkite-plugin
|
||||||
|
mv sanity-out/sanitycheck.xml sanitycheck-${BUILDKITE_JOB_ID}.xml
|
||||||
|
buildkite-agent artifact upload sanitycheck-${BUILDKITE_JOB_ID}.xml
|
||||||
|
|
||||||
|
# ccache stats
|
||||||
|
echo "--- ccache stats at finish"
|
||||||
|
ccache -s
|
||||||
|
|
||||||
|
# disk usage
|
||||||
|
echo "--- disk usage at finish"
|
||||||
|
df -h
|
||||||
|
|
||||||
|
exit ${SANITY_EXIT_STATUS}
|
|
@ -16,6 +16,7 @@
|
||||||
/.known-issues/ @nashif
|
/.known-issues/ @nashif
|
||||||
/.github/ @nashif
|
/.github/ @nashif
|
||||||
/.github/workflows/ @galak @nashif
|
/.github/workflows/ @galak @nashif
|
||||||
|
/.buildkite/ @galak
|
||||||
/arch/arc/ @vonhust @ruuddw
|
/arch/arc/ @vonhust @ruuddw
|
||||||
/arch/arm/ @MaureenHelm @galak @ioannisg
|
/arch/arm/ @MaureenHelm @galak @ioannisg
|
||||||
/arch/arm/core/aarch32/cortex_m/cmse/ @ioannisg
|
/arch/arm/core/aarch32/cortex_m/cmse/ @ioannisg
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue