.github/workflows: Adds build workflow

Signed-off-by: Savva Mitrofanov <savvamtr@gmail.com>
This commit is contained in:
Savva Mitrofanov 2023-01-17 16:43:34 +06:00
parent 2e8901738b
commit 63360b588f
No known key found for this signature in database
GPG Key ID: 774924031750BF64
3 changed files with 780 additions and 0 deletions

737
.github/workflows/build.yml vendored Normal file
View File

@ -0,0 +1,737 @@
name: Build
on:
push:
pull_request:
workflow_dispatch:
release:
types: [published]
env:
PROJECT_TYPE: UEFI
FORCE_INSTALL: 1
WERROR: 1
jobs:
build-macos:
name: macOS XCODE5
runs-on: macos-latest
env:
JOB_TYPE: BUILD
steps:
- uses: actions/checkout@v3
- name: Add Linux Toolchain
run: brew tap FiloSottile/homebrew-musl-cross
- name: Install Linux Toolchain
run: brew install musl-cross
env:
HOMEBREW_NO_INSTALL_CLEANUP: 1
HOMEBREW_NO_AUTO_UPDATE: 1
- name: Install Dependencies
run: brew install openssl mingw-w64
env:
HOMEBREW_NO_INSTALL_CLEANUP: 1
HOMEBREW_NO_AUTO_UPDATE: 1
- name: CI Bootstrap
run: |
src=$(/usr/bin/curl -Lfs https://raw.githubusercontent.com/acidanthera/ocbuild/master/ci-bootstrap.sh) && eval "$src" || exit 1
- name: Init UDK submodules
run: |
git submodule update --init --recursive
touch UDK.ready
- name: Prepare efibuild.sh
run: |
curl -o ./efibuild.sh https://raw.githubusercontent.com/acidanthera/ocbuild/master/efibuild.sh || exit 1
chmod +x ./efibuild.sh
ln -s `pwd` UDK
- name: Build Ext4Pkg
run: ./efibuild.sh
env:
SELFPKG: Ext4Pkg
ARCHS: IA32,X64
- name: Build FatPkg
if: always()
run: ./efibuild.sh
env:
SELFPKG: FatPkg
ARCHS: IA32,X64
- name: Build IntelFsp2Pkg
if: always()
run: ./efibuild.sh
env:
SELFPKG: IntelFsp2Pkg
ARCHS: IA32,X64
- name: Build IntelFsp2WrapperPkg
if: always()
run: ./efibuild.sh
env:
SELFPKG: IntelFsp2WrapperPkg
ARCHS: IA32,X64
- name: Build MdeModulePkg
if: always()
run: ./efibuild.sh
env:
SELFPKG: MdeModulePkg
ARCHS: IA32,X64
- name: Build MdePkg
if: always()
run: ./efibuild.sh
env:
SELFPKG: MdePkg
ARCHS: IA32,X64
- name: Build UefiCpuPkg
if: always()
run: ./efibuild.sh
env:
SELFPKG: UefiCpuPkg
ARCHS: IA32,X64
- name: Build UnitTestFrameworkPkg
if: always()
run: ./efibuild.sh
env:
SELFPKG: UnitTestFrameworkPkg
ARCHS: IA32,X64
- name: Build OvmfPkgIa32
if: always()
run: ./efibuild.sh
env:
SELFPKG: OvmfPkgIa32
SELFPKG_DIR: OvmfPkg
ARCHS: IA32
- name: Build OvmfPkgX64
if: always()
run: ./efibuild.sh
env:
SELFPKG: OvmfPkgX64
SELFPKG_DIR: OvmfPkg
ARCHS: X64
- name: Build OvmfPkgIa32X64
if: always()
run: ./efibuild.sh
env:
SELFPKG: OvmfPkgIa32X64
SELFPKG_DIR: OvmfPkg
ARCHS: X64
ARCHS_EXT: IA32
- name: Build UefiPayloadPkg with X64 PEI/DXE
if: always()
run: ./efibuild.sh
env:
SELFPKG: UefiPayloadPkg
ARCHS: X64
- name: Build UefiPayloadPkg with Ia32 PEI and X64 DXE
if: always()
run: ./efibuild.sh
env:
SELFPKG: UefiPayloadPkg
ARCHS: X64
ARCHS_EXT: IA32
- name: Build NetworkPkg
if: always()
run: ./efibuild.sh
env:
SELFPKG: NetworkPkg
ARCHS: IA32,X64
build-windows:
name: Windows VS2019
runs-on: windows-2019
env:
CC: gcc
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v3
- name: Install Dependencies
run: |
choco install make nasm zip --no-progress
choco install iasl --no-progress --version=2017.11.10
- name: CI Bootstrap
run: |
src=$(curl -Lfs https://raw.githubusercontent.com/acidanthera/ocbuild/master/ci-bootstrap.sh) && eval "$src" || exit 1
- name: Init UDK submodules
run: |
git submodule update --init --recursive
touch UDK.ready
- name: Prepare efibuild.sh
run: |
curl -o ./efibuild.sh https://raw.githubusercontent.com/acidanthera/ocbuild/master/efibuild.sh || exit 1
chmod +x ./efibuild.sh
cmd <<< "mklink /D .\\UDK .\\" > /dev/null
- name: Build Ext4Pkg
run: ./efibuild.sh
env:
SELFPKG: Ext4Pkg
ARCHS: IA32,X64
- name: Build FatPkg
if: always()
run: ./efibuild.sh
env:
SELFPKG: FatPkg
ARCHS: IA32,X64
- name: Build IntelFsp2Pkg
if: always()
run: ./efibuild.sh
env:
SELFPKG: IntelFsp2Pkg
ARCHS: IA32,X64
- name: Build IntelFsp2WrapperPkg
if: always()
run: ./efibuild.sh
env:
SELFPKG: IntelFsp2WrapperPkg
ARCHS: IA32,X64
- name: Build MdeModulePkg
if: always()
run: ./efibuild.sh
env:
SELFPKG: MdeModulePkg
ARCHS: IA32,X64
- name: Build MdePkg
if: always()
run: ./efibuild.sh
env:
SELFPKG: MdePkg
ARCHS: IA32,X64
- name: Build UefiCpuPkg
if: always()
run: ./efibuild.sh
env:
SELFPKG: UefiCpuPkg
ARCHS: IA32,X64
- name: Build UnitTestFrameworkPkg
if: always()
run: ./efibuild.sh
env:
SELFPKG: UnitTestFrameworkPkg
ARCHS: IA32,X64
- name: Build OvmfPkgIa32
if: always()
run: ./efibuild.sh
env:
SELFPKG: OvmfPkgIa32
SELFPKG_DIR: OvmfPkg
ARCHS: IA32
- name: Build OvmfPkgX64
if: always()
run: ./efibuild.sh
env:
SELFPKG: OvmfPkgX64
SELFPKG_DIR: OvmfPkg
ARCHS: X64
- name: Build OvmfPkgIa32X64
if: always()
run: ./efibuild.sh
env:
SELFPKG: OvmfPkgIa32X64
SELFPKG_DIR: OvmfPkg
ARCHS: X64
ARCHS_EXT: IA32
- name: Build UefiPayloadPkg with X64 PEI/DXE
if: always()
run: ./efibuild.sh
env:
SELFPKG: UefiPayloadPkg
ARCHS: X64
- name: Build UefiPayloadPkg with Ia32 PEI and X64 DXE
if: always()
run: ./efibuild.sh
env:
SELFPKG: UefiPayloadPkg
ARCHS: X64
ARCHS_EXT: IA32
- name: Build NetworkPkg
if: always()
run: ./efibuild.sh
env:
SELFPKG: NetworkPkg
ARCHS: IA32,X64
build-linux-clangpdb:
name: Linux CLANGPDB
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- name: Use Docker in rootless mode.
uses: ScribeMD/rootless-docker@0.2.2
- name: Build Ext4Pkg
run: docker compose run build-package
env:
SELFPKG: Ext4Pkg
SELFPKG_DIR: Ext4Pkg
TOOLCHAINS: CLANGPDB
ARCHS: IA32,X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build FatPkg
if: always()
run: docker compose run build-package
env:
SELFPKG: FatPkg
SELFPKG_DIR: FatPkg
TOOLCHAINS: CLANGPDB
ARCHS: IA32,X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build IntelFsp2Pkg
if: always()
run: docker compose run build-package
env:
SELFPKG: IntelFsp2Pkg
SELFPKG_DIR: IntelFsp2Pkg
TOOLCHAINS: CLANGPDB
ARCHS: IA32,X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build IntelFsp2WrapperPkg
if: always()
run: docker compose run build-package
env:
SELFPKG: IntelFsp2WrapperPkg
SELFPKG_DIR: IntelFsp2WrapperPkg
TOOLCHAINS: CLANGPDB
ARCHS: IA32,X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build MdeModulePkg
if: always()
run: docker compose run build-package
env:
SELFPKG: MdeModulePkg
SELFPKG_DIR: MdeModulePkg
TOOLCHAINS: CLANGPDB
ARCHS: IA32,X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build MdePkg
if: always()
run: docker compose run build-package
env:
SELFPKG: MdePkg
SELFPKG_DIR: MdePkg
TOOLCHAINS: CLANGPDB
ARCHS: IA32,X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build UefiCpuPkg
if: always()
run: docker compose run build-package
env:
SELFPKG: UefiCpuPkg
SELFPKG_DIR: UefiCpuPkg
TOOLCHAINS: CLANGPDB
ARCHS: IA32,X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build UnitTestFrameworkPkg
if: always()
run: docker compose run build-package
env:
SELFPKG: UnitTestFrameworkPkg
SELFPKG_DIR: UnitTestFrameworkPkg
TOOLCHAINS: CLANGPDB
ARCHS: IA32,X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build OvmfPkgIa32
if: always()
run: docker compose run build-package
env:
SELFPKG: OvmfPkgIa32
SELFPKG_DIR: OvmfPkg
TOOLCHAINS: CLANGPDB
ARCHS: IA32
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build OvmfPkgX64
if: always()
run: docker compose run build-package
env:
SELFPKG: OvmfPkgX64
SELFPKG_DIR: OvmfPkg
TOOLCHAINS: CLANGPDB
ARCHS: X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build OvmfPkgIa32X64
if: always()
run: docker compose run build-package
env:
SELFPKG: OvmfPkgIa32X64
SELFPKG_DIR: OvmfPkg
TOOLCHAINS: CLANGPDB
ARCHS: X64
ARCHS_EXT: IA32
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build UefiPayloadPkg with X64 PEI/DXE
if: always()
run: docker compose run build-package
env:
SELFPKG: UefiPayloadPkg
SELFPKG_DIR: UefiPayloadPkg
TOOLCHAINS: CLANGPDB
ARCHS: X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build UefiPayloadPkg with Ia32 PEI and X64 DXE
if: always()
run: docker compose run build-package
env:
SELFPKG: UefiPayloadPkg
SELFPKG_DIR: UefiPayloadPkg
TOOLCHAINS: CLANGPDB
ARCHS: X64
ARCHS_EXT: IA32
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build NetworkPkg
if: always()
run: docker compose run build-package
env:
SELFPKG: NetworkPkg
SELFPKG_DIR: NetworkPkg
TOOLCHAINS: CLANGPDB
ARCHS: IA32,X64
TARGETS: RELEASE,DEBUG,NOOPT
build-linux-clangdwarf:
name: Linux CLANGDWARF
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- name: Use Docker in rootless mode.
uses: ScribeMD/rootless-docker@0.2.2
- name: Build Ext4Pkg
run: docker compose run build-package
env:
SELFPKG: Ext4Pkg
SELFPKG_DIR: Ext4Pkg
TOOLCHAINS: CLANGDWARF
ARCHS: IA32,X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build FatPkg
if: always()
run: docker compose run build-package
env:
SELFPKG: FatPkg
SELFPKG_DIR: FatPkg
TOOLCHAINS: CLANGDWARF
ARCHS: IA32,X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build IntelFsp2Pkg
if: always()
run: docker compose run build-package
env:
SELFPKG: IntelFsp2Pkg
SELFPKG_DIR: IntelFsp2Pkg
TOOLCHAINS: CLANGDWARF
ARCHS: IA32,X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build IntelFsp2WrapperPkg
if: always()
run: docker compose run build-package
env:
SELFPKG: IntelFsp2WrapperPkg
SELFPKG_DIR: IntelFsp2WrapperPkg
TOOLCHAINS: CLANGDWARF
ARCHS: IA32,X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build MdeModulePkg
if: always()
run: docker compose run build-package
env:
SELFPKG: MdeModulePkg
SELFPKG_DIR: MdeModulePkg
TOOLCHAINS: CLANGDWARF
ARCHS: IA32,X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build MdePkg
if: always()
run: docker compose run build-package
env:
SELFPKG: MdePkg
SELFPKG_DIR: MdePkg
TOOLCHAINS: CLANGDWARF
ARCHS: IA32,X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build UefiCpuPkg
if: always()
run: docker compose run build-package
env:
SELFPKG: UefiCpuPkg
SELFPKG_DIR: UefiCpuPkg
TOOLCHAINS: CLANGDWARF
ARCHS: IA32,X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build UnitTestFrameworkPkg
if: always()
run: docker compose run build-package
env:
SELFPKG: UnitTestFrameworkPkg
SELFPKG_DIR: UnitTestFrameworkPkg
TOOLCHAINS: CLANGDWARF
ARCHS: IA32,X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build OvmfPkgIa32
if: always()
run: docker compose run build-package
env:
SELFPKG: OvmfPkgIa32
SELFPKG_DIR: OvmfPkg
TOOLCHAINS: CLANGDWARF
ARCHS: IA32
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build OvmfPkgX64
if: always()
run: docker compose run build-package
env:
SELFPKG: OvmfPkgX64
SELFPKG_DIR: OvmfPkg
TOOLCHAINS: CLANGDWARF
ARCHS: X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build OvmfPkgIa32X64
if: always()
run: docker compose run build-package
env:
SELFPKG: OvmfPkgIa32X64
SELFPKG_DIR: OvmfPkg
TOOLCHAINS: CLANGDWARF
ARCHS: X64
ARCHS_EXT: IA32
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build UefiPayloadPkg with X64 PEI/DXE
if: always()
run: docker compose run build-package
env:
SELFPKG: UefiPayloadPkg
SELFPKG_DIR: UefiPayloadPkg
TOOLCHAINS: CLANGDWARF
ARCHS: X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build UefiPayloadPkg with Ia32 PEI and X64 DXE
if: always()
run: docker compose run build-package
env:
SELFPKG: UefiPayloadPkg
SELFPKG_DIR: UefiPayloadPkg
TOOLCHAINS: CLANGDWARF
ARCHS: X64
ARCHS_EXT: IA32
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build NetworkPkg
if: always()
run: docker compose run build-package
env:
SELFPKG: NetworkPkg
SELFPKG_DIR: NetworkPkg
TOOLCHAINS: CLANGDWARF
ARCHS: IA32,X64
TARGETS: RELEASE,DEBUG,NOOPT
build-linux-gcc5:
name: Linux GCC5
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- name: Use Docker in rootless mode.
uses: ScribeMD/rootless-docker@0.2.2
- name: Build Ext4Pkg
run: docker compose run build-package
env:
SELFPKG: Ext4Pkg
SELFPKG_DIR: Ext4Pkg
TOOLCHAINS: GCC5
ARCHS: IA32,X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build FatPkg
if: always()
run: docker compose run build-package
env:
SELFPKG: FatPkg
SELFPKG_DIR: FatPkg
TOOLCHAINS: GCC5
ARCHS: IA32,X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build IntelFsp2Pkg
if: always()
run: docker compose run build-package
env:
SELFPKG: IntelFsp2Pkg
SELFPKG_DIR: IntelFsp2Pkg
TOOLCHAINS: GCC5
ARCHS: IA32,X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build IntelFsp2WrapperPkg
if: always()
run: docker compose run build-package
env:
SELFPKG: IntelFsp2WrapperPkg
SELFPKG_DIR: IntelFsp2WrapperPkg
TOOLCHAINS: GCC5
ARCHS: IA32,X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build MdeModulePkg
if: always()
run: docker compose run build-package
env:
SELFPKG: MdeModulePkg
SELFPKG_DIR: MdeModulePkg
TOOLCHAINS: GCC5
ARCHS: IA32,X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build MdePkg
if: always()
run: docker compose run build-package
env:
SELFPKG: MdePkg
SELFPKG_DIR: MdePkg
TOOLCHAINS: GCC5
ARCHS: IA32,X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build UefiCpuPkg
if: always()
run: docker compose run build-package
env:
SELFPKG: UefiCpuPkg
SELFPKG_DIR: UefiCpuPkg
TOOLCHAINS: GCC5
ARCHS: IA32,X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build UnitTestFrameworkPkg
if: always()
run: docker compose run build-package
env:
SELFPKG: UnitTestFrameworkPkg
SELFPKG_DIR: UnitTestFrameworkPkg
TOOLCHAINS: GCC5
ARCHS: IA32,X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build OvmfPkgIa32
if: always()
run: docker compose run build-package
env:
SELFPKG: OvmfPkgIa32
SELFPKG_DIR: OvmfPkg
TOOLCHAINS: GCC5
ARCHS: IA32
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build OvmfPkgX64
if: always()
run: docker compose run build-package
env:
SELFPKG: OvmfPkgX64
SELFPKG_DIR: OvmfPkg
TOOLCHAINS: GCC5
ARCHS: X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build OvmfPkgIa32X64
if: always()
run: docker compose run build-package
env:
SELFPKG: OvmfPkgIa32X64
SELFPKG_DIR: OvmfPkg
TOOLCHAINS: GCC5
ARCHS: X64
ARCHS_EXT: IA32
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build UefiPayloadPkg with X64 PEI/DXE
if: always()
run: docker compose run build-package
env:
SELFPKG: UefiPayloadPkg
SELFPKG_DIR: UefiPayloadPkg
TOOLCHAINS: GCC5
ARCHS: X64
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build UefiPayloadPkg with Ia32 PEI and X64 DXE
if: always()
run: docker compose run build-package
env:
SELFPKG: UefiPayloadPkg
SELFPKG_DIR: UefiPayloadPkg
TOOLCHAINS: GCC5
ARCHS: X64
ARCHS_EXT: IA32
TARGETS: RELEASE,DEBUG,NOOPT
- name: Build NetworkPkg
if: always()
run: docker compose run build-package
env:
SELFPKG: NetworkPkg
SELFPKG_DIR: NetworkPkg
TOOLCHAINS: GCC5
ARCHS: IA32,X64
TARGETS: RELEASE,DEBUG,NOOPT

View File

@ -0,0 +1,16 @@
FROM ubuntu:22.04
ARG OC_DEV_EDK2_LLVM_VER=15
ARG DEBIAN_FRONTEND=noninteractive
SHELL ["/bin/bash", "-c"]
RUN apt-get update
RUN [ "$(uname -m)" == "x86_64" ] && apt-get install -y gcc-multilib
RUN apt-get install -y lsb-release wget software-properties-common gnupg build-essential nasm uuid-dev libssl-dev iasl curl git zip && \
{ [ "$(dpkg --print-architecture)" == "amd64" ] || { apt-get install -y gcc-x86-64-linux-gnu && export GCC5_BIN=x86_64-linux-gnu- ; } ; } && echo "export GCC5_BIN=$GCC5_BIN" > ~/.edk2_rc.sh && echo ". ~/.edk2_rc.sh" > /etc/profile.d/edk2-gcc5.sh && \
wget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh && ./llvm.sh ${OC_DEV_EDK2_LLVM_VER} && rm -f llvm.sh && \
apt-get purge --auto-remove -y wget software-properties-common gnupg && \
rm -rf /var/lib/apt/lists/*
ENV PATH="$PATH:/usr/lib/llvm-${OC_DEV_EDK2_LLVM_VER}/bin"

27
docker-compose.yaml Executable file
View File

@ -0,0 +1,27 @@
name: audk
services:
dev-edk2:
build:
context: Dockerfiles/oc-dev-edk2
tags:
- "oc-dev-edk2"
build-package:
depends_on:
- dev-edk2
image: oc-dev-edk2
environment:
- ARCHS
- ARCHS_EXT
- SELFPKG
- SELFPKG_DIR
- TARGETS
- RTARGETS
- TOOLCHAINS
volumes:
- .:/com.docker.devenvironments.code
working_dir: /com.docker.devenvironments.code
entrypoint:
- /bin/bash
- -c
- "{ . ~/.edk2_rc.sh && eval \"$(/usr/bin/curl -Lfs https://raw.githubusercontent.com/acidanthera/ocbuild/master/ci-bootstrap.sh)\" && curl -o ./efibuild.sh \"https://raw.githubusercontent.com/acidanthera/ocbuild/build-plain-string-args/efibuild.sh\" && rm -f UDK && ln -s `pwd` UDK && touch UDK.ready && . ./efibuild.sh; } || exit 1"