From 6a1094216af0976b926cf29deafe1eebce3f7d4b Mon Sep 17 00:00:00 2001 From: Didier Roche Date: Thu, 26 May 2022 09:12:37 +0200 Subject: [PATCH] Build windows app package on PR Use for now a static rootfs, do not do any other change, and pull everything to latest. This ensures we can always build before merging our windows app package and attach it to the PR to sideload, without any further change. --- .github/workflows/build-pr.yaml | 81 +++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 .github/workflows/build-pr.yaml diff --git a/.github/workflows/build-pr.yaml b/.github/workflows/build-pr.yaml new file mode 100644 index 000000000..206636c6d --- /dev/null +++ b/.github/workflows/build-pr.yaml @@ -0,0 +1,81 @@ +name: Build windows package +on: + pull_request: + +jobs: + build-wsl: + name: Build + runs-on: windows-latest + env: + rootfs64: 'http://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64-wsl.rootfs.tar.gz' + workDir: 'C:/Temp/builddir' + steps: + - name: Checkout WSL + uses: actions/checkout@v3 + with: + # we need to use a subdirectory as we can't move back base GITHUB_WORKSPACE directory + path: repo + - name: Copy under workDir (which has more space to build the package) + shell: bash + run: | + mkdir -p $(dirname ${{ env.workDir }}) + mv ${GITHUB_WORKSPACE}/repo ${{ env.workDir }} + cd ${{ env.workDir }} + git checkout "${GITHUB_SHA}" + git submodule update --init --recursive + - name: Setup x64 rootfs + working-directory: ${{ env.workDir }} + shell: powershell + working-directory: ${{ env.workDir }} + run: | + mkdir x64/ + $client = new-object System.Net.WebClient + $client.DownloadFile("${{ env.rootfs64}}","x64/install.tar.gz") + - name: Setup MSBuild (PATH) + uses: microsoft/setup-msbuild@v1.0.2 + - name: Install certificate + shell: powershell + working-directory: ${{ env.workDir }} + run: | + New-Item -ItemType directory -Path certificate + Set-Content -Path certificate\certificate.txt -Value '${{ secrets.CERTIFICATE }}' + certutil -decode certificate\certificate.txt certificate\certificate.pfx + + $pwd = ConvertTo-SecureString '${{ secrets.CERTIFICATE_PASSWORD }}' -AsPlainText -Force + Import-PfxCertificate -Password $pwd -CertStoreLocation Cert:LocalMachine\Trust -FilePath certificate\certificate.pfx + Import-PfxCertificate -Password $pwd -CertStoreLocation Cert:CurrentUser\My -FilePath certificate\certificate.pfx + - name: Check if packaging the splash app is necessary + working-directory: ${{ env.workDir }} + shell: bash + run: | + BUILD_TREE_HASH=$(sha256sum DistroLauncher-Appx/Directory.build.props | cut -f1 -d' ') + META_TREE_HASH=$(sha256sum meta/Ubuntu18.04LTS/generated/DistroLauncher-Appx/Directory.build.props | cut -f1 -d' ') + if [ ${BUILD_TREE_HASH} != ${META_TREE_HASH} ]; then + echo "withFlutterSplash=true" >> $GITHUB_ENV + else + echo "Skipping Flutter steps due hashes comparing equal:" + echo " Build tree: ${BUILD_TREE_HASH}. Meta tree: ${META_TREE_HASH}" + fi + - uses: subosito/flutter-action@v2 + if: ${{ env.withFlutterSplash == 'true' }} + with: + channel: stable + - name: Build the splash screen + working-directory: ${{ env.workDir }} + if: ${{ env.withFlutterSplash == 'true' }} + run: | + flutter config --enable-windows-desktop + cp "DistroLauncher/images/icon.ico" "ubuntu-wsl-splash/windows/runner/resources/app_icon.ico" + cd "ubuntu-wsl-splash" + flutter gen-l10n + flutter build windows --release + - name: Build Bundle + working-directory: ${{ env.workDir }} + run: msbuild .\DistroLauncher.sln /t:Build /m /nr:false /p:Configuration=Release /p:AppxBundle=Always /p:AppxBundlePlatforms="x64" /p:UapAppxPackageBuildMode=SideloadOnly -verbosity:normal + - name: Allow downloading sideload appxbundle + uses: actions/upload-artifact@v2 + with: + name: sideload-build + path: | + ${{ env.workDir }}/AppPackages/Ubuntu/Ubuntu_*/* + retention-days: 7