# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. --- cache: job: build-vespa: [/main_job_cache] shared: image: vespaengine/vespa-build-centos7:latest environment: USER_SHELL_BIN: bash jobs: build-vespa: requires: [~pr, ~commit] annotations: screwdriver.cd/cpu: 7 screwdriver.cd/ram: 16 screwdriver.cd/disk: HIGH screwdriver.cd/timeout: 60 environment: LOCAL_MVN_REPO: "/tmp/vespa/mvnrepo" VESPA_MAVEN_EXTRA_OPTS: "-Dmaven.repo.local=/tmp/vespa/mvnrepo -Dmaven.javadoc.skip=true -Dmaven.source.skip=true" CCACHE_TMP_DIR: "/tmp/ccache_tmp" CCACHE_DATA_DIR: "/tmp/vespa/ccache" MAIN_CACHE_FILE: "/main_job_cache/vespa.tar" steps: - inspect: | set -x env | grep -v TOKEN cat /proc/cpuinfo cat /proc/meminfo df -h uname -a rpm -qa | grep "vespa" - restore-cache: | (cd /tmp && if [[ -f $MAIN_CACHE_FILE ]]; then tar xf $MAIN_CACHE_FILE; fi) mkdir -p $CCACHE_DATA_DIR mkdir -p $CCACHE_TMP_DIR export CCACHE_DIR=$CCACHE_DATA_DIR rm -f $CCACHE_DIR/ccache.conf ccache -M 20G ccache -o log_file=$SD_ARTIFACTS_DIR/ccache_log.txt ccache -o temporary_dir=$CCACHE_TMP_DIR ccache -p ccache -z - compile: | screwdriver/build-vespa.sh - save-cache: | if [[ -z "$SD_PULL_REQUEST" ]]; then # Remove what we have produced rm -rf $LOCAL_MVN_REPO/com/yahoo rm -rf $LOCAL_MVN_REPO/ai/vespa # Tar toghether the /tmp/vespa folder containing ccache and cleaned mvn repo mkdir -p $(dirname $MAIN_CACHE_FILE) (cd /tmp && tar cf $MAIN_CACHE_FILE vespa) # Wipe the cache if we exceed 2GB to avoid pulling and pusing too large files if (( $(stat --format='%s' $MAIN_CACHE_FILE) > $(( 2*1000*1000*1000 )) )); then tar cf $MAIN_CACHE_FILE --files-from=/dev/null; echo "Cleaning cache file. $MAIN_CACHE_FILE is now $(stat --format='%s' $MAIN_CACHE_FILE) bytes." fi fi - inspect-after: | du -sh /tmp/vespa/* ls -la /main_job_cache || true df -h publish-release: annotations: screwdriver.cd/cpu: 7 screwdriver.cd/ram: 16 screwdriver.cd/disk: HIGH screwdriver.cd/timeout: 300 screwdriver.cd/dockerEnabled: true screwdriver.cd/dockerCpu: TURBO screwdriver.cd/dockerRam: TURBO secrets: - COPR_WEBHOOK - OSSRH_USER - OSSRH_TOKEN - GPG_KEYNAME - GPG_PASSPHRASE - GPG_ENCPHRASE - SAMPLE_APPS_DEPLOY_KEY - VESPA_DEPLOY_KEY - DOCKER_HUB_DEPLOY_KEY environment: GIT_SSH_COMMAND: "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" steps: - get-vespa-version: | VESPA_VERSION=$(meta get vespa.version) VESPA_REF=$(meta get vespa.ref) if [[ $VESPA_VERSION == null ]] || [[ $VESPA_REF == null ]]; then echo "Must have valid Vespa version and reference to continue (got VESPA_VERSION=$VESPA_VERSION, VESPA_REF=$VESPA_REF)." exit 1 fi - install-dependencies: | yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install -y --setopt skip_missing_names_on_install=False docker-ce docker-ce-cli containerd.io rh-git227 docker system info source /opt/rh/rh-git227/enable - release-rpms: | screwdriver/release-rpms.sh $VESPA_VERSION $VESPA_REF - release-container-image: | screwdriver/release-container-image.sh $VESPA_VERSION - release-java-artifacts: | screwdriver/release-java-artifacts.sh $VESPA_VERSION $VESPA_REF - update-sample-apps: | screwdriver/update-vespa-version-in-sample-apps.sh $VESPA_VERSION verify-opensource-release-7days: annotations: screwdriver.cd/buildPeriodically: H 0 * * * steps: - now-epoch: | now_epoch=`date "+%s"` echo "Now epoch: " $now_epoch - calculate-current-release-age: | current_release_date=`curl -s 'https://repo1.maven.org/maven2/com/yahoo/vespa/parent/' | \ grep '^