U: workflows - add build test #5
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: build | |
on: | |
push: | |
branches: [ "main" ] | |
# tags: | |
# - 'v*.*.*' | |
jobs: | |
# windows 64 | |
windows-64: | |
runs-on: ${{ matrix.operating-system }} | |
strategy: | |
matrix: | |
operating-system: [ windows-2019 ] | |
lazarus-versions: [ 3.2 ] | |
steps: | |
- uses: actions/checkout@v4 | |
# 创建构建后的liblcl二进制压缩包存放目录和设置git仓库 | |
- name: Config liblcl | |
run: | | |
mkdir D:\liblclbinary | |
git config --global --add safe.directory .\ | |
git fetch | |
# Laz 环境 | |
- name: Lazarus Build Environment | |
uses: sxmxta/[email protected] | |
with: | |
lazarus-version: ${{ matrix.lazarus-versions }} | |
with-cache: false | |
# 编译 liblcl support windows7 64 :default | |
- name: Build Branch main To (liblcl.Windows64) | |
run: | | |
git clean -xdf | |
# git checkout origin/main | |
.\shell\add-package.bat | |
lazbuild.exe -B --bm=Win64 "src/liblcl.lpi" | |
7z a D:\liblclbinary\liblcl.Windows64.zip $HOME\golcl\liblcl.dll | |
# 编译 liblcl support windows7 64 | |
- name: Build Branch 109.1.18 To (liblcl-109.Windows64) | |
run: | | |
git clean -xdf | |
git checkout origin/109.1.18 | |
.\shell\add-package.bat | |
lazbuild.exe -B --bm=Win64 "src/liblcl.lpi" | |
7z a D:\liblclbinary\liblcl-109.Windows64.zip $HOME\golcl\liblcl.dll | |
# 编译 liblcl support flash | |
- name: Build Branch Flash-89.0.18 To (liblcl-87.Windows64) | |
run: | | |
git clean -xdf | |
git checkout origin/Flash-89.0.18 | |
.\shell\add-package.bat | |
lazbuild.exe -B --bm=Win64 "src/liblcl.lpi" | |
7z a D:\liblclbinary\liblcl-87.Windows64.zip $HOME\golcl\liblcl.dll | |
# ------------------------------------------------------------------------------------------ | |
# windows 32 | |
windows-32: | |
runs-on: ${{ matrix.operating-system }} | |
strategy: | |
matrix: | |
operating-system: [ windows-2019 ] | |
lazarus-versions: [ 3.2 ] | |
steps: | |
- uses: actions/checkout@v4 | |
# 创建构建后的liblcl二进制压缩包存放目录和设置git仓库 | |
- name: Config liblcl | |
run: | | |
mkdir D:\liblclbinary | |
git config --global --add safe.directory .\ | |
git fetch | |
# Laz 环境 | |
- name: Lazarus Build Environment | |
uses: sxmxta/[email protected] | |
with: | |
lazarus-version: ${{ matrix.lazarus-versions }} | |
with-cache: false | |
os-arch: i386 | |
# 编译 liblcl support windows 32 :default | |
- name: Build Branch main for (liblcl.Windows32) | |
run: | | |
git clean -xdf | |
# git checkout origin/main | |
.\shell\add-package.bat | |
lazbuild.exe -B --bm=Win32 "src/liblcl.lpi" | |
7z a "D:\liblclbinary\liblcl.Windows32.zip" "$HOME\golcl\liblcl.dll" | |
# 编译 liblcl support windows7 32 | |
- name: Build Branch 109.1.18 for (liblcl-109.Windows32) | |
run: | | |
git clean -xdf | |
git checkout origin/109.1.18 | |
.\shell\add-package.bat | |
lazbuild.exe -B --bm=Win32 "src/liblcl.lpi" | |
7z a "D:\liblclbinary\liblcl-109.Windows32.zip" "$HOME\golcl\liblcl.dll" | |
# 编译 liblcl support flash | |
- name: Build Branch Flash-89.0.18 for (liblcl-87.Windows32) | |
run: | | |
git clean -xdf | |
git checkout origin/Flash-89.0.18 | |
.\shell\add-package.bat | |
lazbuild.exe -B --bm=Win32 "src/liblcl.lpi" | |
7z a "D:\liblclbinary\liblcl-87.Windows32.zip" "$HOME\golcl\liblcl.dll" | |
# ------------------------------------------------------------------------------------------ | |
# linux | |
linux-amd64: | |
runs-on: ${{ matrix.operating-system }} | |
strategy: | |
matrix: | |
operating-system: [ ubuntu-20.04 ] | |
lazarus-versions: [ 3.2 ] | |
steps: | |
- uses: actions/checkout@v4 | |
# 创建构建后的liblcl二进制压缩包存放目录和设置git仓库 | |
# 同时构建所有 linux amd64 | |
- name: Config liblcl | |
run: | | |
mkdir $RUNNER_WORKSPACE/liblclbinary | |
git config --global --add safe.directory ./ | |
git fetch | |
chmod +x ./shell/add-package.sh | |
sudo apt-get install libgtk-3-dev | |
# Laz 环境 | |
- name: Lazarus Build Environment | |
uses: sxmxta/[email protected] | |
with: | |
lazarus-version: ${{ matrix.lazarus-versions }} | |
with-cache: false | |
# 编译 liblcl support Gtk3 :default | |
- name: Build Branch main for (liblcl.Linux64) | |
run: | | |
git clean -xdf | |
# git checkout origin/main | |
./shell/add-package.sh | |
lazbuild -B --bm=Linux64 --ws=gtk3 "src/liblcl.lpi" | |
zip -j $RUNNER_WORKSPACE/liblclbinary/liblcl.Linux64.zip $HOME/golcl/liblcl.so | |
# 编译 liblcl support Gtk2 | |
- name: Build Branch GTK2-106.1.1 for (liblcl-106.Linux64) | |
run: | | |
git clean -xdf | |
git checkout origin/GTK2-106.1.1 | |
./shell/add-package.sh | |
lazbuild -B --bm=Linux64 --ws=gtk2 "src/liblcl.lpi" | |
zip -j $RUNNER_WORKSPACE/liblclbinary/liblcl-106.Linux64.zip $HOME/golcl/liblcl.so | |
# 编译 liblcl support flash | |
- name: Build Branch Flash-89.0.18 for (liblcl-87.Linux64) | |
run: | | |
git clean -xdf | |
git checkout origin/Flash-89.0.18 | |
./shell/add-package.sh | |
lazbuild -B --bm=Linux64 --ws=gtk2 "src/liblcl.lpi" | |
zip -j $RUNNER_WORKSPACE/liblclbinary/liblcl-87.Linux64.zip $HOME/golcl/liblcl.so | |
# ------------------------------------------------------------------------------------------ | |
# macos 当前使用 laz 2.2.6 构建 | |
macos-amd-arm64: | |
runs-on: ${{ matrix.operating-system }} | |
strategy: | |
matrix: | |
operating-system: [ macos-12 ] | |
lazarus-versions: [ 3.2 ] | |
steps: | |
- uses: actions/checkout@v4 | |
# 创建构建后的liblcl二进制压缩包存放目录和设置git仓库 | |
- name: Config liblcl | |
run: | | |
mkdir $RUNNER_WORKSPACE/liblclbinary | |
git config --global --add safe.directory ./ | |
git fetch | |
chmod +x ./shell/add-package.sh | |
# Laz 环境 | |
- name: Lazarus Build Environment | |
uses: sxmxta/[email protected] | |
with: | |
lazarus-version: ${{ matrix.lazarus-versions }} | |
with-cache: false | |
# MacOS 给 Laz 执行权限 | |
- name: Lazarus execution permissions | |
run: | | |
mkdir ~/app | |
sudo cp -r /Applications/Lazarus ~/app | |
ls ~/app | |
sudo rm -rf /usr/local/bin/lazbuild | |
sudo ln -s ~/app/Lazarus/lazbuild /usr/local/bin/lazbuild | |
# 编译 liblcl :default | |
- name: Build Branch main for (liblcl.MacOSX64) | |
run: | | |
git clean -xdf | |
# git checkout origin/main | |
./shell/add-package.sh | |
sudo lazbuild -B --bm="MacOS64(cocoa)" --ws=cocoa "src/liblcl.lpi" | |
zip -j $RUNNER_WORKSPACE/liblclbinary/liblcl.MacOSX64.zip $HOME/golcl/liblcl.dylib | |
- name: Build Branch main for (liblcl.MacOS(arm64)) | |
run: | | |
lazbuild -B --bm="MacOS64(cocoa)ARM64" --ws=cocoa "src/liblcl.lpi" | |
zip -j $RUNNER_WORKSPACE/liblclbinary/liblcl.MacOSARM64.zip $HOME/golcl/liblcl.dylib | |
# 编译 liblcl support flash | |
- name: Build Branch Flash-89.0.18 for (liblcl-87.MacOSX) | |
run: | | |
git clean -xdf | |
git checkout origin/Flash-89.0.18 | |
./shell/add-package.sh | |
lazbuild -B --bm="MacOS64(cocoa)" --ws=cocoa "src/liblcl.lpi" | |
zip -j $RUNNER_WORKSPACE/liblclbinary/liblcl-87.MacOSX.zip $HOME/golcl/liblcl.dylib | |
# 编译 liblcl support flash | |
- name: Build Branch Flash-89.0.18 for (liblcl-87.MacOS(arm64)) | |
run: | | |
lazbuild -B --bm="MacOS64(cocoa)ARM64" --ws=cocoa "src/liblcl.lpi" | |
zip -j $RUNNER_WORKSPACE/liblclbinary/liblcl-87.MacOSARM64.zip $HOME/golcl/liblcl.dylib | |
# ------------------------------------------------------------------------------------------ | |
# linux-aarch64 | |
linux-aarch64: | |
runs-on: ${{ matrix.operating-system }} | |
name: Build on ${{ matrix.distro }} ${{ matrix.arch }} | |
strategy: | |
matrix: | |
operating-system: [ ubuntu-20.04 ] | |
lazarus-versions: [ 3.2 ] | |
include: | |
- arch: aarch64 | |
distro: ubuntu18.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Config liblcl | |
run: | | |
mkdir $RUNNER_WORKSPACE/liblclbinary | |
# Laz 环境 | |
- name: Lazarus Install Environment | |
uses: sxmxta/[email protected] | |
with: | |
lazarus-version: ${{ matrix.lazarus-versions }} | |
with-cache: false | |
os-arch: arm64 | |
# arch | |
- uses: uraimo/run-on-arch-action@v2 | |
name: Container Build Lazarus | |
id: build | |
with: | |
arch: ${{ matrix.arch }} | |
distro: ${{ matrix.distro }} | |
# 不需要,但可加快构建速度 | |
githubToken: ${{ github.token }} | |
# 创建工件目录app | |
#setup: | | |
# mkdir -p "$RUNNER_TEMP/app" | |
# 将目录装载为容器中的/app | |
dockerRunArgs: | | |
--volume "$RUNNER_WORKSPACE:/app" | |
# 将一些环境变量传递到容器 | |
# env: | | |
# artifact_name: git-${{ matrix.distro }}_${{ matrix.arch }} | |
# 在容器中运行命令的shell | |
shell: /bin/sh | |
#在容器中安装一些依赖项。如果 | |
#您也在使用githubToken。此处安装的任何依赖项都将 | |
#是缓存的容器映像的一部分,因此后续 | |
#构建不必重新安装它们。缓存图像层 | |
#在项目的包存储库中公开,因此 | |
#容器状态或日志中不存在机密。 | |
install: | | |
case "${{ matrix.distro }}" in | |
ubuntu*) | |
apt-get update -q -y | |
apt-get install -q -y git | |
apt-get install -q -y make binutils build-essential gdb subversion zip unzip libx11-dev libgtk2.0-dev libgdk-pixbuf2.0-dev libcairo2-dev libpango1.0-dev libgtk-3-dev | |
;; | |
esac | |
# run 要在容器中运行的命令,复制git文件到挂载的目录中 | |
run: | | |
#-- run 此处是在容器内运行命令,在--volume挂载了宿主机的工作目录为/app目录 | |
#-- 脚本赋予执行权限 | |
chmod +x /app/liblcl/shell/add-package-container.sh | |
chmod +x /app/liblcl/shell/build-linux.sh | |
#-- 进入fpc目录开始编译laz | |
cd /app/lazarus/fpc-3.2.2.aarch64-linux | |
#-- 执行安装fpc, esxu跳过用户交互输入 | |
./install.sh <<esxu | |
esxu | |
#-- 返回上级目录make lazarus | |
cd ../ | |
#-- 构建laz, 得到完整的lazarus, 使用lazbuild构建liblcl /app/lazarus/lazbuild | |
make clean all | |
#-- 开始编译liblcl | |
cd /app/liblcl | |
echo "ls -al" | |
ls -al | |
#-- 参数: $1:指定分枝 $2:arch $3:lazarus base dir | |
#-- 构建 support Gtk3 :default | |
./shell/build-linux.sh "main" "arm64" | |
#-- 构建 liblcl support Gtk2 | |
./shell/build-linux.sh "GTK2-106.1.1" "arm64" | |
#-- 构建 liblcl support Flash | |
./shell/build-linux.sh "Flash-89.0.18" "arm64" | |