diff mbox series

[RFC,2/2] GitLab CI: crude mapping of PMM's scripts to jobs

Message ID 20200203032328.12051-2-crosa@redhat.com
State New
Headers show
Series [RFC,1/2] GitLab CI: avoid calling before_scripts on unintended jobs | expand

Commit Message

Cleber Rosa Feb. 3, 2020, 3:23 a.m. UTC
This is a crude and straightforward mapping of Peter's
"remake-merge-builds" and "pull-buildtest" scripts.

Some characteristics were removed for simplicity sake (but eventually
will), including:
 * number of simultaneous make jobs
 * make's synchronous output, not needed because of previous point
 * out-of-tree builds

This covers the "x86-64 Linux with a variety of different build
configs"[1].  I've personally tested all of them, and only had
issues with the "notcg" job[2], but it seems to be a test specific
issue with the nested KVM I was using.

[1] - https://wiki.qemu.org/Requirements/GatingCI#Current_Tests
[2] - https://paste.centos.org/view/1dd43a1c

Signed-off-by: Cleber Rosa <crosa@redhat.com>
---
 .gitlab-ci.yml | 116 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 116 insertions(+)

Comments

Wainer dos Santos Moschetta Feb. 3, 2020, 5:36 p.m. UTC | #1
Hi Cleber,

On 2/3/20 1:23 AM, Cleber Rosa wrote:
> This is a crude and straightforward mapping of Peter's
> "remake-merge-builds" and "pull-buildtest" scripts.
>
> Some characteristics were removed for simplicity sake (but eventually
> will), including:
>   * number of simultaneous make jobs
>   * make's synchronous output, not needed because of previous point
>   * out-of-tree builds
>
> This covers the "x86-64 Linux with a variety of different build
> configs"[1].  I've personally tested all of them, and only had
> issues with the "notcg" job[2], but it seems to be a test specific
> issue with the nested KVM I was using.


Could you put a comment in the commit text or in-code explaining why it 
builds QEMU with  --disable-libssh on all the jobs?

>
> [1] - https://wiki.qemu.org/Requirements/GatingCI#Current_Tests
> [2] - https://paste.centos.org/view/1dd43a1c
>
> Signed-off-by: Cleber Rosa <crosa@redhat.com>
> ---
>   .gitlab-ci.yml | 116 +++++++++++++++++++++++++++++++++++++++++++++++++
>   1 file changed, 116 insertions(+)
>
> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> index d2c7d2198e..eb4077e2ab 100644
> --- a/.gitlab-ci.yml
> +++ b/.gitlab-ci.yml
> @@ -2,6 +2,8 @@ include:
>     - local: '/.gitlab-ci-edk2.yml'
>   
>   build-system1:
> + rules:
> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>    before_script: &before_scr_apt
>    - apt-get update -qq
>    - apt-get install -y -qq flex bison libglib2.0-dev libpixman-1-dev genisoimage
> @@ -17,6 +19,8 @@ build-system1:
>    - make -j2 check
>   
>   build-system2:
> + rules:
> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>    before_script:
>     *before_scr_apt
>    script:
> @@ -31,6 +35,8 @@ build-system2:
>    - make -j2 check
>   
>   build-disabled:
> + rules:
> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>    before_script:
>     *before_scr_apt
>    script:
> @@ -47,6 +53,8 @@ build-disabled:
>    - make -j2 check-qtest SPEED=slow
>   
>   build-tcg-disabled:
> + rules:
> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>    before_script:
>     *before_scr_apt
>    script:
> @@ -67,6 +75,8 @@ build-tcg-disabled:
>               248 250 254 255 256
>   
>   build-user:
> + rules:
> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>    before_script:
>     *before_scr_apt
>    script:
> @@ -78,6 +88,8 @@ build-user:
>    - make run-tcg-tests-i386-linux-user run-tcg-tests-x86_64-linux-user
>   
>   build-clang:
> + rules:
> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>    before_script:
>     *before_scr_apt
>    script:
> @@ -92,6 +104,8 @@ build-clang:
>    - make -j2 check
>   
>   build-tci:
> + rules:
> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>    before_script:
>     *before_scr_apt
>    script:
> @@ -111,3 +125,105 @@ build-tci:
>    - QTEST_QEMU_BINARY="x86_64-softmmu/qemu-system-x86_64" ./tests/qtest/pxe-test
>    - QTEST_QEMU_BINARY="s390x-softmmu/qemu-system-s390x"
>      ./tests/qtest/pxe-test -m slow
> +
> +ubuntu-18.04.3-x86_64-notools:
> + tags:
> + - ubuntu_18.04.3
> + - x86_64
> + rules:
> + - if: '$CI_COMMIT_REF_NAME == "staging"'
> + script:
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n22
> + - ./configure --target-list=arm-softmmu --disable-tools --disable-libssh
> + # There is no make / make check in the "pull-buildtest" script for this.
> + # Question: should it at least be built? Or dropped?
> + - make
> +
> +ubuntu-18.04.3-x86_64-all-linux-static:

Doesn't it need to LD_PRELOAD on this runner too? ->

|https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n24 
|

> + tags:
> + - ubuntu_18.04.3
> + - x86_64
> + rules:
> + - if: '$CI_COMMIT_REF_NAME == "staging"'
> + script:
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n25
> + - ./configure --enable-debug --static --disable-system --disable-glusterfs --disable-libssh

Shouldn't it --disable-gnutls instead of --disable-glusterfs?

> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n36
> + - make
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n45
> + - make check V=1
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n48
> + - make check-tcg V=1


Any special reason to split it in 3 steps instead of a single `make 
check check-tcg`?

That pattern continues on next jobs...


> +
> +ubuntu-18.04.3-x86_64-all:
> + tags:
> + - ubuntu_18.04.3
> + - x86_64
> + rules:
> + - if: '$CI_COMMIT_REF_NAME == "staging"'
> + script:
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n26
> + - ./configure --disable-libssh
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n28
> + - make
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n37
> + - make check V=1
> +
> +ubuntu-18.04.3-x86_64-alldbg:
> + tags:
> + - ubuntu_18.04.3
> + - x86_64
> + rules:
> + - if: '$CI_COMMIT_REF_NAME == "staging"'
> + script:
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n27
> + - ./configure --disable-libssh
Missing --enable-debug, right?
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n27
> + - make clean
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n29
> + - make
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n37
> + - make check V=1
> +
> +ubuntu-18.04.3-x86_64-clang:
> + tags:
> + - ubuntu_18.04.3
> + - x86_64
> + rules:
> + - if: '$CI_COMMIT_REF_NAME == "staging"'
> + script:
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n31
> + - ./configure --disable-libssh --cc=clang --cxx=clang++ --enable-gtk --extra-cflags='-fsanitize=undefined -fno-sanitize=shift-base -Werror'
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n33
> + - make
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n39
> + - make check V=1
> +
> +ubuntu-18.04.3-x86_64-tci:
> + tags:
> + - ubuntu_18.04.3
> + - x86_64
> + rules:
> + - if: '$CI_COMMIT_REF_NAME == "staging"'
> + script:
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n33
> + - ./configure --disable-libssh --enable-debug --enable-tcg-interpreter
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n34
> + - make

Would make sense to add a commented `make check` entry as well?

https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n40

> +
> +ubuntu-18.04.3-x86_64-notcg:
> + tags:
> + - ubuntu_18.04.3
> + - x86_64
> + rules:
> + - if: '$CI_COMMIT_REF_NAME == "staging"'
> + script:
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n35
> + - ./configure --disable-libssh --enable-debug --disable-tcg
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n35
> + - make
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n39
> + # Question: check is disabled on the original script, because the machine
> + # is said to be running VirtualBox.  Should this be dropped or should the
> + # machine be tweaked or substituted?
> + - make check V=1
Philippe Mathieu-Daudé Feb. 6, 2020, 1:03 p.m. UTC | #2
On 2/3/20 4:23 AM, Cleber Rosa wrote:
> This is a crude and straightforward mapping of Peter's
> "remake-merge-builds" and "pull-buildtest" scripts.
> 
> Some characteristics were removed for simplicity sake (but eventually
> will), including:
>   * number of simultaneous make jobs
>   * make's synchronous output, not needed because of previous point
>   * out-of-tree builds
> 
> This covers the "x86-64 Linux with a variety of different build
> configs"[1].  I've personally tested all of them, and only had
> issues with the "notcg" job[2], but it seems to be a test specific
> issue with the nested KVM I was using.
> 
> [1] - https://wiki.qemu.org/Requirements/GatingCI#Current_Tests
> [2] - https://paste.centos.org/view/1dd43a1c
> 
> Signed-off-by: Cleber Rosa <crosa@redhat.com>
> ---
>   .gitlab-ci.yml | 116 +++++++++++++++++++++++++++++++++++++++++++++++++
>   1 file changed, 116 insertions(+)
> 
> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> index d2c7d2198e..eb4077e2ab 100644
> --- a/.gitlab-ci.yml
> +++ b/.gitlab-ci.yml
> @@ -2,6 +2,8 @@ include:
>     - local: '/.gitlab-ci-edk2.yml'
>   
>   build-system1:
> + rules:
> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>    before_script: &before_scr_apt
>    - apt-get update -qq
>    - apt-get install -y -qq flex bison libglib2.0-dev libpixman-1-dev genisoimage
> @@ -17,6 +19,8 @@ build-system1:
>    - make -j2 check
>   
>   build-system2:
> + rules:
> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>    before_script:
>     *before_scr_apt
>    script:
> @@ -31,6 +35,8 @@ build-system2:
>    - make -j2 check
>   
>   build-disabled:
> + rules:
> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>    before_script:
>     *before_scr_apt
>    script:
> @@ -47,6 +53,8 @@ build-disabled:
>    - make -j2 check-qtest SPEED=slow
>   
>   build-tcg-disabled:
> + rules:
> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>    before_script:
>     *before_scr_apt
>    script:
> @@ -67,6 +75,8 @@ build-tcg-disabled:
>               248 250 254 255 256
>   
>   build-user:
> + rules:
> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>    before_script:
>     *before_scr_apt
>    script:
> @@ -78,6 +88,8 @@ build-user:
>    - make run-tcg-tests-i386-linux-user run-tcg-tests-x86_64-linux-user
>   
>   build-clang:
> + rules:
> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>    before_script:
>     *before_scr_apt
>    script:
> @@ -92,6 +104,8 @@ build-clang:
>    - make -j2 check
>   
>   build-tci:
> + rules:
> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>    before_script:
>     *before_scr_apt
>    script:
> @@ -111,3 +125,105 @@ build-tci:
>    - QTEST_QEMU_BINARY="x86_64-softmmu/qemu-system-x86_64" ./tests/qtest/pxe-test
>    - QTEST_QEMU_BINARY="s390x-softmmu/qemu-system-s390x"
>      ./tests/qtest/pxe-test -m slow
> +
> +ubuntu-18.04.3-x86_64-notools:
> + tags:
> + - ubuntu_18.04.3
> + - x86_64
> + rules:
> + - if: '$CI_COMMIT_REF_NAME == "staging"'
> + script:
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n22
> + - ./configure --target-list=arm-softmmu --disable-tools --disable-libssh
> + # There is no make / make check in the "pull-buildtest" script for this.
> + # Question: should it at least be built? Or dropped?
> + - make
> +
> +ubuntu-18.04.3-x86_64-all-linux-static:
> + tags:
> + - ubuntu_18.04.3
> + - x86_64
> + rules:
> + - if: '$CI_COMMIT_REF_NAME == "staging"'
> + script:
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n25
> + - ./configure --enable-debug --static --disable-system --disable-glusterfs --disable-libssh
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n36
> + - make
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n45
> + - make check V=1
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n48
> + - make check-tcg V=1
> +
> +ubuntu-18.04.3-x86_64-all:
> + tags:
> + - ubuntu_18.04.3
> + - x86_64
> + rules:
> + - if: '$CI_COMMIT_REF_NAME == "staging"'
> + script:
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n26
> + - ./configure --disable-libssh
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n28
> + - make
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n37
> + - make check V=1
> +
> +ubuntu-18.04.3-x86_64-alldbg:
> + tags:
> + - ubuntu_18.04.3
> + - x86_64
> + rules:
> + - if: '$CI_COMMIT_REF_NAME == "staging"'
> + script:
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n27
> + - ./configure --disable-libssh
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n27
> + - make clean
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n29
> + - make
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n37
> + - make check V=1
> +
> +ubuntu-18.04.3-x86_64-clang:
> + tags:
> + - ubuntu_18.04.3
> + - x86_64
> + rules:
> + - if: '$CI_COMMIT_REF_NAME == "staging"'
> + script:
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n31
> + - ./configure --disable-libssh --cc=clang --cxx=clang++ --enable-gtk --extra-cflags='-fsanitize=undefined -fno-sanitize=shift-base -Werror'
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n33
> + - make
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n39
> + - make check V=1
> +
> +ubuntu-18.04.3-x86_64-tci:
> + tags:
> + - ubuntu_18.04.3
> + - x86_64
> + rules:
> + - if: '$CI_COMMIT_REF_NAME == "staging"'
> + script:
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n33
> + - ./configure --disable-libssh --enable-debug --enable-tcg-interpreter
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n34
> + - make
> +
> +ubuntu-18.04.3-x86_64-notcg:
> + tags:
> + - ubuntu_18.04.3
> + - x86_64
> + rules:
> + - if: '$CI_COMMIT_REF_NAME == "staging"'
> + script:
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n35
> + - ./configure --disable-libssh --enable-debug --disable-tcg
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n35
> + - make
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n39
> + # Question: check is disabled on the original script, because the machine
> + # is said to be running VirtualBox.  Should this be dropped or should the
> + # machine be tweaked or substituted?
> + - make check V=1

On another thread Thomas said he doesn't want to be responsible of other 
tests:
https://www.mail-archive.com/qemu-devel@nongnu.org/msg670132.html

We could move the set of tests converted from Peter personal testsuite 
into a separate YAML, so the interested (you Cleber, and Peter) can have 
a F: entry in MAINTAINERS for it:

include:
   - local: '/.gitlab-ci-pm215.yml'
Philippe Mathieu-Daudé Feb. 6, 2020, 1:05 p.m. UTC | #3
On 2/6/20 2:03 PM, Philippe Mathieu-Daudé wrote:
> On 2/3/20 4:23 AM, Cleber Rosa wrote:
>> This is a crude and straightforward mapping of Peter's
>> "remake-merge-builds" and "pull-buildtest" scripts.
>>
>> Some characteristics were removed for simplicity sake (but eventually
>> will), including:
>>   * number of simultaneous make jobs
>>   * make's synchronous output, not needed because of previous point
>>   * out-of-tree builds
>>
>> This covers the "x86-64 Linux with a variety of different build
>> configs"[1].  I've personally tested all of them, and only had
>> issues with the "notcg" job[2], but it seems to be a test specific
>> issue with the nested KVM I was using.
>>
>> [1] - https://wiki.qemu.org/Requirements/GatingCI#Current_Tests
>> [2] - https://paste.centos.org/view/1dd43a1c
>>
>> Signed-off-by: Cleber Rosa <crosa@redhat.com>
>> ---
>>   .gitlab-ci.yml | 116 +++++++++++++++++++++++++++++++++++++++++++++++++
>>   1 file changed, 116 insertions(+)
>>
>> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
>> index d2c7d2198e..eb4077e2ab 100644
>> --- a/.gitlab-ci.yml
>> +++ b/.gitlab-ci.yml
>> @@ -2,6 +2,8 @@ include:
>>     - local: '/.gitlab-ci-edk2.yml'
>>   build-system1:
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>    before_script: &before_scr_apt
>>    - apt-get update -qq
>>    - apt-get install -y -qq flex bison libglib2.0-dev libpixman-1-dev 
>> genisoimage
>> @@ -17,6 +19,8 @@ build-system1:
>>    - make -j2 check
>>   build-system2:
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>    before_script:
>>     *before_scr_apt
>>    script:
>> @@ -31,6 +35,8 @@ build-system2:
>>    - make -j2 check
>>   build-disabled:
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>    before_script:
>>     *before_scr_apt
>>    script:
>> @@ -47,6 +53,8 @@ build-disabled:
>>    - make -j2 check-qtest SPEED=slow
>>   build-tcg-disabled:
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>    before_script:
>>     *before_scr_apt
>>    script:
>> @@ -67,6 +75,8 @@ build-tcg-disabled:
>>               248 250 254 255 256
>>   build-user:
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>    before_script:
>>     *before_scr_apt
>>    script:
>> @@ -78,6 +88,8 @@ build-user:
>>    - make run-tcg-tests-i386-linux-user run-tcg-tests-x86_64-linux-user
>>   build-clang:
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>    before_script:
>>     *before_scr_apt
>>    script:
>> @@ -92,6 +104,8 @@ build-clang:
>>    - make -j2 check
>>   build-tci:
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>    before_script:
>>     *before_scr_apt
>>    script:
>> @@ -111,3 +125,105 @@ build-tci:
>>    - QTEST_QEMU_BINARY="x86_64-softmmu/qemu-system-x86_64" 
>> ./tests/qtest/pxe-test
>>    - QTEST_QEMU_BINARY="s390x-softmmu/qemu-system-s390x"
>>      ./tests/qtest/pxe-test -m slow
>> +
>> +ubuntu-18.04.3-x86_64-notools:
>> + tags:
>> + - ubuntu_18.04.3
>> + - x86_64
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME == "staging"'
>> + script:
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n22 
>>
>> + - ./configure --target-list=arm-softmmu --disable-tools 
>> --disable-libssh
>> + # There is no make / make check in the "pull-buildtest" script for 
>> this.
>> + # Question: should it at least be built? Or dropped?
>> + - make
>> +
>> +ubuntu-18.04.3-x86_64-all-linux-static:
>> + tags:
>> + - ubuntu_18.04.3
>> + - x86_64
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME == "staging"'
>> + script:
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n25 
>>
>> + - ./configure --enable-debug --static --disable-system 
>> --disable-glusterfs --disable-libssh
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n36 
>>
>> + - make
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n45 
>>
>> + - make check V=1
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n48 
>>
>> + - make check-tcg V=1
>> +
>> +ubuntu-18.04.3-x86_64-all:
>> + tags:
>> + - ubuntu_18.04.3
>> + - x86_64
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME == "staging"'
>> + script:
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n26 
>>
>> + - ./configure --disable-libssh
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n28 
>>
>> + - make
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n37 
>>
>> + - make check V=1
>> +
>> +ubuntu-18.04.3-x86_64-alldbg:
>> + tags:
>> + - ubuntu_18.04.3
>> + - x86_64
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME == "staging"'
>> + script:
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n27 
>>
>> + - ./configure --disable-libssh
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n27 
>>
>> + - make clean
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n29 
>>
>> + - make
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n37 
>>
>> + - make check V=1
>> +
>> +ubuntu-18.04.3-x86_64-clang:
>> + tags:
>> + - ubuntu_18.04.3
>> + - x86_64
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME == "staging"'
>> + script:
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n31 
>>
>> + - ./configure --disable-libssh --cc=clang --cxx=clang++ --enable-gtk 
>> --extra-cflags='-fsanitize=undefined -fno-sanitize=shift-base -Werror'
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n33 
>>
>> + - make
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n39 
>>
>> + - make check V=1
>> +
>> +ubuntu-18.04.3-x86_64-tci:
>> + tags:
>> + - ubuntu_18.04.3
>> + - x86_64
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME == "staging"'
>> + script:
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n33 
>>
>> + - ./configure --disable-libssh --enable-debug --enable-tcg-interpreter
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n34 
>>
>> + - make
>> +
>> +ubuntu-18.04.3-x86_64-notcg:
>> + tags:
>> + - ubuntu_18.04.3
>> + - x86_64
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME == "staging"'
>> + script:
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n35 
>>
>> + - ./configure --disable-libssh --enable-debug --disable-tcg
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n35 
>>
>> + - make
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n39 
>>
>> + # Question: check is disabled on the original script, because the 
>> machine
>> + # is said to be running VirtualBox.  Should this be dropped or 
>> should the
>> + # machine be tweaked or substituted?
>> + - make check V=1
> 
> On another thread Thomas said he doesn't want to be responsible of other 
> tests:
> https://www.mail-archive.com/qemu-devel@nongnu.org/msg670132.html
> 
> We could move the set of tests converted from Peter personal testsuite 
> into a separate YAML, so the interested (you Cleber, and Peter) can have 
> a F: entry in MAINTAINERS for it:
> 
> include:
>    - local: '/.gitlab-ci-pm215.yml'

I'm not calling this file "pm215" because Peter owns it, but because it 
would contains all the tests Peter was running manually before we use 
GitLab as a gating CI.
Wainer dos Santos Moschetta Feb. 6, 2020, 1:52 p.m. UTC | #4
On 2/6/20 11:03 AM, Philippe Mathieu-Daudé wrote:
> On 2/3/20 4:23 AM, Cleber Rosa wrote:
>> This is a crude and straightforward mapping of Peter's
>> "remake-merge-builds" and "pull-buildtest" scripts.
>>
>> Some characteristics were removed for simplicity sake (but eventually
>> will), including:
>>   * number of simultaneous make jobs
>>   * make's synchronous output, not needed because of previous point
>>   * out-of-tree builds
>>
>> This covers the "x86-64 Linux with a variety of different build
>> configs"[1].  I've personally tested all of them, and only had
>> issues with the "notcg" job[2], but it seems to be a test specific
>> issue with the nested KVM I was using.
>>
>> [1] - https://wiki.qemu.org/Requirements/GatingCI#Current_Tests
>> [2] - https://paste.centos.org/view/1dd43a1c
>>
>> Signed-off-by: Cleber Rosa <crosa@redhat.com>
>> ---
>>   .gitlab-ci.yml | 116 +++++++++++++++++++++++++++++++++++++++++++++++++
>>   1 file changed, 116 insertions(+)
>>
>> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
>> index d2c7d2198e..eb4077e2ab 100644
>> --- a/.gitlab-ci.yml
>> +++ b/.gitlab-ci.yml
>> @@ -2,6 +2,8 @@ include:
>>     - local: '/.gitlab-ci-edk2.yml'
>>     build-system1:
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>    before_script: &before_scr_apt
>>    - apt-get update -qq
>>    - apt-get install -y -qq flex bison libglib2.0-dev libpixman-1-dev 
>> genisoimage
>> @@ -17,6 +19,8 @@ build-system1:
>>    - make -j2 check
>>     build-system2:
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>    before_script:
>>     *before_scr_apt
>>    script:
>> @@ -31,6 +35,8 @@ build-system2:
>>    - make -j2 check
>>     build-disabled:
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>    before_script:
>>     *before_scr_apt
>>    script:
>> @@ -47,6 +53,8 @@ build-disabled:
>>    - make -j2 check-qtest SPEED=slow
>>     build-tcg-disabled:
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>    before_script:
>>     *before_scr_apt
>>    script:
>> @@ -67,6 +75,8 @@ build-tcg-disabled:
>>               248 250 254 255 256
>>     build-user:
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>    before_script:
>>     *before_scr_apt
>>    script:
>> @@ -78,6 +88,8 @@ build-user:
>>    - make run-tcg-tests-i386-linux-user run-tcg-tests-x86_64-linux-user
>>     build-clang:
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>    before_script:
>>     *before_scr_apt
>>    script:
>> @@ -92,6 +104,8 @@ build-clang:
>>    - make -j2 check
>>     build-tci:
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>    before_script:
>>     *before_scr_apt
>>    script:
>> @@ -111,3 +125,105 @@ build-tci:
>>    - QTEST_QEMU_BINARY="x86_64-softmmu/qemu-system-x86_64" 
>> ./tests/qtest/pxe-test
>>    - QTEST_QEMU_BINARY="s390x-softmmu/qemu-system-s390x"
>>      ./tests/qtest/pxe-test -m slow
>> +
>> +ubuntu-18.04.3-x86_64-notools:
>> + tags:
>> + - ubuntu_18.04.3
>> + - x86_64
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME == "staging"'
>> + script:
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n22
>> + - ./configure --target-list=arm-softmmu --disable-tools 
>> --disable-libssh
>> + # There is no make / make check in the "pull-buildtest" script for 
>> this.
>> + # Question: should it at least be built? Or dropped?
>> + - make
>> +
>> +ubuntu-18.04.3-x86_64-all-linux-static:
>> + tags:
>> + - ubuntu_18.04.3
>> + - x86_64
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME == "staging"'
>> + script:
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n25
>> + - ./configure --enable-debug --static --disable-system 
>> --disable-glusterfs --disable-libssh
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n36
>> + - make
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n45
>> + - make check V=1
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n48
>> + - make check-tcg V=1
>> +
>> +ubuntu-18.04.3-x86_64-all:
>> + tags:
>> + - ubuntu_18.04.3
>> + - x86_64
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME == "staging"'
>> + script:
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n26
>> + - ./configure --disable-libssh
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n28
>> + - make
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n37
>> + - make check V=1
>> +
>> +ubuntu-18.04.3-x86_64-alldbg:
>> + tags:
>> + - ubuntu_18.04.3
>> + - x86_64
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME == "staging"'
>> + script:
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n27
>> + - ./configure --disable-libssh
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n27
>> + - make clean
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n29
>> + - make
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n37
>> + - make check V=1
>> +
>> +ubuntu-18.04.3-x86_64-clang:
>> + tags:
>> + - ubuntu_18.04.3
>> + - x86_64
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME == "staging"'
>> + script:
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n31
>> + - ./configure --disable-libssh --cc=clang --cxx=clang++ 
>> --enable-gtk --extra-cflags='-fsanitize=undefined 
>> -fno-sanitize=shift-base -Werror'
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n33
>> + - make
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n39
>> + - make check V=1
>> +
>> +ubuntu-18.04.3-x86_64-tci:
>> + tags:
>> + - ubuntu_18.04.3
>> + - x86_64
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME == "staging"'
>> + script:
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n33
>> + - ./configure --disable-libssh --enable-debug --enable-tcg-interpreter
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n34
>> + - make
>> +
>> +ubuntu-18.04.3-x86_64-notcg:
>> + tags:
>> + - ubuntu_18.04.3
>> + - x86_64
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME == "staging"'
>> + script:
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n35
>> + - ./configure --disable-libssh --enable-debug --disable-tcg
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n35
>> + - make
>> + # 
>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n39
>> + # Question: check is disabled on the original script, because the 
>> machine
>> + # is said to be running VirtualBox.  Should this be dropped or 
>> should the
>> + # machine be tweaked or substituted?
>> + - make check V=1
>
> On another thread Thomas said he doesn't want to be responsible of 
> other tests:
> https://www.mail-archive.com/qemu-devel@nongnu.org/msg670132.html
>
> We could move the set of tests converted from Peter personal testsuite 
> into a separate YAML, so the interested (you Cleber, and Peter) can 
> have a F: entry in MAINTAINERS for it:


I like that idea.


>
>
> include:
>   - local: '/.gitlab-ci-pm215.yml'


If so, I suggest moving the file to the .gitlab-ci.d directory instead. 
Likewise the .gitlab-ci-edk2.yml file. This way the sources root 
directory does not get infested of GitLab files.

Thanks,

Wainer

>
>
>
Philippe Mathieu-Daudé Feb. 6, 2020, 1:54 p.m. UTC | #5
On 2/6/20 2:52 PM, Wainer dos Santos Moschetta wrote:
> On 2/6/20 11:03 AM, Philippe Mathieu-Daudé wrote:
>> On 2/3/20 4:23 AM, Cleber Rosa wrote:
>>> This is a crude and straightforward mapping of Peter's
>>> "remake-merge-builds" and "pull-buildtest" scripts.
>>>
>>> Some characteristics were removed for simplicity sake (but eventually
>>> will), including:
>>>   * number of simultaneous make jobs
>>>   * make's synchronous output, not needed because of previous point
>>>   * out-of-tree builds
>>>
>>> This covers the "x86-64 Linux with a variety of different build
>>> configs"[1].  I've personally tested all of them, and only had
>>> issues with the "notcg" job[2], but it seems to be a test specific
>>> issue with the nested KVM I was using.
>>>
>>> [1] - https://wiki.qemu.org/Requirements/GatingCI#Current_Tests
>>> [2] - https://paste.centos.org/view/1dd43a1c
>>>
>>> Signed-off-by: Cleber Rosa <crosa@redhat.com>
>>> ---
>>>   .gitlab-ci.yml | 116 +++++++++++++++++++++++++++++++++++++++++++++++++
>>>   1 file changed, 116 insertions(+)
>>>
>>> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
>>> index d2c7d2198e..eb4077e2ab 100644
>>> --- a/.gitlab-ci.yml
>>> +++ b/.gitlab-ci.yml
>>> @@ -2,6 +2,8 @@ include:
>>>     - local: '/.gitlab-ci-edk2.yml'
>>>     build-system1:
>>> + rules:
>>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>>    before_script: &before_scr_apt
>>>    - apt-get update -qq
>>>    - apt-get install -y -qq flex bison libglib2.0-dev libpixman-1-dev 
>>> genisoimage
>>> @@ -17,6 +19,8 @@ build-system1:
>>>    - make -j2 check
>>>     build-system2:
>>> + rules:
>>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>>    before_script:
>>>     *before_scr_apt
>>>    script:
>>> @@ -31,6 +35,8 @@ build-system2:
>>>    - make -j2 check
>>>     build-disabled:
>>> + rules:
>>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>>    before_script:
>>>     *before_scr_apt
>>>    script:
>>> @@ -47,6 +53,8 @@ build-disabled:
>>>    - make -j2 check-qtest SPEED=slow
>>>     build-tcg-disabled:
>>> + rules:
>>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>>    before_script:
>>>     *before_scr_apt
>>>    script:
>>> @@ -67,6 +75,8 @@ build-tcg-disabled:
>>>               248 250 254 255 256
>>>     build-user:
>>> + rules:
>>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>>    before_script:
>>>     *before_scr_apt
>>>    script:
>>> @@ -78,6 +88,8 @@ build-user:
>>>    - make run-tcg-tests-i386-linux-user run-tcg-tests-x86_64-linux-user
>>>     build-clang:
>>> + rules:
>>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>>    before_script:
>>>     *before_scr_apt
>>>    script:
>>> @@ -92,6 +104,8 @@ build-clang:
>>>    - make -j2 check
>>>     build-tci:
>>> + rules:
>>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>>    before_script:
>>>     *before_scr_apt
>>>    script:
>>> @@ -111,3 +125,105 @@ build-tci:
>>>    - QTEST_QEMU_BINARY="x86_64-softmmu/qemu-system-x86_64" 
>>> ./tests/qtest/pxe-test
>>>    - QTEST_QEMU_BINARY="s390x-softmmu/qemu-system-s390x"
>>>      ./tests/qtest/pxe-test -m slow
>>> +
>>> +ubuntu-18.04.3-x86_64-notools:
>>> + tags:
>>> + - ubuntu_18.04.3
>>> + - x86_64
>>> + rules:
>>> + - if: '$CI_COMMIT_REF_NAME == "staging"'
>>> + script:
>>> + # 
>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n22 
>>>
>>> + - ./configure --target-list=arm-softmmu --disable-tools 
>>> --disable-libssh
>>> + # There is no make / make check in the "pull-buildtest" script for 
>>> this.
>>> + # Question: should it at least be built? Or dropped?
>>> + - make
>>> +
>>> +ubuntu-18.04.3-x86_64-all-linux-static:
>>> + tags:
>>> + - ubuntu_18.04.3
>>> + - x86_64
>>> + rules:
>>> + - if: '$CI_COMMIT_REF_NAME == "staging"'
>>> + script:
>>> + # 
>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n25 
>>>
>>> + - ./configure --enable-debug --static --disable-system 
>>> --disable-glusterfs --disable-libssh
>>> + # 
>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n36 
>>>
>>> + - make
>>> + # 
>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n45 
>>>
>>> + - make check V=1
>>> + # 
>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n48 
>>>
>>> + - make check-tcg V=1
>>> +
>>> +ubuntu-18.04.3-x86_64-all:
>>> + tags:
>>> + - ubuntu_18.04.3
>>> + - x86_64
>>> + rules:
>>> + - if: '$CI_COMMIT_REF_NAME == "staging"'
>>> + script:
>>> + # 
>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n26 
>>>
>>> + - ./configure --disable-libssh
>>> + # 
>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n28 
>>>
>>> + - make
>>> + # 
>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n37 
>>>
>>> + - make check V=1
>>> +
>>> +ubuntu-18.04.3-x86_64-alldbg:
>>> + tags:
>>> + - ubuntu_18.04.3
>>> + - x86_64
>>> + rules:
>>> + - if: '$CI_COMMIT_REF_NAME == "staging"'
>>> + script:
>>> + # 
>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n27 
>>>
>>> + - ./configure --disable-libssh
>>> + # 
>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n27 
>>>
>>> + - make clean
>>> + # 
>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n29 
>>>
>>> + - make
>>> + # 
>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n37 
>>>
>>> + - make check V=1
>>> +
>>> +ubuntu-18.04.3-x86_64-clang:
>>> + tags:
>>> + - ubuntu_18.04.3
>>> + - x86_64
>>> + rules:
>>> + - if: '$CI_COMMIT_REF_NAME == "staging"'
>>> + script:
>>> + # 
>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n31 
>>>
>>> + - ./configure --disable-libssh --cc=clang --cxx=clang++ 
>>> --enable-gtk --extra-cflags='-fsanitize=undefined 
>>> -fno-sanitize=shift-base -Werror'
>>> + # 
>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n33 
>>>
>>> + - make
>>> + # 
>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n39 
>>>
>>> + - make check V=1
>>> +
>>> +ubuntu-18.04.3-x86_64-tci:
>>> + tags:
>>> + - ubuntu_18.04.3
>>> + - x86_64
>>> + rules:
>>> + - if: '$CI_COMMIT_REF_NAME == "staging"'
>>> + script:
>>> + # 
>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n33 
>>>
>>> + - ./configure --disable-libssh --enable-debug --enable-tcg-interpreter
>>> + # 
>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n34 
>>>
>>> + - make
>>> +
>>> +ubuntu-18.04.3-x86_64-notcg:
>>> + tags:
>>> + - ubuntu_18.04.3
>>> + - x86_64
>>> + rules:
>>> + - if: '$CI_COMMIT_REF_NAME == "staging"'
>>> + script:
>>> + # 
>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n35 
>>>
>>> + - ./configure --disable-libssh --enable-debug --disable-tcg
>>> + # 
>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n35 
>>>
>>> + - make
>>> + # 
>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n39 
>>>
>>> + # Question: check is disabled on the original script, because the 
>>> machine
>>> + # is said to be running VirtualBox.  Should this be dropped or 
>>> should the
>>> + # machine be tweaked or substituted?
>>> + - make check V=1
>>
>> On another thread Thomas said he doesn't want to be responsible of 
>> other tests:
>> https://www.mail-archive.com/qemu-devel@nongnu.org/msg670132.html
>>
>> We could move the set of tests converted from Peter personal testsuite 
>> into a separate YAML, so the interested (you Cleber, and Peter) can 
>> have a F: entry in MAINTAINERS for it:
> 
> 
> I like that idea.
> 
> 
>>
>>
>> include:
>>   - local: '/.gitlab-ci-pm215.yml'
> 
> 
> If so, I suggest moving the file to the .gitlab-ci.d directory instead. 
> Likewise the .gitlab-ci-edk2.yml file. This way the sources root 
> directory does not get infested of GitLab files.

Yes, +1. I'm pretty sure Thomas will like that too.
Thomas Huth Feb. 6, 2020, 3:13 p.m. UTC | #6
On 06/02/2020 14.54, Philippe Mathieu-Daudé wrote:
> On 2/6/20 2:52 PM, Wainer dos Santos Moschetta wrote:
>> On 2/6/20 11:03 AM, Philippe Mathieu-Daudé wrote:
>>> On 2/3/20 4:23 AM, Cleber Rosa wrote:
>>>> This is a crude and straightforward mapping of Peter's
>>>> "remake-merge-builds" and "pull-buildtest" scripts.
>>>>
>>>> Some characteristics were removed for simplicity sake (but eventually
>>>> will), including:
>>>>   * number of simultaneous make jobs
>>>>   * make's synchronous output, not needed because of previous point
>>>>   * out-of-tree builds
>>>>
>>>> This covers the "x86-64 Linux with a variety of different build
>>>> configs"[1].  I've personally tested all of them, and only had
>>>> issues with the "notcg" job[2], but it seems to be a test specific
>>>> issue with the nested KVM I was using.
>>>>
>>>> [1] - https://wiki.qemu.org/Requirements/GatingCI#Current_Tests
>>>> [2] - https://paste.centos.org/view/1dd43a1c
>>>>
>>>> Signed-off-by: Cleber Rosa <crosa@redhat.com>
>>>> ---
>>>>   .gitlab-ci.yml | 116
>>>> +++++++++++++++++++++++++++++++++++++++++++++++++
>>>>   1 file changed, 116 insertions(+)
>>>>
>>>> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
>>>> index d2c7d2198e..eb4077e2ab 100644
>>>> --- a/.gitlab-ci.yml
>>>> +++ b/.gitlab-ci.yml
>>>> @@ -2,6 +2,8 @@ include:
>>>>     - local: '/.gitlab-ci-edk2.yml'
>>>>     build-system1:
>>>> + rules:
>>>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>>>    before_script: &before_scr_apt
>>>>    - apt-get update -qq
>>>>    - apt-get install -y -qq flex bison libglib2.0-dev
>>>> libpixman-1-dev genisoimage
>>>> @@ -17,6 +19,8 @@ build-system1:
>>>>    - make -j2 check
>>>>     build-system2:
>>>> + rules:
>>>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>>>    before_script:
>>>>     *before_scr_apt
>>>>    script:
>>>> @@ -31,6 +35,8 @@ build-system2:
>>>>    - make -j2 check
>>>>     build-disabled:
>>>> + rules:
>>>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>>>    before_script:
>>>>     *before_scr_apt
>>>>    script:
>>>> @@ -47,6 +53,8 @@ build-disabled:
>>>>    - make -j2 check-qtest SPEED=slow
>>>>     build-tcg-disabled:
>>>> + rules:
>>>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>>>    before_script:
>>>>     *before_scr_apt
>>>>    script:
>>>> @@ -67,6 +75,8 @@ build-tcg-disabled:
>>>>               248 250 254 255 256
>>>>     build-user:
>>>> + rules:
>>>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>>>    before_script:
>>>>     *before_scr_apt
>>>>    script:
>>>> @@ -78,6 +88,8 @@ build-user:
>>>>    - make run-tcg-tests-i386-linux-user run-tcg-tests-x86_64-linux-user
>>>>     build-clang:
>>>> + rules:
>>>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>>>    before_script:
>>>>     *before_scr_apt
>>>>    script:
>>>> @@ -92,6 +104,8 @@ build-clang:
>>>>    - make -j2 check
>>>>     build-tci:
>>>> + rules:
>>>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>>>    before_script:
>>>>     *before_scr_apt
>>>>    script:
>>>> @@ -111,3 +125,105 @@ build-tci:
>>>>    - QTEST_QEMU_BINARY="x86_64-softmmu/qemu-system-x86_64"
>>>> ./tests/qtest/pxe-test
>>>>    - QTEST_QEMU_BINARY="s390x-softmmu/qemu-system-s390x"
>>>>      ./tests/qtest/pxe-test -m slow
>>>> +
>>>> +ubuntu-18.04.3-x86_64-notools:
>>>> + tags:
>>>> + - ubuntu_18.04.3
>>>> + - x86_64
>>>> + rules:
>>>> + - if: '$CI_COMMIT_REF_NAME == "staging"'
>>>> + script:
>>>> + #
>>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n22
>>>>
>>>> + - ./configure --target-list=arm-softmmu --disable-tools
>>>> --disable-libssh
>>>> + # There is no make / make check in the "pull-buildtest" script for
>>>> this.
>>>> + # Question: should it at least be built? Or dropped?
>>>> + - make
>>>> +
>>>> +ubuntu-18.04.3-x86_64-all-linux-static:
>>>> + tags:
>>>> + - ubuntu_18.04.3
>>>> + - x86_64
>>>> + rules:
>>>> + - if: '$CI_COMMIT_REF_NAME == "staging"'
>>>> + script:
>>>> + #
>>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n25
>>>>
>>>> + - ./configure --enable-debug --static --disable-system
>>>> --disable-glusterfs --disable-libssh
>>>> + #
>>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n36
>>>>
>>>> + - make
>>>> + #
>>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n45
>>>>
>>>> + - make check V=1
>>>> + #
>>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n48
>>>>
>>>> + - make check-tcg V=1
>>>> +
>>>> +ubuntu-18.04.3-x86_64-all:
>>>> + tags:
>>>> + - ubuntu_18.04.3
>>>> + - x86_64
>>>> + rules:
>>>> + - if: '$CI_COMMIT_REF_NAME == "staging"'
>>>> + script:
>>>> + #
>>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n26
>>>>
>>>> + - ./configure --disable-libssh
>>>> + #
>>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n28
>>>>
>>>> + - make
>>>> + #
>>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n37
>>>>
>>>> + - make check V=1
>>>> +
>>>> +ubuntu-18.04.3-x86_64-alldbg:
>>>> + tags:
>>>> + - ubuntu_18.04.3
>>>> + - x86_64
>>>> + rules:
>>>> + - if: '$CI_COMMIT_REF_NAME == "staging"'
>>>> + script:
>>>> + #
>>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n27
>>>>
>>>> + - ./configure --disable-libssh
>>>> + #
>>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n27
>>>>
>>>> + - make clean
>>>> + #
>>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n29
>>>>
>>>> + - make
>>>> + #
>>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n37
>>>>
>>>> + - make check V=1
>>>> +
>>>> +ubuntu-18.04.3-x86_64-clang:
>>>> + tags:
>>>> + - ubuntu_18.04.3
>>>> + - x86_64
>>>> + rules:
>>>> + - if: '$CI_COMMIT_REF_NAME == "staging"'
>>>> + script:
>>>> + #
>>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n31
>>>>
>>>> + - ./configure --disable-libssh --cc=clang --cxx=clang++
>>>> --enable-gtk --extra-cflags='-fsanitize=undefined
>>>> -fno-sanitize=shift-base -Werror'
>>>> + #
>>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n33
>>>>
>>>> + - make
>>>> + #
>>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n39
>>>>
>>>> + - make check V=1
>>>> +
>>>> +ubuntu-18.04.3-x86_64-tci:
>>>> + tags:
>>>> + - ubuntu_18.04.3
>>>> + - x86_64
>>>> + rules:
>>>> + - if: '$CI_COMMIT_REF_NAME == "staging"'
>>>> + script:
>>>> + #
>>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n33
>>>>
>>>> + - ./configure --disable-libssh --enable-debug
>>>> --enable-tcg-interpreter
>>>> + #
>>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n34
>>>>
>>>> + - make
>>>> +
>>>> +ubuntu-18.04.3-x86_64-notcg:
>>>> + tags:
>>>> + - ubuntu_18.04.3
>>>> + - x86_64
>>>> + rules:
>>>> + - if: '$CI_COMMIT_REF_NAME == "staging"'
>>>> + script:
>>>> + #
>>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n35
>>>>
>>>> + - ./configure --disable-libssh --enable-debug --disable-tcg
>>>> + #
>>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n35
>>>>
>>>> + - make
>>>> + #
>>>> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n39
>>>>
>>>> + # Question: check is disabled on the original script, because the
>>>> machine
>>>> + # is said to be running VirtualBox.  Should this be dropped or
>>>> should the
>>>> + # machine be tweaked or substituted?
>>>> + - make check V=1
>>>
>>> On another thread Thomas said he doesn't want to be responsible of
>>> other tests:
>>> https://www.mail-archive.com/qemu-devel@nongnu.org/msg670132.html
>>>
>>> We could move the set of tests converted from Peter personal
>>> testsuite into a separate YAML, so the interested (you Cleber, and
>>> Peter) can have a F: entry in MAINTAINERS for it:
>>
>>
>> I like that idea.
>>
>>
>>>
>>>
>>> include:
>>>   - local: '/.gitlab-ci-pm215.yml'
>>
>>
>> If so, I suggest moving the file to the .gitlab-ci.d directory
>> instead. Likewise the .gitlab-ci-edk2.yml file. This way the sources
>> root directory does not get infested of GitLab files.
> 
> Yes, +1. I'm pretty sure Thomas will like that too.

Sure. But I'd be also fine sharing or even completely handing over the
entry in MAINTAINERS for .gitlab-ci.yml to someone else. I'm only listed
there since I was initially the only one who was using the gitlab CI.
Now that there is interest for using gitlab CI as our gating CI, I think
it would be good to have some other people listed here, too...

 Thomas
Thomas Huth Feb. 7, 2020, 8:37 a.m. UTC | #7
On 03/02/2020 04.23, Cleber Rosa wrote:
> This is a crude and straightforward mapping of Peter's
> "remake-merge-builds" and "pull-buildtest" scripts.
> 
> Some characteristics were removed for simplicity sake (but eventually
> will), including:
>  * number of simultaneous make jobs
>  * make's synchronous output, not needed because of previous point
>  * out-of-tree builds
> 
> This covers the "x86-64 Linux with a variety of different build
> configs"[1].  I've personally tested all of them, and only had
> issues with the "notcg" job[2], but it seems to be a test specific
> issue with the nested KVM I was using.
> 
> [1] - https://wiki.qemu.org/Requirements/GatingCI#Current_Tests
> [2] - https://paste.centos.org/view/1dd43a1c
> 
> Signed-off-by: Cleber Rosa <crosa@redhat.com>
> ---
>  .gitlab-ci.yml | 116 +++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 116 insertions(+)

Thanks for doing this! The patch looks basically fine to me, but some
comments below...

> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> index d2c7d2198e..eb4077e2ab 100644
> --- a/.gitlab-ci.yml
> +++ b/.gitlab-ci.yml
> @@ -2,6 +2,8 @@ include:
>    - local: '/.gitlab-ci-edk2.yml'
>  
>  build-system1:
> + rules:
> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>   before_script: &before_scr_apt
>   - apt-get update -qq
>   - apt-get install -y -qq flex bison libglib2.0-dev libpixman-1-dev genisoimage
> @@ -17,6 +19,8 @@ build-system1:
>   - make -j2 check
>  
>  build-system2:
> + rules:
> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>   before_script:
>    *before_scr_apt
>   script:
> @@ -31,6 +35,8 @@ build-system2:
>   - make -j2 check
>  
>  build-disabled:
> + rules:
> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>   before_script:
>    *before_scr_apt
>   script:
> @@ -47,6 +53,8 @@ build-disabled:
>   - make -j2 check-qtest SPEED=slow
>  
>  build-tcg-disabled:
> + rules:
> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>   before_script:
>    *before_scr_apt
>   script:
> @@ -67,6 +75,8 @@ build-tcg-disabled:
>              248 250 254 255 256
>  
>  build-user:
> + rules:
> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>   before_script:
>    *before_scr_apt
>   script:
> @@ -78,6 +88,8 @@ build-user:
>   - make run-tcg-tests-i386-linux-user run-tcg-tests-x86_64-linux-user
>  
>  build-clang:
> + rules:
> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>   before_script:
>    *before_scr_apt
>   script:
> @@ -92,6 +104,8 @@ build-clang:
>   - make -j2 check
>  
>  build-tci:
> + rules:
> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>   before_script:
>    *before_scr_apt
>   script:

Question to Peter/Alex/Stefan/Howevermergespullreqsinthefuture:

Should the above jobs really be skipped for pull requests, or would it
be ok to include them there, too? (in the latter case, the above changes
could just be dropped)

> @@ -111,3 +125,105 @@ build-tci:
>   - QTEST_QEMU_BINARY="x86_64-softmmu/qemu-system-x86_64" ./tests/qtest/pxe-test
>   - QTEST_QEMU_BINARY="s390x-softmmu/qemu-system-s390x"
>     ./tests/qtest/pxe-test -m slow
> +
> +ubuntu-18.04.3-x86_64-notools:
> + tags:
> + - ubuntu_18.04.3
> + - x86_64
> + rules:
> + - if: '$CI_COMMIT_REF_NAME == "staging"'
> + script:
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n22

Line 22 currently seems to be disabled, so I think you could drop this job?

> + - ./configure --target-list=arm-softmmu --disable-tools --disable-libssh
> + # There is no make / make check in the "pull-buildtest" script for this.
> + # Question: should it at least be built? Or dropped?
> + - make
> +
> +ubuntu-18.04.3-x86_64-all-linux-static:
> + tags:
> + - ubuntu_18.04.3
> + - x86_64
> + rules:
> + - if: '$CI_COMMIT_REF_NAME == "staging"'
> + script:
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n25
> + - ./configure --enable-debug --static --disable-system --disable-glusterfs --disable-libssh
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n36
> + - make
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n45
> + - make check V=1
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n48
> + - make check-tcg V=1
> +
> +ubuntu-18.04.3-x86_64-all:
> + tags:
> + - ubuntu_18.04.3
> + - x86_64
> + rules:
> + - if: '$CI_COMMIT_REF_NAME == "staging"'
> + script:
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n26
> + - ./configure --disable-libssh
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n28
> + - make
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n37
> + - make check V=1
> +
> +ubuntu-18.04.3-x86_64-alldbg:
> + tags:
> + - ubuntu_18.04.3
> + - x86_64
> + rules:
> + - if: '$CI_COMMIT_REF_NAME == "staging"'
> + script:
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n27
> + - ./configure --disable-libssh
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n27
> + - make clean
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n29
> + - make
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n37
> + - make check V=1
> +
> +ubuntu-18.04.3-x86_64-clang:
> + tags:
> + - ubuntu_18.04.3
> + - x86_64
> + rules:
> + - if: '$CI_COMMIT_REF_NAME == "staging"'
> + script:
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n31
> + - ./configure --disable-libssh --cc=clang --cxx=clang++ --enable-gtk --extra-cflags='-fsanitize=undefined -fno-sanitize=shift-base -Werror'
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n33
> + - make
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n39
> + - make check V=1
> +
> +ubuntu-18.04.3-x86_64-tci:
> + tags:
> + - ubuntu_18.04.3
> + - x86_64
> + rules:
> + - if: '$CI_COMMIT_REF_NAME == "staging"'
> + script:
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n33
> + - ./configure --disable-libssh --enable-debug --enable-tcg-interpreter
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n34
> + - make

I think "make check" should now work with TCI, too, there was a fix for
it some months ago (commit 2f160e0f9797c7522bfd0d09218d0c9340a5137c).
At least it's worth a try to enable it...

Alternatively, I think we don't urgently need to introduce this job -
there is already "build-tci" in gitlab-ci.yml which should cover
--enable-tcg-interpreter already and does some testing, too.

> +
> +ubuntu-18.04.3-x86_64-notcg:
> + tags:
> + - ubuntu_18.04.3
> + - x86_64
> + rules:
> + - if: '$CI_COMMIT_REF_NAME == "staging"'
> + script:
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n35
> + - ./configure --disable-libssh --enable-debug --disable-tcg
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n35
> + - make
> + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n39
> + # Question: check is disabled on the original script, because the machine
> + # is said to be running VirtualBox.  Should this be dropped or should the
> + # machine be tweaked or substituted?
> + - make check V=1

Without TCG, you definitely need a host that can do KVM for running make
check.
Question for Peter: Would it be ok to drop this job and simply always
use the "build-tcg-disabled" job that is already available in
.gitlab-ci.yml ?

 Thomas
Thomas Huth Feb. 7, 2020, 10:05 a.m. UTC | #8
On 07/02/2020 09.37, Thomas Huth wrote:
> On 03/02/2020 04.23, Cleber Rosa wrote:
>> This is a crude and straightforward mapping of Peter's
>> "remake-merge-builds" and "pull-buildtest" scripts.
>>
>> Some characteristics were removed for simplicity sake (but eventually
>> will), including:
>>  * number of simultaneous make jobs
>>  * make's synchronous output, not needed because of previous point
>>  * out-of-tree builds
>>
>> This covers the "x86-64 Linux with a variety of different build
>> configs"[1].  I've personally tested all of them, and only had
>> issues with the "notcg" job[2], but it seems to be a test specific
>> issue with the nested KVM I was using.
>>
>> [1] - https://wiki.qemu.org/Requirements/GatingCI#Current_Tests
>> [2] - https://paste.centos.org/view/1dd43a1c
>>
>> Signed-off-by: Cleber Rosa <crosa@redhat.com>
>> ---
>>  .gitlab-ci.yml | 116 +++++++++++++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 116 insertions(+)
> 
> Thanks for doing this! The patch looks basically fine to me, but some
> comments below...
> 
>> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
>> index d2c7d2198e..eb4077e2ab 100644
>> --- a/.gitlab-ci.yml
>> +++ b/.gitlab-ci.yml
>> @@ -2,6 +2,8 @@ include:
>>    - local: '/.gitlab-ci-edk2.yml'
>>  
>>  build-system1:
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>   before_script: &before_scr_apt
>>   - apt-get update -qq
>>   - apt-get install -y -qq flex bison libglib2.0-dev libpixman-1-dev genisoimage
>> @@ -17,6 +19,8 @@ build-system1:
>>   - make -j2 check
>>  
>>  build-system2:
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>   before_script:
>>    *before_scr_apt
>>   script:
>> @@ -31,6 +35,8 @@ build-system2:
>>   - make -j2 check
>>  
>>  build-disabled:
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>   before_script:
>>    *before_scr_apt
>>   script:
>> @@ -47,6 +53,8 @@ build-disabled:
>>   - make -j2 check-qtest SPEED=slow
>>  
>>  build-tcg-disabled:
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>   before_script:
>>    *before_scr_apt
>>   script:
>> @@ -67,6 +75,8 @@ build-tcg-disabled:
>>              248 250 254 255 256
>>  
>>  build-user:
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>   before_script:
>>    *before_scr_apt
>>   script:
>> @@ -78,6 +88,8 @@ build-user:
>>   - make run-tcg-tests-i386-linux-user run-tcg-tests-x86_64-linux-user
>>  
>>  build-clang:
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>   before_script:
>>    *before_scr_apt
>>   script:
>> @@ -92,6 +104,8 @@ build-clang:
>>   - make -j2 check
>>  
>>  build-tci:
>> + rules:
>> + - if: '$CI_COMMIT_REF_NAME != "staging"'
>>   before_script:
>>    *before_scr_apt
>>   script:
> 
> Question to Peter/Alex/Stefan/Howevermergespullreqsinthefuture:
> 
> Should the above jobs really be skipped for pull requests, or would it
> be ok to include them there, too? (in the latter case, the above changes
> could just be dropped)

At least most of the hunks could be dropped - we should likely keep the
one for the job that runs additional iotests (i.e.
"build-tcg-disabled"), since the block layers folks don't want to see
additional iotests as a blocker for pull requests (we've had a lengthy
discussion about this last summer...)

>> +
>> +ubuntu-18.04.3-x86_64-notcg:
[...]
>> Question for Peter: Would it be ok to drop this job and simply always
>> use the "build-tcg-disabled" job that is already available in
>> .gitlab-ci.yml ?

If we do not run "build-tcg-disabled" for PRs, then this job should not
be dropped, of course.

 Thomas
Alex Bennée Feb. 7, 2020, 11:08 a.m. UTC | #9
Thomas Huth <thuth@redhat.com> writes:

> On 03/02/2020 04.23, Cleber Rosa wrote:
>> This is a crude and straightforward mapping of Peter's
>> "remake-merge-builds" and "pull-buildtest" scripts.
<snip>
>
> Thanks for doing this! The patch looks basically fine to me, but some
> comments below...
>
<snip>
>
> Question to Peter/Alex/Stefan/Howevermergespullreqsinthefuture:
>
> Should the above jobs really be skipped for pull requests, or would it
> be ok to include them there, too? (in the latter case, the above changes
> could just be dropped)

I think there is certainly value in having different stages of testing.
At least initially we'll want to match as closely to the current system
and then I imagine as we go on there will be trade-offs to be made in
how much is gating PRs and how much is retroactive and catches things
that slip through. While more testing is good we can't exponentially
grow what is reasonable to test for on all PRs.

<snip>
Peter Maydell Feb. 7, 2020, 4:26 p.m. UTC | #10
On Fri, 7 Feb 2020 at 08:37, Thomas Huth <thuth@redhat.com> wrote:
> Question to Peter/Alex/Stefan/Howevermergespullreqsinthefuture:
>
> Should the above jobs really be skipped for pull requests, or would it
> be ok to include them there, too? (in the latter case, the above changes
> could just be dropped)

I don't mind, as long as the CI run doesn't take more than (say)
1h to 1h30 elapsed time to complete from kicking it off to getting
all the results back. The specific set of x86 configs tested don't
really worry me (as long as we do have a reasonable spread):
the thing I really care about is that we get the multiple
host architectures and the BSDs into the test setup. (We already
have about five different ways of doing CI testing of x86 Linux
hosts, which is the least likely setup to break. It's the
other host configs that I'm really keen to see progress on
automation of, because that's what's really blocking us from
being able to move off my hand-coded scripting.)

In the long run we should probably aim for being consistent about
what we test between the pull-request tests and whatever the
'public-facing CI' part is.

