diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..252720c --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,112 @@ +name: Build Native AOT App + +on: + push: + branches: + - ci + pull_request: + branches: + - ci + +jobs: + build-windows: + 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: | + Remove-Item -Path "bin/windows/**/*.dbg" -Force -Recurse -ErrorAction SilentlyContinue + Remove-Item -Path "bin/windows/**/*.pdb" -Force -Recurse -ErrorAction SilentlyContinue + Rename-Item -Path "bin/windows/AvaloniaVisualBasic.Desktop.exe" -NewName "AvaloniaVisualBasic.exe" + shell: pwsh + + - name: Upload Windows Artifacts + uses: actions/upload-artifact@v4 + with: + name: windows-bin + path: ./bin/windows/ + + build-linux: + 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 + 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: tar -cvf vb6-linux.tar ./bin/linux/ + + - name: Upload Linux Artifacts + uses: actions/upload-artifact@v4 + with: + name: linux-bin + path: vb6-linux.tar + + build-macos: + 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 {} + + 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: tar -cvf vb6-macos.tar ./bin/macos/ + + - name: Upload macOS Artifacts + uses: actions/upload-artifact@v4 + with: + name: macos-bin + path: vb6-macos.tar \ No newline at end of file diff --git a/AvaloniaVisualBasic.sln b/AvaloniaVisualBasic.sln index f71cae5..b4143eb 100644 --- a/AvaloniaVisualBasic.sln +++ b/AvaloniaVisualBasic.sln @@ -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\build.yml = .github\workflows\build.yml EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvaloniaVisualBasic.Standalone", "AvaloniaVisualBasic.Standalone\AvaloniaVisualBasic.Standalone.csproj", "{0C6BC133-E273-4716-83D1-4FD1B0C14E19}"