Skip to content

U: actions build

U: actions build #28

Workflow file for this run

name: build
on:
push:
# branches: [ "notpresent" ]
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
# 版本发布上传liblcl二进制
- name: Release
uses: softprops/[email protected]
if: startsWith(github.ref, 'refs/tags/')
with:
files: D:/liblclbinary/**
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# ------------------------------------------------------------------------------------------
# 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"
# 版本发布上传liblcl二进制
- name: Release
uses: softprops/[email protected]
if: startsWith(github.ref, 'refs/tags/')
with:
files: D:/liblclbinary/**
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# ------------------------------------------------------------------------------------------
# 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.Linux64GTK2)
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.Linux64GTK2.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
# 版本发布上传liblcl二进制
- name: Release
uses: softprops/[email protected]
if: startsWith(github.ref, 'refs/tags/')
with:
files: "../liblclbinary/**"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# ------------------------------------------------------------------------------------------
# macos 当前使用 laz 2.2.6 构建
macos-amd-arm64:
runs-on: ${{ matrix.operating-system }}
strategy:
matrix:
operating-system: [ macos-12 ]
lazarus-versions: [ 2.2.6 ]
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
# 编译 liblcl :default
- name: Build Branch main for (liblcl.MacOSX64)
run: |
git clean -xdf
# git checkout origin/main
./shell/add-package.sh
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
# 版本发布上传liblcl二进制
- name: Release
uses: softprops/[email protected]
if: startsWith(github.ref, 'refs/tags/')
with:
files: "../liblclbinary/**"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# ------------------------------------------------------------------------------------------
# linux-aarch64
linux-aarch64:
runs-on: ${{ matrix.operating-system }}
name: Build on ${{ matrix.distro }} ${{ matrix.arch }}
strategy:
matrix:
operating-system: [ ubuntu-latest ]
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"
# 版本发布上传liblcl二进制
- name: Release
uses: softprops/[email protected]
if: startsWith(github.ref, 'refs/tags/')
with:
files: "../liblclbinary/**"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# 所有构建任务完成后运行的任务
lastrun:
needs: [ windows-64, windows-32, linux-amd64, macos-amd-arm64, linux-aarch64 ]
runs-on: ${{ matrix.operating-system }}
strategy:
matrix:
operating-system: [ ubuntu-latest ]
steps:
- uses: actions/checkout@v4
- name: Set Go Environment
uses: actions/setup-go@v3
with:
go-version: '1.18'
# 生成liblclbinres.go二进制的git ssh配置
- name: Generate binaries config
run: |
mkdir -p ~/.ssh/
echo "${{ secrets.RSA_PRIVATE_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ls -l ~/.ssh/id_rsa
echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
# 复制脚本工具到工作目录

Check failure on line 400 in .github/workflows/build.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/build.yml

Invalid workflow file

You have an error in your yaml syntax on line 400
- name: Copy Shell
run: |
cp ./shell/generate-download.sh $RUNNER_WORKSPACE
# cp ./shell/generate-bin.sh $RUNNER_WORKSPACE
cp ./shell/upload-liblcl.sh $RUNNER_WORKSPACE
cp ./shell/generate-md5.sh $RUNNER_WORKSPACE
cd $RUNNER_WORKSPACE
chmod +x ./generate-download.sh
# chmod +x ./generate-bin.sh
chmod +x ./upload-liblcl.sh
chmod +x ./generate-md5.sh
# 编译生成到liblclbinres.go二进制
# - name: Compress and generate binaries
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# run: |
# cd $RUNNER_WORKSPACE
# ./generate-bin.sh $RELEASE_VERSION $GITHUB_TOKEN
# 上传liblcl压缩包到服务器
- name: Upload liblcl to Energy Server
env:
# 在github仓库当前项目配置设置
AUTH_TOKEN: ${{ secrets.UPLOAD_LIBLCL_AUTH_TOKEN }}
UPLOAD_URL: ${{ secrets.UPLOAD_LIBLCL_URL }}
run: |
cd $RUNNER_WORKSPACE
# 上传至服务器, 服务器有校验
./upload-liblcl.sh $RELEASE_VERSION $AUTH_TOKEN $UPLOAD_URL
# 生成MD5
- name: Generate MD5 value
env:
# 在github仓库当前项目配置设置
AUTH_TOKEN: ${{ secrets.UPLOAD_LIBLCL_AUTH_TOKEN }}
UPLOAD_URL: ${{ secrets.UPLOAD_LIBLCL_URL }}
run: |
cp $RUNNER_WORKSPACE/generate-download.sh $HOME/golcl
cp $RUNNER_WORKSPACE/generate-md5.sh $HOME/golcl
cd $HOME/golcl
./generate-md5.sh $RELEASE_VERSION
# 将生成的md5.txt复制到/app目录下,方便后面使用
sudo mkdir /app/
sudo cp $HOME/golcl/md5.txt /app/
# 上传至服务器, 服务器有校验
echo "Upload md5.txt"
curl -F "liblcl=@/app/md5.txt" -F "token=${AUTH_TOKEN}" -F "version=${RELEASE_VERSION}" $UPLOAD_URL
# 传md5.txt到当前发布版本标签中,文件和内容
- name: Release
uses: softprops/[email protected]
if: startsWith(github.ref, 'refs/tags/')
with:
body_path: "/app/md5.txt"
files: "/app/md5.txt"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}