Skip to content
Snippets Groups Projects
.gitlab-ci.yml 10.83 KiB
# Currently we have two build stages after our containers are built:
#  - build (for traditional build and test or first stage build)
#  - test (for test stages, using build artefacts from a build stage)
stages:
  - containers
  - containers-layer2
  - containers-layer3
  - build
  - test

# We assume GitLab has it's own caching set up for RPM/APT repositories so we
# just take care of avocado assets here.
cache:
  paths:
    - $HOME/avocado/data/cache

include:
  - local: '/.gitlab-ci.d/edk2.yml'
  - local: '/.gitlab-ci.d/opensbi.yml'
  - local: '/.gitlab-ci.d/containers.yml'
  - local: '/.gitlab-ci.d/crossbuilds.yml'

.native_build_job_template: &native_build_job_definition
  stage: build
  image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
  before_script:
    - JOBS=$(expr $(nproc) + 1)
  script:
    - mkdir build
    - cd build
    - if test -n "$TARGETS";
      then
        ../configure --enable-werror $CONFIGURE_ARGS --target-list="$TARGETS" ;
      else
        ../configure --enable-werror $CONFIGURE_ARGS ;
      fi
    - make -j"$JOBS"
    - if test -n "$MAKE_CHECK_ARGS";
      then
        make -j"$JOBS" $MAKE_CHECK_ARGS ;
      fi

.native_test_job_template: &native_test_job_definition
  stage: test
  image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
  script:
    - cd build
    - find . -type f -exec touch {} +
    - make $MAKE_CHECK_ARGS

.acceptance_template: &acceptance_definition
  cache:
    key: "${CI_JOB_NAME}-cache"
    paths:
      - ${CI_PROJECT_DIR}/avocado-cache
    policy: pull-push
  before_script:
    - mkdir -p ~/.config/avocado
    - echo "[datadir.paths]" > ~/.config/avocado/avocado.conf
    - echo "cache_dirs = ['${CI_PROJECT_DIR}/avocado-cache']"
           >> ~/.config/avocado/avocado.conf
    - if [ -d ${CI_PROJECT_DIR}/avocado-cache ]; then
        du -chs ${CI_PROJECT_DIR}/avocado-cache ;
      fi
  after_script:
    - cd build
    - python3 -c 'import json; r = json.load(open("tests/results/latest/results.json")); [print(t["logfile"]) for t in r["tests"] if t["status"] not in ("PASS", "SKIP")]' | xargs cat
    - du -chs ${CI_PROJECT_DIR}/avocado-cache

build-system-ubuntu: