On 2/23/21 5:47 PM, Cleber Rosa wrote: > On Tue, Feb 23, 2021 at 05:37:04PM +0100, Philippe Mathieu-Daudé wrote: >> On 2/23/21 12:25 PM, Thomas Huth wrote: >>> On 19/02/2021 22.58, Cleber Rosa wrote: >>>> As described in the included documentation, the "custom runner" jobs >>>> extend the GitLab CI jobs already in place. One of their primary >>>> goals of catching and preventing regressions on a wider number of host >>>> systems than the ones provided by GitLab's shared runners. >>>> >>>> This sets the stage in which other community members can add their own >>>> machine configuration documentation/scripts, and accompanying job >>>> definitions. As a general rule, those newly added contributed jobs >>>> should run as "non-gating", until their reliability is verified (AKA >>>> "allow_failure: true"). >>>> >>>> Signed-off-by: Cleber Rosa <cr...@redhat.com> >>>> --- >>>> .gitlab-ci.d/custom-runners.yml | 14 ++++++++++++++ >>>> .gitlab-ci.yml | 1 + >>>> docs/devel/ci.rst | 28 ++++++++++++++++++++++++++++ >>>> docs/devel/index.rst | 1 + >>>> 4 files changed, 44 insertions(+) >>>> create mode 100644 .gitlab-ci.d/custom-runners.yml >>>> create mode 100644 docs/devel/ci.rst >>>> >>>> diff --git a/.gitlab-ci.d/custom-runners.yml >>>> b/.gitlab-ci.d/custom-runners.yml >>>> new file mode 100644 >>>> index 0000000000..3004da2bda >>>> --- /dev/null >>>> +++ b/.gitlab-ci.d/custom-runners.yml >>>> @@ -0,0 +1,14 @@ >>>> +# The CI jobs defined here require GitLab runners installed and >>>> +# registered on machines that match their operating system names, >>>> +# versions and architectures. This is in contrast to the other CI >>>> +# jobs that are intended to run on GitLab's "shared" runners. >>>> + >>>> +# Different than the default approach on "shared" runners, based on >>>> +# containers, the custom runners have no such *requirement*, as those >>>> +# jobs should be capable of running on operating systems with no >>>> +# compatible container implementation, or no support from >>>> +# gitlab-runner. To avoid problems that gitlab-runner can cause while >>>> +# reusing the GIT repository, let's enable the recursive submodule >>>> +# strategy. >>>> +variables: >>>> + GIT_SUBMODULE_STRATEGY: recursive >>> >>> Is it really necessary? I thought our configure script would take care >>> of the submodules? >> > > I've done a lot of testing on bare metal systems, and the problems > that come from reusing the same system and failed cleanups can be very > frustrating. It's unfortunate that we need this, but it was the > simplest and most reliable solution I found. :/ > > Having said that, I noticed after I posted this series that this is > affecting all other jobs. We don't need it that in the jobs based > on containers (for obvious reasons), so I see two options: > > 1) have it enabled on all jobs for consistency > > 2) have it enabled only on jobs that will reuse the repo > >> Well, if there is a failure during the first clone (I got one network >> timeout in the middle)
[This network failure is pasted at the end] >> then next time it doesn't work: >> >> Updating/initializing submodules recursively... >> Synchronizing submodule url for 'capstone' >> Synchronizing submodule url for 'dtc' >> Synchronizing submodule url for 'meson' >> Synchronizing submodule url for 'roms/QemuMacDrivers' >> Synchronizing submodule url for 'roms/SLOF' >> Synchronizing submodule url for 'roms/edk2' >> Synchronizing submodule url for >> 'roms/edk2/ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3' >> Synchronizing submodule url for >> 'roms/edk2/BaseTools/Source/C/BrotliCompress/brotli' >> Synchronizing submodule url for >> 'roms/edk2/BaseTools/Source/C/BrotliCompress/brotli/research/esaxx' >> Synchronizing submodule url for >> 'roms/edk2/BaseTools/Source/C/BrotliCompress/brotli/research/libdivsufsort' >> Synchronizing submodule url for >> 'roms/edk2/CryptoPkg/Library/OpensslLib/openssl' >> Synchronizing submodule url for >> 'roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli' >> Synchronizing submodule url for >> 'roms/edk2/MdeModulePkg/Universal/RegularExpressionDxe/oniguruma' >> Synchronizing submodule url for >> 'roms/edk2/UnitTestFrameworkPkg/Library/CmockaLib/cmocka' >> Synchronizing submodule url for 'roms/ipxe' >> Synchronizing submodule url for 'roms/openbios' >> Synchronizing submodule url for 'roms/opensbi' >> Synchronizing submodule url for 'roms/qboot' >> Synchronizing submodule url for 'roms/qemu-palcode' >> Synchronizing submodule url for 'roms/seabios' >> Synchronizing submodule url for 'roms/seabios-hppa' >> Synchronizing submodule url for 'roms/sgabios' >> Synchronizing submodule url for 'roms/skiboot' >> Synchronizing submodule url for 'roms/u-boot' >> Synchronizing submodule url for 'roms/u-boot-sam460ex' >> Synchronizing submodule url for 'roms/vbootrom' >> Synchronizing submodule url for 'slirp' >> Synchronizing submodule url for 'tests/fp/berkeley-softfloat-3' >> Synchronizing submodule url for 'tests/fp/berkeley-testfloat-3' >> Synchronizing submodule url for 'ui/keycodemapdb' >> Entering 'capstone' >> Entering 'dtc' >> Entering 'meson' >> Entering 'roms/QemuMacDrivers' >> Entering 'roms/SLOF' >> Entering 'roms/edk2' >> Entering 'roms/edk2/ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3' >> Entering 'roms/edk2/BaseTools/Source/C/BrotliCompress/brotli' >> Entering 'roms/edk2/BaseTools/Source/C/BrotliCompress/brotli/research/esaxx' >> Entering >> 'roms/edk2/BaseTools/Source/C/BrotliCompress/brotli/research/libdivsufsort' >> Entering 'roms/edk2/CryptoPkg/Library/OpensslLib/openssl' >> Entering 'roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli' >> Entering 'roms/edk2/MdeModulePkg/Universal/RegularExpressionDxe/oniguruma' >> Entering 'roms/edk2/UnitTestFrameworkPkg/Library/CmockaLib/cmocka' >> Entering 'roms/ipxe' >> Entering 'roms/openbios' >> Entering 'roms/opensbi' >> Entering 'roms/qboot' >> Entering 'roms/qemu-palcode' >> Entering 'roms/seabios' >> Entering 'roms/seabios-hppa' >> Entering 'roms/sgabios' >> Entering 'roms/skiboot' >> Entering 'roms/u-boot' >> Entering 'roms/u-boot-sam460ex' >> Entering 'roms/vbootrom' >> Entering 'slirp' >> Entering 'tests/fp/berkeley-softfloat-3' >> Entering 'tests/fp/berkeley-testfloat-3' >> Entering 'ui/keycodemapdb' >> Entering 'capstone' >> HEAD is now at f8b1b833 fix CS_ mips_ OP structure comment error (#1674) >> Entering 'dtc' >> HEAD is now at 85e5d83 Makefile: when building libfdt only, do not add >> unneeded deps >> Entering 'meson' >> HEAD is now at 776acd2a8 Bump versions to 0.55.3 for release >> Entering 'roms/QemuMacDrivers' >> HEAD is now at 90c488d Merge pull request #3 from >> mcayland/fix/unbreak-256-color-mode >> Entering 'roms/SLOF' >> HEAD is now at e18ddad version: update to 20200717 >> Entering 'roms/edk2' >> HEAD is now at 06dc822d04 Revert ".pytool/EccCheck: Disable Ecc error >> code 10014 for open CI" >> Entering 'roms/edk2/ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3' >> HEAD is now at b64af41 Fix typo in function >> 'softfloat_propagateNaNF128M' for RISC-V. >> Entering 'roms/edk2/BaseTools/Source/C/BrotliCompress/brotli' >> HEAD is now at 666c328 Make types of variable match (#796) >> Entering 'roms/edk2/BaseTools/Source/C/BrotliCompress/brotli/research/esaxx' >> HEAD is now at ca7cb33 move to git >> Entering >> 'roms/edk2/BaseTools/Source/C/BrotliCompress/brotli/research/libdivsufsort' >> HEAD is now at 5f60d6f Merge pull request #7 from kloetzl/master >> Entering 'roms/edk2/CryptoPkg/Library/OpensslLib/openssl' >> Entering 'roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli' >> HEAD is now at 63be8a9 unichr was removed in Python 3 because all str >> are Unicode (#877) >> Entering 'roms/edk2/MdeModulePkg/Universal/RegularExpressionDxe/oniguruma' >> HEAD is now at b2c1da6 add ONIG_OPTION_CALLBACK_EACH_MATCH test >> Entering 'roms/edk2/UnitTestFrameworkPkg/Library/CmockaLib/cmocka' >> HEAD is now at 160dffe Don't use non-literal format strings >> Entering 'roms/ipxe' >> HEAD is now at 4bd064de [build] Fix building on older versions of gcc >> Entering 'roms/openbios' >> HEAD is now at 7f28286 PPC: mark first 4 pages of physical and virtual >> memory as unavailable >> Entering 'roms/opensbi' >> HEAD is now at a98258d include: Bump-up version to 0.8 >> Entering 'roms/qboot' >> HEAD is now at a5300c4 qboot: Disable PIE for ELF binary build step >> Entering 'roms/qemu-palcode' >> HEAD is now at bf0e136 Report machine checks to the kernel >> Entering 'roms/seabios' >> HEAD is now at 155821a docs: Note v1.14.0 release >> Entering 'roms/seabios-hppa' >> HEAD is now at 73b740f7 parisc: Set text planes and used_bits in STI fields >> Entering 'roms/sgabios' >> HEAD is now at cbaee52 SGABIOS: fix wrong video attrs for int 10h, ah==13h >> Entering 'roms/skiboot' >> HEAD is now at 3a6fdede skiboot v6.4 release notes >> Entering 'roms/u-boot' >> HEAD is now at d3689267f9 Prepare v2019.01 >> Entering 'roms/u-boot-sam460ex' >> HEAD is now at 60b3916 Add README to clarify relation to U-Boot and >> ACube's version >> Entering 'roms/vbootrom' >> HEAD is now at 0c37a43 Merge pull request #1 from google/disable-build-id >> Entering 'slirp' >> HEAD is now at 8f43a99 Merge branch 'stable-4.2' into 'stable-4.2' >> Entering 'tests/fp/berkeley-softfloat-3' >> HEAD is now at b64af41 Fix typo in function >> 'softfloat_propagateNaNF128M' for RISC-V. >> Entering 'tests/fp/berkeley-testfloat-3' >> HEAD is now at 5a59dce fail: constify fail_programName >> Entering 'ui/keycodemapdb' >> HEAD is now at 6119e6e Fix scan codes for Korean keys >> fatal: Needed a single revision >> Unable to find current revision in submodule path >> 'roms/edk2/CryptoPkg/Library/OpensslLib/openssl' >> Failed to recurse into submodule path 'roms/edk2' >> ERROR: Job failed: exit status 1 >> > > Yes, I've also found similar issues during my jobs. The problem with GIT_SUBMODULE_STRATEGY is it tries to clone submodules from submodules (here EDK2) which QEMU doesn't use: Submodule 'boringssl' (https://boringssl.googlesource.com/boringssl) registered for path 'roms/edk2/CryptoPkg/Library/OpensslLib/openssl/boringssl' Submodule 'krb5' (https://github.com/krb5/krb5) registered for path 'roms/edk2/CryptoPkg/Library/OpensslLib/openssl/krb5' Submodule 'pyca.cryptography' (https://github.com/pyca/cryptography.git) registered for path 'roms/edk2/CryptoPkg/Library/OpensslLib/openssl/pyca-cryptography' Cloning into '/var/lib/gitlab-runner/builds/shWMsY1a/0/philmd/qemu/roms/edk2/CryptoPkg/Library/OpensslLib/openssl/boringssl'... fatal: unable to access 'https://boringssl.googlesource.com/boringssl/': Failed to connect to boringssl.googlesource.com port 443: Connection timed out fatal: clone of 'https://boringssl.googlesource.com/boringssl' into submodule path '/var/lib/gitlab-runner/builds/shWMsY1a/0/philmd/qemu/roms/edk2/CryptoPkg/Library/OpensslLib/openssl/boringssl' failed Failed to clone 'boringssl'. Retry scheduled I don't think we want to clone the unused boringssl on QEMU namespace.