> > +ubuntu-18.04.3-x86_64-notcg:
> > + tags:
> > + - ubuntu_18.04.3
> > + - x86_64
> > + rules:
> > + - if: '$CI_COMMIT_REF_NAME == "staging"'
> > + script:
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n35
> > + - ./configure --disable-libssh --enable-debug --disable-tcg
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n35
> > + - make
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n39
> > + # Question: check is disabled on the original script, because the machine
> > + # is said to be running VirtualBox.  Should this be dropped or should the
> > + # machine be tweaked or substituted?
> > + - make check V=1
>
> Without TCG, you definitely need a host that can do KVM for running make
> check.
> Question for Peter: Would it be ok to drop this job and simply always
> use the "build-tcg-disabled" job that is already available in
> .gitlab-ci.yml ?

If we have a CI setup where KVM reliably works then we should
ideally test a --disable-tcg setup somehow. Right now my pullreq
tests don't test that because I run them on my work desktop box
and (as the config says) sometimes I'm running VirtualBox which
causes KVM to fail -- but that should be irrelevant to our CI
runners...

thanks
-- PMM
Cleber Rosa Feb. 7, 2020, 7:27 p.m. UTC | #11
On Fri, Feb 07, 2020 at 04:26:53PM +0000, Peter Maydell wrote:
> On Fri, 7 Feb 2020 at 08:37, Thomas Huth <thuth@redhat.com> wrote:
> > Question to Peter/Alex/Stefan/Howevermergespullreqsinthefuture:
> >
> > Should the above jobs really be skipped for pull requests, or would it
> > be ok to include them there, too? (in the latter case, the above changes
> > could just be dropped)
> 
> I don't mind, as long as the CI run doesn't take more than (say)
> 1h to 1h30 elapsed time to complete from kicking it off to getting
> all the results back. The specific set of x86 configs tested don't
> really worry me (as long as we do have a reasonable spread):
> the thing I really care about is that we get the multiple
> host architectures and the BSDs into the test setup. (We already
> have about five different ways of doing CI testing of x86 Linux
> hosts, which is the least likely setup to break. It's the
> other host configs that I'm really keen to see progress on
> automation of, because that's what's really blocking us from
> being able to move off my hand-coded scripting.)
>

I can imagine how important the average runtime of those checks is to
Howevermergespullreqsnoworinthefuture.  Now, being a bit more selfish
or paranoid, I see the importance of separating those different types
of checks (pre-PR and others) until we achieve a stable environment
for the former.  I do see an extended amount of testing at every
stage as one of the later goals of this effort, but we have to match
that with both computing and human capacity.

In short, I'd suggest keeping them separate *for now*.

> In the long run we should probably aim for being consistent about
> what we test between the pull-request tests and whatever the
> 'public-facing CI' part is.
>

Right.  I think this will be an exercise in capacity planning, and
ideally, if there are no resource constraints, all checks could be
performed at all times.

> > > +ubuntu-18.04.3-x86_64-notcg:
> > > + tags:
> > > + - ubuntu_18.04.3
> > > + - x86_64
> > > + rules:
> > > + - if: '$CI_COMMIT_REF_NAME == "staging"'
> > > + script:
> > > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n35
> > > + - ./configure --disable-libssh --enable-debug --disable-tcg
> > > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n35
> > > + - make
> > > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n39
> > > + # Question: check is disabled on the original script, because the machine
> > > + # is said to be running VirtualBox.  Should this be dropped or should the
> > > + # machine be tweaked or substituted?
> > > + - make check V=1
> >
> > Without TCG, you definitely need a host that can do KVM for running make
> > check.
> > Question for Peter: Would it be ok to drop this job and simply always
> > use the "build-tcg-disabled" job that is already available in
> > .gitlab-ci.yml ?
> 
> If we have a CI setup where KVM reliably works then we should
> ideally test a --disable-tcg setup somehow. Right now my pullreq
> tests don't test that because I run them on my work desktop box
> and (as the config says) sometimes I'm running VirtualBox which
> causes KVM to fail -- but that should be irrelevant to our CI
> runners...
>

You got me confused here Peter.  Do you intend to reuse the same
machines you're using now (say your work desktop box) or is there an
expectation for different machines to be introduced and used for these
jobs?

> thanks
> -- PMM
> 

Thanks for the feedback,
- Cleber.
Cleber Rosa Feb. 7, 2020, 7:34 p.m. UTC | #12
On Mon, Feb 03, 2020 at 03:36:28PM -0200, Wainer dos Santos Moschetta wrote:
> Hi Cleber,
> 
> On 2/3/20 1:23 AM, Cleber Rosa wrote:
> > This is a crude and straightforward mapping of Peter's
> > "remake-merge-builds" and "pull-buildtest" scripts.
> > 
> > Some characteristics were removed for simplicity sake (but eventually
> > will), including:
> >   * number of simultaneous make jobs
> >   * make's synchronous output, not needed because of previous point
> >   * out-of-tree builds
> > 
> > This covers the "x86-64 Linux with a variety of different build
> > configs"[1].  I've personally tested all of them, and only had
> > issues with the "notcg" job[2], but it seems to be a test specific
> > issue with the nested KVM I was using.
> 
> 
> Could you put a comment in the commit text or in-code explaining why it
> builds QEMU with  --disable-libssh on all the jobs?
>

Yes, sure.  Answering it now, it's because of
https://bugs.launchpad.net/qemu/+bug/1838763, which was present
in tests/docker/dockerfiles/ubuntu1804.docker, and that I've hit
when I tried to be stubborn and ignore it. :)

> > 
> > [1] - https://wiki.qemu.org/Requirements/GatingCI#Current_Tests
> > [2] - https://paste.centos.org/view/1dd43a1c
> > 
> > Signed-off-by: Cleber Rosa <crosa@redhat.com>
> > ---
> >   .gitlab-ci.yml | 116 +++++++++++++++++++++++++++++++++++++++++++++++++
> >   1 file changed, 116 insertions(+)
> > 
> > diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> > index d2c7d2198e..eb4077e2ab 100644
> > --- a/.gitlab-ci.yml
> > +++ b/.gitlab-ci.yml
> > @@ -2,6 +2,8 @@ include:
> >     - local: '/.gitlab-ci-edk2.yml'
> >   build-system1:
> > + rules:
> > + - if: '$CI_COMMIT_REF_NAME != "staging"'
> >    before_script: &before_scr_apt
> >    - apt-get update -qq
> >    - apt-get install -y -qq flex bison libglib2.0-dev libpixman-1-dev genisoimage
> > @@ -17,6 +19,8 @@ build-system1:
> >    - make -j2 check
> >   build-system2:
> > + rules:
> > + - if: '$CI_COMMIT_REF_NAME != "staging"'
> >    before_script:
> >     *before_scr_apt
> >    script:
> > @@ -31,6 +35,8 @@ build-system2:
> >    - make -j2 check
> >   build-disabled:
> > + rules:
> > + - if: '$CI_COMMIT_REF_NAME != "staging"'
> >    before_script:
> >     *before_scr_apt
> >    script:
> > @@ -47,6 +53,8 @@ build-disabled:
> >    - make -j2 check-qtest SPEED=slow
> >   build-tcg-disabled:
> > + rules:
> > + - if: '$CI_COMMIT_REF_NAME != "staging"'
> >    before_script:
> >     *before_scr_apt
> >    script:
> > @@ -67,6 +75,8 @@ build-tcg-disabled:
> >               248 250 254 255 256
> >   build-user:
> > + rules:
> > + - if: '$CI_COMMIT_REF_NAME != "staging"'
> >    before_script:
> >     *before_scr_apt
> >    script:
> > @@ -78,6 +88,8 @@ build-user:
> >    - make run-tcg-tests-i386-linux-user run-tcg-tests-x86_64-linux-user
> >   build-clang:
> > + rules:
> > + - if: '$CI_COMMIT_REF_NAME != "staging"'
> >    before_script:
> >     *before_scr_apt
> >    script:
> > @@ -92,6 +104,8 @@ build-clang:
> >    - make -j2 check
> >   build-tci:
> > + rules:
> > + - if: '$CI_COMMIT_REF_NAME != "staging"'
> >    before_script:
> >     *before_scr_apt
> >    script:
> > @@ -111,3 +125,105 @@ build-tci:
> >    - QTEST_QEMU_BINARY="x86_64-softmmu/qemu-system-x86_64" ./tests/qtest/pxe-test
> >    - QTEST_QEMU_BINARY="s390x-softmmu/qemu-system-s390x"
> >      ./tests/qtest/pxe-test -m slow
> > +
> > +ubuntu-18.04.3-x86_64-notools:
> > + tags:
> > + - ubuntu_18.04.3
> > + - x86_64
> > + rules:
> > + - if: '$CI_COMMIT_REF_NAME == "staging"'
> > + script:
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n22
> > + - ./configure --target-list=arm-softmmu --disable-tools --disable-libssh
> > + # There is no make / make check in the "pull-buildtest" script for this.
> > + # Question: should it at least be built? Or dropped?
> > + - make
> > +
> > +ubuntu-18.04.3-x86_64-all-linux-static:
> 
> Doesn't it need to LD_PRELOAD on this runner too? ->
> 
> |https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n24
> |
> 
> > + tags:
> > + - ubuntu_18.04.3
> > + - x86_64
> > + rules:
> > + - if: '$CI_COMMIT_REF_NAME == "staging"'
> > + script:
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n25
> > + - ./configure --enable-debug --static --disable-system --disable-glusterfs --disable-libssh
> 
> Shouldn't it --disable-gnutls instead of --disable-glusterfs?
>

Actually, `--disable-glusterfs` was intended because I couldn't find
static versions of the glusterfs libs on that system (or maybe they're
not available anywhere).  That should be documented though.

Also, the build and make steps worked fine without `--disable-gnutls`.
I was trying to not carry over any "exception" type of arguments,
unless they proved to be necessary.  Maybe Peter can give some more
info about this (should it be kept or not)?

> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n36
> > + - make
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n45
> > + - make check V=1
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n48
> > + - make check-tcg V=1
> 
> 
> Any special reason to split it in 3 steps instead of a single `make check
> check-tcg`?
> 
> That pattern continues on next jobs...
> 
>

I think it's simply because it's easier to track the command that
failed on the GitLab CI output.

> > +
> > +ubuntu-18.04.3-x86_64-all:
> > + tags:
> > + - ubuntu_18.04.3
> > + - x86_64
> > + rules:
> > + - if: '$CI_COMMIT_REF_NAME == "staging"'
> > + script:
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n26
> > + - ./configure --disable-libssh
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n28
> > + - make
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n37
> > + - make check V=1
> > +
> > +ubuntu-18.04.3-x86_64-alldbg:
> > + tags:
> > + - ubuntu_18.04.3
> > + - x86_64
> > + rules:
> > + - if: '$CI_COMMIT_REF_NAME == "staging"'
> > + script:
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n27
> > + - ./configure --disable-libssh
> Missing --enable-debug, right?
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n27
> > + - make clean
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n29
> > + - make
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n37
> > + - make check V=1
> > +
> > +ubuntu-18.04.3-x86_64-clang:
> > + tags:
> > + - ubuntu_18.04.3
> > + - x86_64
> > + rules:
> > + - if: '$CI_COMMIT_REF_NAME == "staging"'
> > + script:
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n31
> > + - ./configure --disable-libssh --cc=clang --cxx=clang++ --enable-gtk --extra-cflags='-fsanitize=undefined -fno-sanitize=shift-base -Werror'
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n33
> > + - make
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n39
> > + - make check V=1
> > +
> > +ubuntu-18.04.3-x86_64-tci:
> > + tags:
> > + - ubuntu_18.04.3
> > + - x86_64
> > + rules:
> > + - if: '$CI_COMMIT_REF_NAME == "staging"'
> > + script:
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n33
> > + - ./configure --disable-libssh --enable-debug --enable-tcg-interpreter
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n34
> > + - make
> 
> Would make sense to add a commented `make check` entry as well?
> 
> https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n40
>

