diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..961fd34 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,141 @@ +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: | + find ./bin/windows -name "*.pdb" -type f -delete + mv ./bin/windows/AvaloniaVisualBasic.Desktop.exe ./bin/windows/AvaloniaVisualBasic.exe + shell: bash + + - 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/windows/**/* + name: Test Build + tag_name: v1 + token: ${{ secrets.PAT }} + + 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: | + cd ./bin/linux + tar -cvf 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 + + - name: Release + uses: softprops/action-gh-release@v2 + with: + files: ./bin/macos/vb6-linux-amd64.tar + name: Test Build + tag_name: v1 + token: ${{ secrets.PAT }} + + 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: | + cd ./bin/macos + tar -cvf 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 + name: Test Build + tag_name: v1 + token: ${{ secrets.PAT }} \ 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}"