Skip to content

Commit

Permalink
Test ci
Browse files Browse the repository at this point in the history
  • Loading branch information
BAndysc committed Nov 17, 2024
1 parent 453d8e1 commit 4f8cc04
Show file tree
Hide file tree
Showing 3 changed files with 190 additions and 11 deletions.
150 changes: 150 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
name: Build Native AOT App

on:
push:
branches:
- ci
pull_request:
branches:
- ci

jobs:
build-windows-amd64:
runs-on: windows-latest

steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: '9.0.x'

- name: Build and Publish AvaloniaVisualBasic.Desktop (Windows)
run: dotnet publish AvaloniaVisualBasic.Desktop -f net9.0 -o bin/windows/ -p:PublishAot=true -p:PublishTrimmed=true

- name: Build and Publish AvaloniaVisualBasic.Standalone (Windows)
run: dotnet publish AvaloniaVisualBasic.Standalone -f net9.0 -o bin/windows/standalone/ -p:PublishAot=true -p:PublishTrimmed=true

- name: Remove Debug Symbols (Windows)
run: |
find ./bin/windows -name "*.pdb" -type f -delete
mv ./bin/windows/AvaloniaVisualBasic.Desktop.exe ./bin/windows/AvaloniaVisualBasic.exe
shell: bash

- name: Zip Windows Files
run: |
Compress-Archive -Path './bin/windows/*' -DestinationPath './bin/vb6-windows-amd64.zip'
shell: pwsh

- name: Upload Windows Artifacts
uses: actions/upload-artifact@v4
with:
name: windows-bin
path: ./bin/windows/

- name: Release
uses: softprops/action-gh-release@v2
with:
files: ./bin/vb6-windows-amd64.zip
name: Test Build
tag_name: v1
token: ${{ secrets.PAT }}

build-linux-amd64:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: '9.0.x'

- name: Build and Publish AvaloniaVisualBasic.Desktop (Linux)
run: dotnet publish AvaloniaVisualBasic.Desktop -f net9.0 -o bin/linux/ -p:PublishAot=true -p:PublishTrimmed=true

- name: Build and Publish AvaloniaVisualBasic.Standalone (Linux)
run: dotnet publish AvaloniaVisualBasic.Standalone -f net9.0 -o bin/linux/standalone/ -p:PublishAot=true -p:PublishTrimmed=true

- name: Remove Debug Symbols (Linux)
run: |
find ./bin/linux -name "*.dbg" -type f -delete
find ./bin/linux -name "*.pdb" -type f -delete
find ./bin/linux/standalone -name "*.so" -type f -delete
chmod +x ./bin/linux/AvaloniaVisualBasic.Desktop
chmod +x ./bin/linux/standalone/AvaloniaVisualBasic.Standalone
mv ./bin/linux/AvaloniaVisualBasic.Desktop ./bin/linux/AvaloniaVisualBasic
- name: Tar files
run: |
cd ./bin/linux
tar -cvf vb6-linux-amd64.tar *
gzip vb6-linux-amd64.tar
cd ../../
- name: Upload Linux Artifacts
uses: actions/upload-artifact@v4
with:
name: linux-bin
path: ./bin/linux/vb6-linux-amd64.tar.gz

- name: Release
uses: softprops/action-gh-release@v2
with:
files: ./bin/linux/vb6-linux-amd64.tar
name: Test Build
tag_name: v1
token: ${{ secrets.PAT }}

build-macos-arm64:
runs-on: macos-latest

steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: '9.0.x'

- name: Build and Publish AvaloniaVisualBasic.Desktop (macOS)
run: dotnet publish AvaloniaVisualBasic.Desktop -f net9.0 -o bin/macos/ -p:PublishAot=true -p:PublishTrimmed=true

- name: Build and Publish AvaloniaVisualBasic.Standalone (macOS)
run: dotnet publish AvaloniaVisualBasic.Standalone -f net9.0 -o bin/macos/standalone/ -p:PublishAot=true -p:PublishTrimmed=true

- name: Remove Debug Symbols (macOS)
run: |
find ./bin/macos -name "*.dbg" -type f -delete
find ./bin/macos -name "*.pdb" -type f -delete
find ./bin/macos -name "*.dSYM" -type d -exec rm -rf {} +
find ./bin/macos/standalone -name "*.dylib" -type f -delete
chmod +x ./bin/macos/AvaloniaVisualBasic.Desktop
chmod +x ./bin/macos/standalone/AvaloniaVisualBasic.Standalone
mv ./bin/macos/AvaloniaVisualBasic.Desktop ./bin/macos/AvaloniaVisualBasic
- name: Tar files
run: |
cd ./bin/macos
tar -cvf vb6-macos-arm64.tar *
gzip vb6-macos-arm64.tar
cd ../../
- name: Upload macOS Artifacts
uses: actions/upload-artifact@v4
with:
name: macos-bin
path: ./bin/macos/vb6-macos-arm64.tar