Not sure about that, but surely every one of those exceptions need to
be tracked.

- Cleber.
Cleber Rosa Feb. 7, 2020, 7:46 p.m. UTC | #13
On Fri, Feb 07, 2020 at 09:37:16AM +0100, Thomas Huth wrote:
> On 03/02/2020 04.23, Cleber Rosa wrote:
> > This is a crude and straightforward mapping of Peter's
> > "remake-merge-builds" and "pull-buildtest" scripts.
> > 
> > Some characteristics were removed for simplicity sake (but eventually
> > will), including:
> >  * number of simultaneous make jobs
> >  * make's synchronous output, not needed because of previous point
> >  * out-of-tree builds
> > 
> > This covers the "x86-64 Linux with a variety of different build
> > configs"[1].  I've personally tested all of them, and only had
> > issues with the "notcg" job[2], but it seems to be a test specific
> > issue with the nested KVM I was using.
> > 
> > [1] - https://wiki.qemu.org/Requirements/GatingCI#Current_Tests
> > [2] - https://paste.centos.org/view/1dd43a1c
> > 
> > Signed-off-by: Cleber Rosa <crosa@redhat.com>
> > ---
> >  .gitlab-ci.yml | 116 +++++++++++++++++++++++++++++++++++++++++++++++++
> >  1 file changed, 116 insertions(+)
> 
> Thanks for doing this! The patch looks basically fine to me, but some
> comments below...
> 
> > diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> > index d2c7d2198e..eb4077e2ab 100644
> > --- a/.gitlab-ci.yml
> > +++ b/.gitlab-ci.yml
> > @@ -2,6 +2,8 @@ include:
> >    - local: '/.gitlab-ci-edk2.yml'
> >  
> >  build-system1:
> > + rules:
> > + - if: '$CI_COMMIT_REF_NAME != "staging"'
> >   before_script: &before_scr_apt
> >   - apt-get update -qq
> >   - apt-get install -y -qq flex bison libglib2.0-dev libpixman-1-dev genisoimage
> > @@ -17,6 +19,8 @@ build-system1:
> >   - make -j2 check
> >  
> >  build-system2:
> > + rules:
> > + - if: '$CI_COMMIT_REF_NAME != "staging"'
> >   before_script:
> >    *before_scr_apt
> >   script:
> > @@ -31,6 +35,8 @@ build-system2:
> >   - make -j2 check
> >  
> >  build-disabled:
> > + rules:
> > + - if: '$CI_COMMIT_REF_NAME != "staging"'
> >   before_script:
> >    *before_scr_apt
> >   script:
> > @@ -47,6 +53,8 @@ build-disabled:
> >   - make -j2 check-qtest SPEED=slow
> >  
> >  build-tcg-disabled:
> > + rules:
> > + - if: '$CI_COMMIT_REF_NAME != "staging"'
> >   before_script:
> >    *before_scr_apt
> >   script:
> > @@ -67,6 +75,8 @@ build-tcg-disabled:
> >              248 250 254 255 256
> >  
> >  build-user:
> > + rules:
> > + - if: '$CI_COMMIT_REF_NAME != "staging"'
> >   before_script:
> >    *before_scr_apt
> >   script:
> > @@ -78,6 +88,8 @@ build-user:
> >   - make run-tcg-tests-i386-linux-user run-tcg-tests-x86_64-linux-user
> >  
> >  build-clang:
> > + rules:
> > + - if: '$CI_COMMIT_REF_NAME != "staging"'
> >   before_script:
> >    *before_scr_apt
> >   script:
> > @@ -92,6 +104,8 @@ build-clang:
> >   - make -j2 check
> >  
> >  build-tci:
> > + rules:
> > + - if: '$CI_COMMIT_REF_NAME != "staging"'
> >   before_script:
> >    *before_scr_apt
> >   script:
> 
> Question to Peter/Alex/Stefan/Howevermergespullreqsinthefuture:
> 
> Should the above jobs really be skipped for pull requests, or would it
> be ok to include them there, too? (in the latter case, the above changes
> could just be dropped)
> 
> > @@ -111,3 +125,105 @@ build-tci:
> >   - QTEST_QEMU_BINARY="x86_64-softmmu/qemu-system-x86_64" ./tests/qtest/pxe-test
> >   - QTEST_QEMU_BINARY="s390x-softmmu/qemu-system-s390x"
> >     ./tests/qtest/pxe-test -m slow
> > +
> > +ubuntu-18.04.3-x86_64-notools:
> > + tags:
> > + - ubuntu_18.04.3
> > + - x86_64
> > + rules:
> > + - if: '$CI_COMMIT_REF_NAME == "staging"'
> > + script:
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n22
> 
> Line 22 currently seems to be disabled, so I think you could drop this job?
>

I'd gladly drop it.  I think the reason I kept it was to hear from
Peter what to actually do about those commented out lines.

> > + - ./configure --target-list=arm-softmmu --disable-tools --disable-libssh
> > + # There is no make / make check in the "pull-buildtest" script for this.
> > + # Question: should it at least be built? Or dropped?
> > + - make
> > +
> > +ubuntu-18.04.3-x86_64-all-linux-static:
> > + tags:
> > + - ubuntu_18.04.3
> > + - x86_64
> > + rules:
> > + - if: '$CI_COMMIT_REF_NAME == "staging"'
> > + script:
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n25
> > + - ./configure --enable-debug --static --disable-system --disable-glusterfs --disable-libssh
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n36
> > + - make
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n45
> > + - make check V=1
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n48
> > + - make check-tcg V=1
> > +
> > +ubuntu-18.04.3-x86_64-all:
> > + tags:
> > + - ubuntu_18.04.3
> > + - x86_64
> > + rules:
> > + - if: '$CI_COMMIT_REF_NAME == "staging"'
> > + script:
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n26
> > + - ./configure --disable-libssh
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n28
> > + - make
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n37
> > + - make check V=1
> > +
> > +ubuntu-18.04.3-x86_64-alldbg:
> > + tags:
> > + - ubuntu_18.04.3
> > + - x86_64
> > + rules:
> > + - if: '$CI_COMMIT_REF_NAME == "staging"'
> > + script:
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n27
> > + - ./configure --disable-libssh
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n27
> > + - make clean
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n29
> > + - make
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n37
> > + - make check V=1
> > +
> > +ubuntu-18.04.3-x86_64-clang:
> > + tags:
> > + - ubuntu_18.04.3
> > + - x86_64
> > + rules:
> > + - if: '$CI_COMMIT_REF_NAME == "staging"'
> > + script:
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n31
> > + - ./configure --disable-libssh --cc=clang --cxx=clang++ --enable-gtk --extra-cflags='-fsanitize=undefined -fno-sanitize=shift-base -Werror'
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n33
> > + - make
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n39
> > + - make check V=1
> > +
> > +ubuntu-18.04.3-x86_64-tci:
> > + tags:
> > + - ubuntu_18.04.3
> > + - x86_64
> > + rules:
> > + - if: '$CI_COMMIT_REF_NAME == "staging"'
> > + script:
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n33
> > + - ./configure --disable-libssh --enable-debug --enable-tcg-interpreter
> > + # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n34
> > + - make
> 
> I think "make check" should now work with TCI, too, there was a fix for
> it some months ago (commit 2f160e0f9797c7522bfd0d09218d0c9340a5137c).
> At least it's worth a try to enable it...
>

I did try, and this is what I got:

ERROR:tests/qtest/prom-env-test.c:42:check_guest_memory: assertion failed (signature == MAGIC): (0x00000000 == 0xcafec0de)
ERROR - Bail out! ERROR:tests/qtest/prom-env-test.c:42:check_guest_memory: assertion failed (signature == MAGIC): (0x00000000 == 0xcafec0de)
/home/gitlab-runner/builds/E8tS7ajQ/0/crosa/qemu/tests/Makefile.include:629: recipe for target 'check-qtest-sparc64' failed
ERROR: Job failed: exit status 1

The full log can be found here: https://cleber.fedorapeople.org/ubuntu-18.04.3-x86_64-tci.txt

> Alternatively, I think we don't urgently need to introduce this job -
> there is already "build-tci" in gitlab-ci.yml which should cover
> --enable-tcg-interpreter already and does some testing, too.
>

OK, I'm fine with that, but I think Peter should have the final saying
here (as it's "his" job).

Thanks,
- Cleber.
Cleber Rosa Feb. 7, 2020, 7:59 p.m. UTC | #14
On Fri, Feb 07, 2020 at 11:08:15AM +0000, Alex Bennée wrote:
> 
> Thomas Huth <thuth@redhat.com> writes:
> 
> > On 03/02/2020 04.23, Cleber Rosa wrote:
> >> This is a crude and straightforward mapping of Peter's
> >> "remake-merge-builds" and "pull-buildtest" scripts.
> <snip>
> >
> > Thanks for doing this! The patch looks basically fine to me, but some
> > comments below...
> >
> <snip>
> >
> > Question to Peter/Alex/Stefan/Howevermergespullreqsinthefuture:
> >
> > Should the above jobs really be skipped for pull requests, or would it
> > be ok to include them there, too? (in the latter case, the above changes
> > could just be dropped)
> 
> I think there is certainly value in having different stages of testing.
> At least initially we'll want to match as closely to the current system

This would be my preferred approach too.  One type of change at a time
makes me feel much cosier :)

> and then I imagine as we go on there will be trade-offs to be made in
> how much is gating PRs and how much is retroactive and catches things
> that slip through. While more testing is good we can't exponentially
> grow what is reasonable to test for on all PRs.
>

Like I said elsewhere, if we have no constraints, we could test
everything everywhere.  I'm not that naive, and it should be obvious
that what I mean is that we can progressevely grow in coverage, until
we hit those limits.

Thanks,
- Cleber.

> <snip>
> 
> -- 
> Alex Bennée
>
Peter Maydell Feb. 8, 2020, 12:51 p.m. UTC | #15
On Fri, 7 Feb 2020 at 19:27, Cleber Rosa <crosa@redhat.com> wrote:
>
> On Fri, Feb 07, 2020 at 04:26:53PM +0000, Peter Maydell wrote:
> > If we have a CI setup where KVM reliably works then we should
> > ideally test a --disable-tcg setup somehow. Right now my pullreq
> > tests don't test that because I run them on my work desktop box
> > and (as the config says) sometimes I'm running VirtualBox which
> > causes KVM to fail -- but that should be irrelevant to our CI
> > runners...

> You got me confused here Peter.  Do you intend to reuse the same
> machines you're using now (say your work desktop box) or is there an
> expectation for different machines to be introduced and used for these
> jobs?

No, I specifically don't want the CI jobs to be running on my
work desktop, because that use of private-to-me machines is
one of the things that's blocking us from passing the pullreq
handling to a wider group of people.

The thing I was trying to say was that the reason why current
pullreq testing doesn't include a --disable-tcg is a pure
accident of the setup it's running in, not a deliberate decision
that we should not be testing that config. It would be better if we
did test it, and if the new CI setup allows us to test it then we
should.

thanks
-- PMM
Peter Maydell Feb. 8, 2020, 1:02 p.m. UTC | #16
On Fri, 7 Feb 2020 at 19:34, Cleber Rosa <crosa@redhat.com> wrote:
> Also, the build and make steps worked fine without `--disable-gnutls`.
> I was trying to not carry over any "exception" type of arguments,
> unless they proved to be necessary.  Maybe Peter can give some more
> info about this (should it be kept or not)?

