Skip to content

perf(gt): improve compatibility #430

perf(gt): improve compatibility

perf(gt): improve compatibility #430

Workflow file for this run

name: container build and push
on:
push:
branches: [ "*" ]
tags: [ '*.*.*' ]
pull_request:
branches: [ "*" ]
env:
REGISTRY: ghcr.io
EULIX_REGISTRY: hub.eulix.xyz
HUAWEICLOUD_REGISTRY_SH: swr.cn-east-3.myhuaweicloud.com
HUAWEICLOUD_REGISTRY_BJ: swr.cn-north-4.myhuaweicloud.com
HUAWEICLOUD_REGISTRY_GZ: swr.cn-south-1.myhuaweicloud.com
HUAWEICLOUD_REGISTRY_HK: swr.ap-southeast-1.myhuaweicloud.com
HUAWEICLOUD_REGISTRY_SG: swr.ap-southeast-3.myhuaweicloud.com
HUAWEICLOUD_REGISTRY_AF: swr.af-south-1.myhuaweicloud.com
HUAWEICLOUD_REGISTRY_LA: swr.la-north-2.myhuaweicloud.com
IMAGE_NAME: ${{ github.repository }}
jobs:
build-windows:
runs-on: windows-latest
permissions:
contents: read
packages: write
id-token: write
steps:
- name: Configure Environment
shell: powershell
run: |-
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem' -Name 'LongPathsEnabled' -Value 1
git config --system core.longpaths true
echo "--------------------Install Microsoft.UI.Xaml-------------------"
$SourceUrl = "https://www.nuget.org/api/v2/package/Microsoft.UI.Xaml/2.7.3"
$DestinationFile = ".\microsoft.ui.xaml.2.7.3.zip" # 保存到当前目录并保持.nupkg扩展名
$ExtractDirectory = ".\uixaml"
# 创建目标解压目录(如果不存在)
if (!(Test-Path -Path $ExtractDirectory)) {
New-Item -ItemType Directory -Path $ExtractDirectory | Out-Null
}
# 下载.nupkg文件
Invoke-WebRequest -Uri $SourceUrl -OutFile $DestinationFile
# 解压.nupkg文件到指定目录(PowerShell 5.0及以上版本支持)
Expand-Archive -Path $DestinationFile -DestinationPath $ExtractDirectory
Copy-Item -Path .\uixaml\tools\AppX\x64\Release\Microsoft.UI.Xaml.2.7.appx -Destination .
Add-AppxPackage -Path .\Microsoft.UI.Xaml.2.7.appx
echo "------------------------Install vclibs--------------------------"
Invoke-WebRequest -Uri 'https://aka.ms/Microsoft.VCLibs.x64.14.00.Desktop.appx' -OutFile '.\Microsoft.VCLibs.x64.14.00.Desktop.appx'
Add-AppxPackage -Path .\Microsoft.VCLibs.x64.14.00.Desktop.appx
echo "---------------------Install winget------------------------"
Invoke-WebRequest -Uri 'https://github.com/microsoft/winget-cli/releases/download/v1.6.3421/65f132d72c1d44518a19d1a9c3de8e1f_License1.xml' -OutFile '.\65f132d72c1d44518a19d1a9c3de8e1f_License1.xml'
Invoke-WebRequest -Uri 'https://github.com/microsoft/winget-cli/releases/download/v1.6.3421/Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle' -OutFile '.\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle'
Add-AppxPackage .\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle
Add-AppxProvisionedPackage -Online -Package .\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle -LicensePath .\65f132d72c1d44518a19d1a9c3de8e1f_License1.xml
echo "---------------Install VisualStudio 2022---------------------- "
winget install --source winget --id Microsoft.VisualStudio.2022.Community --override "--quiet --add Microsoft.VisualStudio.Component.CoreEditor --add Microsoft.VisualStudio.Workload.CoreEditor --add Microsoft.VisualStudio.Component.TypeScript.TSServer --add Microsoft.VisualStudio.ComponentGroup.WebToolsExtensions --add Microsoft.VisualStudio.Component.JavaScript.TypeScript --add Microsoft.VisualStudio.Component.Roslyn.Compiler --add Microsoft.Component.MSBuild --add Microsoft.VisualStudio.Component.Roslyn.LanguageServices --add Microsoft.VisualStudio.Component.TextTemplating --add Microsoft.VisualStudio.Component.NuGet --add Microsoft.VisualStudio.Component.Debugger.JustInTime --add Component.Microsoft.VisualStudio.LiveShare.2022 --add Microsoft.VisualStudio.Component.IntelliCode --add Microsoft.VisualStudio.Component.VC.CoreIde --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --add Microsoft.VisualStudio.Component.Graphics.Tools --add Microsoft.VisualStudio.Component.VC.DiagnosticTools --add Microsoft.VisualStudio.Component.Windows11SDK.22621 --add Microsoft.VisualStudio.Component.VC.ATL --add Microsoft.VisualStudio.Component.SecurityIssueAnalysis --add Microsoft.VisualStudio.Component.VC.ATLMFC --add Microsoft.VisualStudio.Component.VC.Modules.x86.x64 --add Component.IncredibuildMenu --add Component.Incredibuild --add Microsoft.VisualStudio.Component.VC.Redist.14.Latest --add Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core --add Microsoft.VisualStudio.Component.Windows11Sdk.WindowsPerformanceToolkit --add Microsoft.VisualStudio.Component.CppBuildInsights --add Microsoft.VisualStudio.ComponentGroup.WebToolsExtensions.CMake --add Microsoft.VisualStudio.Component.VC.CMake.Project --add Microsoft.VisualStudio.Component.VC.TestAdapterForBoostTest --add Microsoft.VisualStudio.Component.VC.TestAdapterForGoogleTest --add Microsoft.VisualStudio.Component.VC.ASAN --add Microsoft.VisualStudio.Component.Vcpkg --add Microsoft.VisualStudio.Component.VC.Llvm.ClangToolset --add Microsoft.VisualStudio.Component.VC.Llvm.Clang --add Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Llvm.Clang --add Microsoft.VisualStudio.Workload.NativeDesktop"
winget install --source winget --id Microsoft.VisualStudio.2022.Community --override "--quiet --add Microsoft.VisualStudio.Component.CoreEditor --add Microsoft.VisualStudio.Workload.CoreEditor --add Microsoft.VisualStudio.Component.TypeScript.TSServer --add Microsoft.VisualStudio.ComponentGroup.WebToolsExtensions --add Microsoft.VisualStudio.Component.JavaScript.TypeScript --add Microsoft.VisualStudio.Component.Roslyn.Compiler --add Microsoft.Component.MSBuild --add Microsoft.VisualStudio.Component.Roslyn.LanguageServices --add Microsoft.VisualStudio.Component.TextTemplating --add Microsoft.VisualStudio.Component.NuGet --add Microsoft.VisualStudio.Component.Debugger.JustInTime --add Component.Microsoft.VisualStudio.LiveShare.2022 --add Microsoft.VisualStudio.Component.IntelliCode --add Microsoft.VisualStudio.Component.VC.CoreIde --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --add Microsoft.VisualStudio.Component.Graphics.Tools --add Microsoft.VisualStudio.Component.VC.DiagnosticTools --add Microsoft.VisualStudio.Component.Windows11SDK.22621 --add Microsoft.VisualStudio.Component.VC.ATL --add Microsoft.VisualStudio.Component.SecurityIssueAnalysis --add Microsoft.VisualStudio.Component.VC.ATLMFC --add Microsoft.VisualStudio.Component.VC.Modules.x86.x64 --add Component.IncredibuildMenu --add Component.Incredibuild --add Microsoft.VisualStudio.Component.VC.Redist.14.Latest --add Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core --add Microsoft.VisualStudio.Component.Windows11Sdk.WindowsPerformanceToolkit --add Microsoft.VisualStudio.Component.CppBuildInsights --add Microsoft.VisualStudio.ComponentGroup.WebToolsExtensions.CMake --add Microsoft.VisualStudio.Component.VC.CMake.Project --add Microsoft.VisualStudio.Component.VC.TestAdapterForBoostTest --add Microsoft.VisualStudio.Component.VC.TestAdapterForGoogleTest --add Microsoft.VisualStudio.Component.VC.ASAN --add Microsoft.VisualStudio.Component.Vcpkg --add Microsoft.VisualStudio.Component.VC.Llvm.ClangToolset --add Microsoft.VisualStudio.Component.VC.Llvm.Clang --add Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Llvm.Clang --add Microsoft.VisualStudio.Workload.NativeDesktop"
echo "----------------------Install sdk 8-------------------------------"
winget install --source winget --id Microsoft.DotNet.SDK.8
echo "----------------------Install DesktopRuntime.8--------------------------"
winget install --source winget --id Microsoft.DotNet.DesktopRuntime.8
echo "---------------------Install cmake--------------------------"
winget install --source winget --id Kitware.CMake -e
echo "--------------------Install Ninja-build.Ninja ---------------------------"
winget install --source winget --id Ninja-build.Ninja
echo "--------------------Waiting Install VisualStudio 2022--------------------------------- "
# 循环判断目录数量是否大于等于 14
$targetDirectory = "C:\Program Files\Microsoft Visual Studio\2022\Community"
while (!(Test-Path $targetDirectory)) {
Write-Host "The directory does not exist, wait for 1 minute..."
Start-Sleep -Seconds 60
}
while (((Get-ChildItem -Path $targetDirectory -Directory).Count -lt 14)) {
Write-Host "The number of directories is less than 14, wait for 1 minute...."
Start-Sleep -Seconds 60
}
Get-ChildItem -Path $targetDirectory
Write-Host "-------------------------Visual Studio 2022 installation completed----------------------------"
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: 'stable'
- name: Building Windows Package
shell: pwsh
run: |-
Rename-Item -Path 'D:\a\gt\gt\libcs\dep\_google-webrtc\src\third_party\llvm-build\Release+Asserts.win' -NewName 'D:\a\gt\gt\libcs\dep\_google-webrtc\src\third_party\llvm-build\Release+Asserts'
Get-ChildItem -Path 'D:\a\gt\gt\libcs\dep\_google-webrtc\src\third_party\llvm-build\'
Get-ChildItem -Path 'D:\a\gt\gt\libcs\dep\_google-webrtc\src\third_party\llvm-build\Release+Asserts\'
Invoke-WebRequest -Uri 'https://chrome-infra-packages.appspot.com/dl/gn/gn/windows-amd64/+/latest' -OutFile '.\gn-windows-amd64.zip'
Expand-Archive -Path '.\gn-windows-amd64.zip' -DestinationPath 'C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja'
Get-ChildItem -Path 'C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja\'
echo "-----------------------Compilation package---------------------"
& '.\build.ps1'
- name: Archive GT artifacts
uses: actions/upload-artifact@v3
with:
name: gt-windows
path: |
release/*
build-linux:
runs-on: ubuntu-22.04
permissions:
contents: read
packages: write
id-token: write
steps:
- name: clean-space
run: |-
sudo swapoff -a
sudo rm -rf /swapfile /usr/share/dotnet /usr/local/lib/android /opt/ghc
sudo apt clean
sudo df -Th
# steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: 'stable'
- name: package-gt
run: |-
sudo apt-get update && sudo apt-get install make git gn ninja-build python3 python3-pip libgtk-3-dev gcc-aarch64-linux-gnu g++-aarch64-linux-gnu gcc-x86-64-linux-gnu g++-x86-64-linux-gnu gcc-riscv64-linux-gnu g++-riscv64-linux-gnu rustc upx -y
rustup target add x86_64-unknown-linux-gnu aarch64-unknown-linux-gnu riscv64gc-unknown-linux-gnu
make
- name: Archive GT artifacts
uses: actions/upload-artifact@v3
with:
name: gt-linux
path: |
release/*
- name: clean-space
run: sudo rm -rf /home/runner/work/gt/gt/libcs/dep
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Setup Docker buildx
uses: docker/setup-buildx-action@v2
- run: echo "GITHUB_REPOSITORY_NAME=${GITHUB_REPOSITORY#*/}" >> $GITHUB_ENV
shell: bash
- name: Inspect builder
run: |
echo "Name: ${{ steps.buildx.outputs.name }}"
echo "Endpoint: ${{ steps.buildx.outputs.endpoint }}"
echo "Status: ${{ steps.buildx.outputs.status }}"
echo "Flags: ${{ steps.buildx.outputs.flags }}"
echo "Platforms: ${{ steps.buildx.outputs.platforms }}"
- name: Log into registry ${{ env.REGISTRY }}
if: github.event_name != 'pull_request'
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Log into registry ${{ env.EULIX_REGISTRY }}
if: github.event_name != 'pull_request'
uses: docker/login-action@v2
with:
registry: ${{ env.EULIX_REGISTRY }}
username: ${{ secrets.EULIX_REGISTRY_USERNAME }}
password: ${{ secrets.EULIX_REGISTRY_PASSWORD }}
- name: Log into registry Docker Hub
if: github.event_name != 'pull_request'
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_HUB_REGISTRY_USERNAME }}
password: ${{ secrets.DOCKER_HUB_REGISTRY_PASSWORD }}
- name: Log into registry ${{ env.HUAWEICLOUD_REGISTRY_SH }}
if: github.event_name != 'pull_request'
uses: docker/login-action@v2
with:
registry: ${{ env.HUAWEICLOUD_REGISTRY_SH }}
username: cn-east-3@${{ secrets.HUAWEICLOUD_USERNAME }}
password: ${{ secrets.HUAWEICLOUD_PASSWORD }}
- name: Log into registry ${{ env.HUAWEICLOUD_REGISTRY_BJ }}
if: github.event_name != 'pull_request'
uses: docker/login-action@v2
with:
registry: ${{ env.HUAWEICLOUD_REGISTRY_BJ }}
username: cn-north-4@${{ secrets.HUAWEICLOUD_USERNAME }}
password: ${{ secrets.HUAWEICLOUD_PASSWORD }}
- name: Log into registry ${{ env.HUAWEICLOUD_REGISTRY_GZ }}
if: github.event_name != 'pull_request'
uses: docker/login-action@v2
with:
registry: ${{ env.HUAWEICLOUD_REGISTRY_GZ }}
username: cn-south-1@${{ secrets.HUAWEICLOUD_USERNAME }}
password: ${{ secrets.HUAWEICLOUD_PASSWORD }}
- name: Log into registry ${{ env.HUAWEICLOUD_REGISTRY_SG }}
if: github.event_name != 'pull_request'
uses: docker/login-action@v2
with:
registry: ${{ env.HUAWEICLOUD_REGISTRY_SG }}
username: ap-southeast-3@${{ secrets.HUAWEICLOUD_USERNAME }}
password: ${{ secrets.HUAWEICLOUD_PASSWORD }}
- name: Log into registry ${{ env.HUAWEICLOUD_REGISTRY_HK }}
if: github.event_name != 'pull_request'
uses: docker/login-action@v2
with:
registry: ${{ env.HUAWEICLOUD_REGISTRY_HK }}
username: ap-southeast-1@${{ secrets.HUAWEICLOUD_USERNAME }}
password: ${{ secrets.HUAWEICLOUD_PASSWORD }}
- name: Log into registry ${{ env.HUAWEICLOUD_REGISTRY_AF }}
if: github.event_name != 'pull_request'
uses: docker/login-action@v2
with:
registry: ${{ env.HUAWEICLOUD_REGISTRY_AF }}
username: af-south-1@${{ secrets.HUAWEICLOUD_USERNAME }}
password: ${{ secrets.HUAWEICLOUD_PASSWORD }}
- name: Log into registry ${{ env.HUAWEICLOUD_REGISTRY_LA }}
if: github.event_name != 'pull_request'
uses: docker/login-action@v2
with:
registry: ${{ env.HUAWEICLOUD_REGISTRY_LA }}
username: la-north-2@${{ secrets.HUAWEICLOUD_USERNAME }}
password: ${{ secrets.HUAWEICLOUD_PASSWORD }}
- name: Extract Docker metadata for Server
id: meta-server
uses: docker/metadata-action@v2
with:
images: |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
${{ env.EULIX_REGISTRY }}/${{ env.IMAGE_NAME }}
aospace/${{ env.GITHUB_REPOSITORY_NAME }}
${{ env.HUAWEICLOUD_REGISTRY_SH }}/${{ env.IMAGE_NAME }}
${{ env.HUAWEICLOUD_REGISTRY_BJ }}/${{ env.IMAGE_NAME }}
${{ env.HUAWEICLOUD_REGISTRY_GZ }}/${{ env.IMAGE_NAME }}
${{ env.HUAWEICLOUD_REGISTRY_HK }}/${{ env.IMAGE_NAME }}
${{ env.HUAWEICLOUD_REGISTRY_SG }}/${{ env.IMAGE_NAME }}
${{ env.HUAWEICLOUD_REGISTRY_AF }}/${{ env.IMAGE_NAME }}
${{ env.HUAWEICLOUD_REGISTRY_LA }}/${{ env.IMAGE_NAME }}
flavor: |
prefix=server-
- name: Build and push Docker image for Server
id: build-and-push-server
uses: docker/[email protected]
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta-server.outputs.tags }}
labels: ${{ steps.meta-server.outputs.labels }}
builder: ${{ steps.buildx.outputs.name }}
platforms: linux/amd64,linux/arm64,linux/riscv64
cache-from: type=gha
cache-to: type=gha,mode=max
file: Dockerfile-server
provenance: false
- name: Extract Docker metadata for Client
id: meta-client
uses: docker/metadata-action@v2
with:
images: |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
${{ env.EULIX_REGISTRY }}/${{ env.IMAGE_NAME }}
aospace/${{ env.GITHUB_REPOSITORY_NAME }}
${{ env.HUAWEICLOUD_REGISTRY_SH }}/${{ env.IMAGE_NAME }}
${{ env.HUAWEICLOUD_REGISTRY_BJ }}/${{ env.IMAGE_NAME }}
${{ env.HUAWEICLOUD_REGISTRY_GZ }}/${{ env.IMAGE_NAME }}
${{ env.HUAWEICLOUD_REGISTRY_HK }}/${{ env.IMAGE_NAME }}
${{ env.HUAWEICLOUD_REGISTRY_SG }}/${{ env.IMAGE_NAME }}
${{ env.HUAWEICLOUD_REGISTRY_AF }}/${{ env.IMAGE_NAME }}
${{ env.HUAWEICLOUD_REGISTRY_LA }}/${{ env.IMAGE_NAME }}
flavor: |
prefix=client-
- name: Build and push Docker image for Client
id: build-and-push-client
uses: docker/[email protected]
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta-client.outputs.tags }}
labels: ${{ steps.meta-client.outputs.labels }}
builder: ${{ steps.buildx.outputs.name }}
platforms: linux/amd64,linux/arm64,linux/riscv64
cache-from: type=gha
cache-to: type=gha,mode=max
file: Dockerfile-client
provenance: false
- name: Extract Docker metadata for Server
id: meta-opensource-server
uses: docker/metadata-action@v2
with:
images: |
${{ env.EULIX_REGISTRY }}/cicada-private/aonetwork-server
flavor: |
prefix=opensource-server-
- name: Build and push Docker image for Server
id: build-and-push-opensource-server
uses: docker/build-push-action@v2
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta-opensource-server.outputs.tags }}
labels: ${{ steps.meta-opensource-server.outputs.labels }}
builder: ${{ steps.buildx.outputs.name }}
platforms: linux/amd64,linux/arm64,linux/riscv64
cache-from: type=gha
cache-to: type=gha,mode=max
file: Dockerfile-server
- name: Extract Docker metadata for Client
id: meta-opensource-client
uses: docker/metadata-action@v2
with:
images: |
${{ env.EULIX_REGISTRY }}/cicada-private/aonetwork-client
flavor: |
prefix=opensource-client-
- name: Build and push Docker image for Client
id: build-and-push-opensource-client
uses: docker/build-push-action@v2
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta-opensource-client.outputs.tags }}
labels: ${{ steps.meta-opensource-client.outputs.labels }}
builder: ${{ steps.buildx.outputs.name }}
platforms: linux/amd64,linux/arm64,linux/riscv64
cache-from: type=gha
cache-to: type=gha,mode=max
file: Dockerfile-client
build-macos:
runs-on: macos-14
permissions:
contents: read
packages: write
id-token: write
# steps:
# - name: space
# shell: bash
# run: |-
# sudo df -h
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: 'stable'
- name: package-gt
run: |-
brew install llvm@16 ninja
curl -LOJ https://chrome-infra-packages.appspot.com/dl/gn/gn/mac-amd64/+/latest
unzip gn-mac-amd64.zip
chmod +x gn && mv gn /opt/homebrew/opt/llvm@16/bin/
ln -s /opt/homebrew/opt/llvm@16 /opt/homebrew/opt/llvm
echo 'export PATH="/opt/homebrew/opt/llvm/bin:$PATH"' >> ~/.bash_profile
export PATH="/opt/homebrew/opt/make/libexec/gnubin:$PATH"
echo 'export PATH="/opt/homebrew/opt/binutils/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile
mv /opt/homebrew/opt/llvm/bin/llvm-libtool-darwin /opt/homebrew/opt/llvm/bin/libtool
rustup target add x86_64-apple-darwin aarch64-apple-darwin
cd ./libcs
TARGET=aarch64-apple-darwin GOOS=darwin GOARCH=arm64 arch -arch arm64 make release_lib
TARGET=x86_64-apple-darwin GOOS=darwin GOARCH=amd64 arch -arch x86_64 make release_lib
cd ..
cargo build --target aarch64-apple-darwin -r
cargo build --target x86_64-apple-darwin -r
mkdir -p release
cp target/aarch64-apple-darwin/release/gt release/gt-macos-aarch64
cp target/x86_64-apple-darwin/release/gt release/gt-macos-x86_64
- name: Archive GT artifacts
uses: actions/upload-artifact@v3
with:
name: gt-macos
path: |
release/*