From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.groups.io with SMTP id smtpd.web11.26493.1669845724939925525 for ; Wed, 30 Nov 2022 14:02:05 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=COEszkxp; spf=pass (domain: redhat.com, ip: 170.10.129.124, mailfrom: osteffen@redhat.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1669845724; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type; bh=eRy6Zf6ajFiHC16R/JrEdB3/Cdy3Fiky8oBPtjB8dyE=; b=COEszkxp0Yce15mhayqqi6MCRJqbHr2ICVa8XmfgwLgQB0eJ8dMtkWexrDo66inb00oGJl kzx7NbUJaLAB658y5wsT8NWSGdaE36spVSFL0/h4n9i6xjodP5c4J1oDqyM7kXGXOQixzl D2otNQljAi9fKJehGJQwG+H4eay1qzk= Received: from mail-lj1-f197.google.com (mail-lj1-f197.google.com [209.85.208.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-321-eUP8HmA6PBeLTcyshqxdIA-1; Wed, 30 Nov 2022 17:01:35 -0500 X-MC-Unique: eUP8HmA6PBeLTcyshqxdIA-1 Received: by mail-lj1-f197.google.com with SMTP id a26-20020a2e861a000000b00279c9e137bcso612921lji.9 for ; Wed, 30 Nov 2022 14:01:34 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:mime-version:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=eRy6Zf6ajFiHC16R/JrEdB3/Cdy3Fiky8oBPtjB8dyE=; b=X4kngJ7pHlRbDsbrPn5bPeknDK3iwg+XRk80orbtvO+jVUIAoZKe8vovgMHTRZLvJQ pcXCXSXgwhI/k1JjFxgYu7Rrx9AMREbersGDyat1vVPKwjyJX58JNL6FuYvz86RbfzsU veTbvthMTsGu8OBjCRr0vzSaOoGc8MjoSVnnGFITolASRSpSWLefptvUqjyQy1j/x8Tk 6SWhq0CTEgRbJ9K+V52pqeBhTakyFGey1XrUN25k9SZZ3sxr1peCPKOPMD5MkyUG8qKA 1XeubRGzWTDExpMiuKjB//bMHgyEJ4QKZqM+sLlAvOdQlPBfm102M3ECInmTTq7Ls+/f P6+Q== X-Gm-Message-State: ANoB5pkyVDPVUugDg3vnblcQ5/iEEUAMrioAi6V3jlYgc81OI2Jg5RoZ qqFzwj/+d2bRXn8Lwe640kJcSfz+4OaQR05wlid360Yv+t6Mg4c9of2ZoppifCo66Im0xebY8R1 xWZ5ZO2GyHRnW+loyHO7tL48J7Yyk4Q== X-Received: by 2002:a19:5e50:0:b0:4b4:f19b:c155 with SMTP id z16-20020a195e50000000b004b4f19bc155mr11885760lfi.438.1669845692743; Wed, 30 Nov 2022 14:01:32 -0800 (PST) X-Google-Smtp-Source: AA0mqf695WyOCwrhfU7VIKo1/tyzLb9d6neOLqjoE9MMxtbgFt3V7fNkivyVaSQaKJzhPvz12Ww8h+PZqcG7t8gSzWk= X-Received: by 2002:a19:5e50:0:b0:4b4:f19b:c155 with SMTP id z16-20020a195e50000000b004b4f19bc155mr11885736lfi.438.1669845692368; Wed, 30 Nov 2022 14:01:32 -0800 (PST) Received: from 567203818698 named unknown by gmailapi.google.com with HTTPREST; Wed, 30 Nov 2022 14:01:31 -0800 From: "Oliver Steffen" X-Mailer: git-send-email 2.38.1 MIME-Version: 1.0 Date: Wed, 30 Nov 2022 14:01:31 -0800 Message-ID: Subject: [PATCH v9 00/12] CI: Use Fedora 35 container for Linux jobs To: devel@edk2.groups.io Cc: Andrew Fish , Ard Biesheuvel , Bob Feng , Daniel Schaefer , Gerd Hoffmann , Jiewen Yao , Jordan Justen , Leif Lindholm , Liming Gao , Michael D Kinney , Michael Kubacki , Ray Ni , Sami Mujawar , Sean Brogan , Sunil V L , Yuwei Chen , Zhiguang Liu , Pawel Polawski , Chris Fernald , Oliver Steffen , Ard Biesheuvel X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="UTF-8" Update CI, run all Linux (aka Ubuntu-GCC5) based jobs in custom containers. This decouples the CI environment from the virtual machine images that Azure DevOps provides. The currently used ubuntu-18.04 image has been deprecated for a while now and will finally be removed on Dec 1st 2022. The container image provides the required compiler toolchains and Qemu for the supported architectures. These are then no longer downloaded at runtime, avoiding CI failures due to download errors. This approach also makes it easier to switch to other or newer compilers. It makes the CI setup independent from the default images that Azure DevOps provides. It can also help debugging CI problems, because the CI environment can be reproduced on a local machine. The container images are hosted on ghcr.io and are automatically generated using GitHub Actions. The Dockerfiles are maintained in the Tianocore "containers" repository: https://github.com/tianocore/containers. The current image is based on Fedora 35, with gcc 11. Fedora was chosen because of its fast release cycle which makes it easy to keep the toolchains up-to-date. Some further possible changes not included in this series: - The Tianocore/containers repository provides stack of layered images. One image for general purpose (build+test) and build-only jobs. The build+test image is based on the build-only one and adds Qemu, for the testing job that involve Qemu. The work in the image side is done, we just need to change the CI setup accordingly. This patch set uses the build+test images for all jobs. - Further reduce the number of external dependencies that need to be downloaded at runtime. Candidates are iasl and nasm, which are already included in the image but not used yet. PR: https://github.com/tianocore/edk2/pull/3687 v9: - Drop the "Don't install cspell" patch - Use explicitly use ubuntu-22.04 as vm_image v8: - Use updated container image that contains gcc for LoongArch64. - Remove ext_dep files for the LoongArch64 gcc. - Don't change the scopes in .pytool/CISettings.py if running Linux CI it. - Split commits that touch multiple packages. - Use the smaller "build" image for jobs that allow it. - Add a CI template file as a central place to define the default Python version and use it where needed. v7: - Rebase to latest master branch. - Use latest Fedora 35 CI image. - Stop using the ubuntu-18.04 vm_image since this will no longer be available after Dec 1st. Use ubuntu-latest instead. v6: - Include suggestions by Chris Fernald. - Added a parameter for the container image to the job template, makes usage of containers optional. - Added a parameter to configure the Python version to download. Allows using Python from the VM/container image also. - Restructure the commits (no further functional changes). v5: - Update image v4: - Use the latest image from the tianocode/containers repository which - does not include acpica-tools - includes Pyhton 3.10 v3: - Use the latest image from the tianocode/containers repository which pins down version numbers of gcc, iasl, and nasm in the Dockerfile. v2: - Images are now hosted under the Tianocore Organization https://github.com/tianocore/containers v1: - Thread: https://edk2.groups.io/g/devel/message/89058 - Images were hosted at https://github.com/osteffenrh/edk2-build-images Signed-off-by: Oliver Steffen Acked-by: Ard Biesheuvel Acked-by: Gerd Hoffmann Reviewed-by: Chris Fernald Oliver Steffen (12): CI: make Python version configurable OvmfPkg: CI: use Python version from defaults template EmulatorPkg: CI: use Python version from defaults template CI: add ~/.local/bin to PATH (Linux only) CI: Allow running in a container. BaseTools: CI: Use Fedora 35 container (Linux only) ArmVirtPkg: CI: Use Fedora 35 container (Linux only) OvmfPkg: CI: Use Fedora 35 container (Linux only) EmulatorPkg: CI: Use Fedora 35 container (Linux only) .pytool: CISettings.py: don't add scopes for GCC CI: use latest vm_image (Linux only) do not merge: modify *.dsc to trigger CI ArmPkg/ArmPkg.dsc | 1 + .../ArmCrashDumpDxe/ArmCrashDumpDxe.dsc | 1 + ArmPlatformPkg/ArmPlatformPkg.dsc | 1 + ArmVirtPkg/ArmVirtCloudHv.dsc | 1 + ArmVirtPkg/ArmVirtKvmTool.dsc | 1 + ArmVirtPkg/ArmVirtQemu.dsc | 1 + ArmVirtPkg/ArmVirtQemuKernel.dsc | 1 + ArmVirtPkg/ArmVirtXen.dsc | 1 + CryptoPkg/CryptoPkg.dsc | 1 + CryptoPkg/Test/CryptoPkgHostUnitTest.dsc | 1 + DynamicTablesPkg/DynamicTablesPkg.dsc | 1 + EmbeddedPkg/EmbeddedPkg.dsc | 1 + EmulatorPkg/EmulatorPkg.dsc | 1 + FatPkg/FatPkg.dsc | 1 + FmpDevicePkg/FmpDevicePkg.dsc | 1 + FmpDevicePkg/Test/FmpDeviceHostPkgTest.dsc | 1 + IntelFsp2Pkg/IntelFsp2Pkg.dsc | 1 + IntelFsp2Pkg/Tools/Tests/QemuFspPkg.dsc | 1 + IntelFsp2WrapperPkg/IntelFsp2WrapperPkg.dsc | 1 + MdeModulePkg/MdeModulePkg.dsc | 1 + MdeModulePkg/Test/MdeModulePkgHostTest.dsc | 1 + MdePkg/MdePkg.dsc | 1 + MdePkg/Test/MdePkgHostTest.dsc | 1 + NetworkPkg/NetworkPkg.dsc | 1 + OvmfPkg/AmdSev/AmdSevX64.dsc | 1 + OvmfPkg/Bhyve/BhyveX64.dsc | 1 + OvmfPkg/CloudHv/CloudHvX64.dsc | 1 + OvmfPkg/IntelTdx/IntelTdxX64.dsc | 1 + OvmfPkg/Microvm/MicrovmX64.dsc | 1 + OvmfPkg/OvmfPkgIa32.dsc | 1 + OvmfPkg/OvmfPkgIa32X64.dsc | 1 + OvmfPkg/OvmfPkgX64.dsc | 1 + OvmfPkg/OvmfXen.dsc | 1 + PcAtChipsetPkg/PcAtChipsetPkg.dsc | 1 + PrmPkg/PrmPkg.dsc | 1 + PrmPkg/Test/PrmPkgHostTest.dsc | 1 + RedfishPkg/RedfishPkg.dsc | 1 + SecurityPkg/SecurityPkg.dsc | 1 + SecurityPkg/Test/SecurityPkgHostTest.dsc | 1 + ShellPkg/ShellPkg.dsc | 1 + SignedCapsulePkg/SignedCapsulePkg.dsc | 1 + SourceLevelDebugPkg/SourceLevelDebugPkg.dsc | 1 + StandaloneMmPkg/StandaloneMmPkg.dsc | 1 + UefiCpuPkg/Test/UefiCpuPkgHostTest.dsc | 1 + UefiCpuPkg/UefiCpuPkg.dsc | 1 + UefiPayloadPkg/UefiPayloadPkg.dsc | 1 + .../Test/UnitTestFrameworkPkgHostTest.dsc | 1 + UnitTestFrameworkPkg/UnitTestFrameworkPkg.dsc | 1 + .azurepipelines/Ubuntu-GCC5.yml | 2 ++ .azurepipelines/Windows-VS2019.yml | 4 ++++ .../templates/basetools-build-steps.yml | 9 -------- .azurepipelines/templates/defaults.yml | 3 +++ .../templates/platform-build-run-steps.yml | 12 +++++++++- .../templates/pr-gate-build-job.yml | 6 +++++ .azurepipelines/templates/pr-gate-steps.yml | 12 ++++++++-- .pytool/CISettings.py | 9 -------- .../.azurepipelines/Ubuntu-GCC5.yml | 9 ++++---- BaseTools/Bin/gcc_aarch64_linux_ext_dep.yaml | 21 ------------------ BaseTools/Bin/gcc_arm_linux_ext_dep.yaml | 21 ------------------ ...gcc_loongarch64_unknown_linux_ext_dep.yaml | 22 ------------------- .../Bin/gcc_riscv64_unknown_ext_dep.yaml | 22 ------------------- .../.azurepipelines/Ubuntu-GCC5.yml | 5 ++++- .../.azurepipelines/Windows-VS2019.yml | 4 ++++ .../.azurepipelines/Ubuntu-GCC5.yml | 9 ++++---- .../.azurepipelines/Windows-VS2019.yml | 5 +++++ 65 files changed, 105 insertions(+), 118 deletions(-) create mode 100644 .azurepipelines/templates/defaults.yml delete mode 100644 BaseTools/Bin/gcc_aarch64_linux_ext_dep.yaml delete mode 100644 BaseTools/Bin/gcc_arm_linux_ext_dep.yaml delete mode 100644 BaseTools/Bin/gcc_loongarch64_unknown_linux_ext_dep.yaml delete mode 100644 BaseTools/Bin/gcc_riscv64_unknown_ext_dep.yaml -- 2.38.1