A lot of those config options are random historical accident:
I probably added in the configure option to work around something
years back and then never bothered to undo it. I agree that if we
don't need to pass that option to run on whatever OS the CI
job is running on we shouldn't keep it.

More generally, I don't think we should worry much about
exactly replicating the fine detail of the various configurations I
currently run on x86. If we basically cover:
 * a debug build
 * a non-debug build
 * a linux-user --static build
 * a clang build with the sanitizers enabled [+]
 * windows crossbuilds
 * a --disable-tcg build
 * an --enable-tci-interpreter build
 * and at least one of the above is done as an "incremental"
   build and one as a "make clean and then build"
then that's the same coverage we have today.

[+] my scripts do this by hand by passing a lot of extra cflags,
but IIRC configure now supports a simple 'enable sanitizers'
option of some kind, which would be OK too

thanks
-- PMM
Cleber Rosa March 10, 2020, 3:53 a.m. UTC | #17
On Thu, Feb 06, 2020 at 02:05:04PM +0100, Philippe Mathieu-Daudé wrote:
> > 
> > On another thread Thomas said he doesn't want to be responsible of other
> > tests:
> > https://www.mail-archive.com/qemu-devel@nongnu.org/msg670132.html
> > 
> > We could move the set of tests converted from Peter personal testsuite
> > into a separate YAML, so the interested (you Cleber, and Peter) can have
> > a F: entry in MAINTAINERS for it:
> > 
> > include:
> >    - local: '/.gitlab-ci-pm215.yml'

Yep, I agree this is a good idea. I'll be following that pattern.

> 
> I'm not calling this file "pm215" because Peter owns it, but because it
> would contains all the tests Peter was running manually before we use GitLab
> as a gating CI.
> 
> 

One small difference is that I feel that Peter wants this to be
less about him, and more about a established set of jobs to gate on.

So, I'll be using the ".gitlab-ci-gating.yml" file name for now, unless
my perception is badly calibrated. :)

Thanks!
- Cleber.
Cleber Rosa March 10, 2020, 5:01 a.m. UTC | #18
On Sat, Feb 08, 2020 at 01:02:41PM +0000, Peter Maydell wrote:
> On Fri, 7 Feb 2020 at 19:34, Cleber Rosa <crosa@redhat.com> wrote:
> > Also, the build and make steps worked fine without `--disable-gnutls`.
> > I was trying to not carry over any "exception" type of arguments,
> > unless they proved to be necessary.  Maybe Peter can give some more
> > info about this (should it be kept or not)?
> 
> A lot of those config options are random historical accident:
> I probably added in the configure option to work around something
> years back and then never bothered to undo it. I agree that if we
> don't need to pass that option to run on whatever OS the CI
> job is running on we shouldn't keep it.
> 
> More generally, I don't think we should worry much about
> exactly replicating the fine detail of the various configurations I

OK, good to hear that.

> currently run on x86. If we basically cover:
>  * a debug build

Which should be covered by the following job (relevant snippets only):

ubuntu-18.04.3-x86_64-alldbg:
 ...
 - ./configure --enable-debug --disable-libssh
 - make clean
 - make
 - make check V=1

>  * a non-debug build

I assume the following is a suitable non-debug build:

ubuntu-18.04.3-x86_64-all:
 ...
 script:
 - ./configure --disable-libssh
 - make
 - make check V=1

>  * a linux-user --static build

This is roughly the job to fulfill this requirement:

ubuntu-18.04.3-x86_64-all-linux-static:
 ...
 # --disable-libssh is needed because of https://bugs.launchpad.net/qemu/+bug/1838763
 # --disable-glusterfs is needed because there's no static version of those libs in distro supplied packages
 - ./configure --enable-debug --static --disable-system --disable-glusterfs --disable-libssh
 - make
 - make check V=1
 - make check-tcg V=1

>  * a clang build with the sanitizers enabled [+]

I've tested the following which includes the sanitizers but drops the
'--enable-gtk' option:

ubuntu-18.04.3-x86_64-clang:
 ...
 - ./configure --disable-libssh --cc=clang --cxx=clang++ --enable-sanitizers
 - make
 - make check V=1

>  * windows crossbuilds

OK, there weren't any windows crossbuilds jobs in this version but I'm
adding them (32 and 64 bits).

>  * a --disable-tcg build

Which should be covered by the following job definition:

ubuntu-18.04.3-x86_64-notcg:
 ...
 - ./configure --disable-libssh --disable-tcg
 - make
 - make check V=1

>  * an --enable-tci-interpreter build

Which should be covered by:

ubuntu-18.04.3-x86_64-tci:
 ...
 - ./configure --disable-libssh --enable-tcg-interpreter
 - make

>  * and at least one of the above is done as an "incremental"
>    build and one as a "make clean and then build"

I'm not sure yet how to cleanly accomplish this.  IIRC it suggests
working with different versions of the code in a single job.
GitLab will usually give you the code matching the commit you're
testing.  I believe I could do something like:

 - git reset --hard HEAD~X
 - configure ...
 - make
 - git checkout $PREVIOUS_HEAD
 - make

But I'll have to experiment a bit more with it.

> then that's the same coverage we have today.
> 
> [+] my scripts do this by hand by passing a lot of extra cflags,
> but IIRC configure now supports a simple 'enable sanitizers'
> option of some kind, which would be OK too
> 
> thanks
> -- PMM
> 

Thanks for the very straight answers here.  I'll work
on those two remaining points (windows cross builds, and
incremental builds).

Please let me know if I misunderstood any of your points.

Thanks,
- Cleber.
Peter Maydell March 10, 2020, 9:30 a.m. UTC | #19
On Tue, 10 Mar 2020 at 05:01, Cleber Rosa <crosa@redhat.com> wrote:
> Thanks for the very straight answers here.  I'll work
> on those two remaining points (windows cross builds, and
> incremental builds).

I did wonder if incremental build was going to be awkward
to test in a CI setup.

Anyway, I think it would be good to start working with the
basic "do CI this way" framework now, rather than trying
to get all the test configs I have now working with it.
I can always run the builds through the new test setup
and in parallel do the handful of "not yet implemented in
the new setup" builds by hand with the old scripts.

thanks
-- PMM
diff mbox series

Patch

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d2c7d2198e..eb4077e2ab 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -2,6 +2,8 @@  include:
   - local: '/.gitlab-ci-edk2.yml'
 
 build-system1:
+ rules:
+ - if: '$CI_COMMIT_REF_NAME != "staging"'
  before_script: &before_scr_apt
  - apt-get update -qq
  - apt-get install -y -qq flex bison libglib2.0-dev libpixman-1-dev genisoimage
@@ -17,6 +19,8 @@  build-system1:
  - make -j2 check
 
 build-system2:
+ rules:
+ - if: '$CI_COMMIT_REF_NAME != "staging"'
  before_script:
   *before_scr_apt
  script:
@@ -31,6 +35,8 @@  build-system2:
  - make -j2 check
 
 build-disabled:
+ rules:
+ - if: '$CI_COMMIT_REF_NAME != "staging"'
  before_script:
   *before_scr_apt
  script:
@@ -47,6 +53,8 @@  build-disabled:
  - make -j2 check-qtest SPEED=slow
 
 build-tcg-disabled:
+ rules:
+ - if: '$CI_COMMIT_REF_NAME != "staging"'
  before_script:
   *before_scr_apt
  script:
@@ -67,6 +75,8 @@  build-tcg-disabled:
             248 250 254 255 256
 
 build-user:
+ rules:
+ - if: '$CI_COMMIT_REF_NAME != "staging"'
  before_script:
   *before_scr_apt
  script:
@@ -78,6 +88,8 @@  build-user:
  - make run-tcg-tests-i386-linux-user run-tcg-tests-x86_64-linux-user
 
 build-clang:
+ rules:
+ - if: '$CI_COMMIT_REF_NAME != "staging"'
  before_script:
   *before_scr_apt
  script:
@@ -92,6 +104,8 @@  build-clang:
  - make -j2 check
 
 build-tci:
+ rules:
+ - if: '$CI_COMMIT_REF_NAME != "staging"'
  before_script:
   *before_scr_apt
  script:
@@ -111,3 +125,105 @@  build-tci:
  - QTEST_QEMU_BINARY="x86_64-softmmu/qemu-system-x86_64" ./tests/qtest/pxe-test
  - QTEST_QEMU_BINARY="s390x-softmmu/qemu-system-s390x"
    ./tests/qtest/pxe-test -m slow
+
+ubuntu-18.04.3-x86_64-notools:
+ tags:
+ - ubuntu_18.04.3
+ - x86_64
+ rules:
+ - if: '$CI_COMMIT_REF_NAME == "staging"'
+ script:
+ # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n22
+ - ./configure --target-list=arm-softmmu --disable-tools --disable-libssh
+ # There is no make / make check in the "pull-buildtest" script for this.
+ # Question: should it at least be built? Or dropped?
+ - make
+
+ubuntu-18.04.3-x86_64-all-linux-static:
+ tags:
+ - ubuntu_18.04.3
+ - x86_64
+ rules:
+ - if: '$CI_COMMIT_REF_NAME == "staging"'
+ script:
+ # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n25
+ - ./configure --enable-debug --static --disable-system --disable-glusterfs --disable-libssh
+ # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n36
+ - make
+ # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n45
+ - make check V=1
+ # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n48
+ - make check-tcg V=1
+
+ubuntu-18.04.3-x86_64-all:
+ tags:
+ - ubuntu_18.04.3
+ - x86_64
+ rules:
+ - if: '$CI_COMMIT_REF_NAME == "staging"'
+ script:
+ # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n26
+ - ./configure --disable-libssh
+ # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n28
+ - make
+ # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n37
+ - make check V=1
+
+ubuntu-18.04.3-x86_64-alldbg:
+ tags:
+ - ubuntu_18.04.3
+ - x86_64
+ rules:
+ - if: '$CI_COMMIT_REF_NAME == "staging"'
+ script:
+ # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n27
+ - ./configure --disable-libssh
+ # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n27
+ - make clean
+ # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n29
+ - make
+ # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n37
+ - make check V=1
+
+ubuntu-18.04.3-x86_64-clang:
+ tags:
+ - ubuntu_18.04.3
+ - x86_64
+ rules:
+ - if: '$CI_COMMIT_REF_NAME == "staging"'
+ script:
+ # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n31
+ - ./configure --disable-libssh --cc=clang --cxx=clang++ --enable-gtk --extra-cflags='-fsanitize=undefined -fno-sanitize=shift-base -Werror'
+ # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n33
+ - make
+ # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n39
+ - make check V=1
+
+ubuntu-18.04.3-x86_64-tci:
+ tags:
+ - ubuntu_18.04.3
+ - x86_64
+ rules:
+ - if: '$CI_COMMIT_REF_NAME == "staging"'
+ script:
+ # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n33
+ - ./configure --disable-libssh --enable-debug --enable-tcg-interpreter
+ # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n34
+ - make
+
+ubuntu-18.04.3-x86_64-notcg:
+ tags:
+ - ubuntu_18.04.3
+ - x86_64
+ rules:
+ - if: '$CI_COMMIT_REF_NAME == "staging"'
+ script:
+ # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/remake-merge-builds#n35
+ - ./configure --disable-libssh --enable-debug --disable-tcg
+ # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n35
+ - make
+ # https://git.linaro.org/people/peter.maydell/misc-scripts.git/tree/pull-buildtest#n39
+ # Question: check is disabled on the original script, because the machine
+ # is said to be running VirtualBox.  Should this be dropped or should the
+ # machine be tweaked or substituted?
+ - make check V=1