- name: Release
uses: softprops/action-gh-release@v2
with:
files: ./bin/macos/vb6-macos-arm64.tar.gz
name: Test Build
tag_name: v1
token: ${{ secrets.PAT }}
1 change: 1 addition & 0 deletions AvaloniaVisualBasic.sln
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "meta", "meta", "{6151C731-2
README.md = README.md
LICENSE = LICENSE
build_cloudflare.sh = build_cloudflare.sh
.github\workflows\publish.yml = .github\workflows\publish.yml
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvaloniaVisualBasic.Standalone", "AvaloniaVisualBasic.Standalone\AvaloniaVisualBasic.Standalone.csproj", "{0C6BC133-E273-4716-83D1-4FD1B0C14E19}"
Expand Down
50 changes: 39 additions & 11 deletions AvaloniaVisualBasic/Projects/ProjectService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,23 @@ public async Task EditProjectComponents(ProjectDefinition project)
}

public async Task MakeProject(ProjectDefinition projectDefinition)
{
try
{
await MakeProjectInternal(projectDefinition);
}
catch (OperationCanceledException)
{
throw;
}
catch (Exception e)
{
await windowManager.MessageBox("Fatal error while making the project:\n" + e.Message, icon: MessageBoxIcon.Information);
throw;
}
}

private async Task MakeProjectInternal(ProjectDefinition projectDefinition)
{
if (OperatingSystem.IsBrowser())
{
Expand All @@ -264,26 +281,35 @@ public async Task MakeProject(ProjectDefinition projectDefinition)
if (exePath == null)
throw new OperationCanceledException();

List<FileInfo> requiredNativeFiles;
List<FileInfo[]> requiredNativeFiles;

if (OperatingSystem.IsWindows())
{
requiredNativeFiles =
[
new FileInfo("standalone/av_libglesv2.dll"),
new FileInfo("standalone/AvaloniaVisualBasic.Standalone.exe"),
new FileInfo("standalone/libHarfBuzzSharp.dll"),
new FileInfo("standalone/libSkiaSharp.dll")
[new FileInfo("standalone/av_libglesv2.dll"), new FileInfo("av_libglesv2.dll")],
[new FileInfo("standalone/AvaloniaVisualBasic.Standalone.exe")],
[new FileInfo("standalone/libHarfBuzzSharp.dll"), new FileInfo("libHarfBuzzSharp.dll")],
[new FileInfo("standalone/libSkiaSharp.dll"), new FileInfo("libSkiaSharp.dll")]
];
}
else if (OperatingSystem.IsMacOS())
{
requiredNativeFiles =
[
new FileInfo("standalone/libAvaloniaNative.dylib"),
new FileInfo("standalone/AvaloniaVisualBasic.Standalone"),
new FileInfo("standalone/libHarfBuzzSharp.dylib"),
new FileInfo("standalone/libSkiaSharp.dylib")
[new FileInfo("standalone/libAvaloniaNative.dylib"), new FileInfo("libAvaloniaNative.dylib")],
[new FileInfo("standalone/AvaloniaVisualBasic.Standalone")],
[new FileInfo("standalone/libHarfBuzzSharp.dylib"), new FileInfo("libHarfBuzzSharp.dylib")],
[new FileInfo("standalone/libSkiaSharp.dylib"), new FileInfo("libSkiaSharp.dylib")]
];
}
else if (OperatingSystem.IsLinux())
{
requiredNativeFiles =
[
[new FileInfo("standalone/AvaloniaVisualBasic.Standalone")],
[new FileInfo("standalone/libHarfBuzzSharp.so"), new FileInfo("libHarfBuzzSharp.so")],
[new FileInfo("standalone/libSkiaSharp.so"), new FileInfo("libSkiaSharp.so")]
];
}
else
Expand All @@ -292,7 +318,7 @@ public async Task MakeProject(ProjectDefinition projectDefinition)
throw new OperationCanceledException();
}

if (requiredNativeFiles.Any(f => !f.Exists))
if (requiredNativeFiles.Any(files => files.All(f => !f.Exists)))
{
await windowManager.MessageBox("To Make Project, you need to build standalone runtime first. See the readme for help.", icon: MessageBoxIcon.Information);
throw new OperationCanceledException();
Expand Down Expand Up @@ -322,8 +348,10 @@ public async Task MakeProject(ProjectDefinition projectDefinition)
ZipFile.CreateFromDirectory(tempPath, Path.ChangeExtension(exePath, "dll")!);
Directory.Delete(tempPath, true);

foreach (var standaloneFile in requiredNativeFiles)
foreach (var standaloneFile in requiredNativeFiles.Select(f => f.FirstOrDefault(x => x.Exists)))
{
if (standaloneFile == null)
throw new Exception($"Required files doesn't exist, even tho it existed few lines above");
var fileName = standaloneFile.Name;
if (fileName.StartsWith("AvaloniaVisualBasic.Standalone"))
fileName = Path.GetFileName(exePath);
Expand Down

0 comments on commit 4f8cc04

Please sign in to comment.