Merge remote-tracking branch 'remotes/armbru/tags/pull-qapi-2021-09-25-v2' into staging
[qemu.git] / .gitlab-ci.d / edk2.yml
1 # All jobs needing docker-edk2 must use the same rules it uses.
2 .edk2_job_rules:
3  rules: # Only run this job when ...
4  - changes:
5    # this file is modified
6    - .gitlab-ci.d/edk2.yml
7    # or the Dockerfile is modified
8    - .gitlab-ci.d/edk2/Dockerfile
9    # or roms/edk2/ is modified (submodule updated)
10    - roms/edk2/*
11    when: on_success
12  - if: '$CI_COMMIT_REF_NAME =~ /^edk2/' # or the branch/tag starts with 'edk2'
13    when: on_success
14  - if: '$CI_COMMIT_MESSAGE =~ /edk2/i' # or last commit description contains 'EDK2'
15    when: on_success
16
17 docker-edk2:
18  extends: .edk2_job_rules
19  stage: containers
20  image: docker:19.03.1
21  services:
22  - docker:19.03.1-dind
23  variables:
24   GIT_DEPTH: 3
25   IMAGE_TAG: $CI_REGISTRY_IMAGE:edk2-cross-build
26   # We don't use TLS
27   DOCKER_HOST: tcp://docker:2375
28   DOCKER_TLS_CERTDIR: ""
29  before_script:
30  - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
31  script:
32  - docker pull $IMAGE_TAG || true
33  - docker build --cache-from $IMAGE_TAG --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
34                                         --tag $IMAGE_TAG .gitlab-ci.d/edk2
35  - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
36  - docker push $IMAGE_TAG
37
38 build-edk2:
39  extends: .edk2_job_rules
40  stage: build
41  needs: ['docker-edk2']
42  artifacts:
43    paths: # 'artifacts.zip' will contains the following files:
44    - pc-bios/edk2*bz2
45    - pc-bios/edk2-licenses.txt
46    - edk2-stdout.log
47    - edk2-stderr.log
48  image: $CI_REGISTRY_IMAGE:edk2-cross-build
49  variables:
50    GIT_DEPTH: 3
51  script: # Clone the required submodules and build EDK2
52  - git submodule update --init roms/edk2
53  - git -C roms/edk2 submodule update --init
54  - export JOBS=$(($(getconf _NPROCESSORS_ONLN) + 1))
55  - echo "=== Using ${JOBS} simultaneous jobs ==="
56  - make -j${JOBS} -C roms efi 2>&1 1>edk2-stdout.log | tee -a edk2-stderr.log >&2