WSABuilds/.github/workflows/build.yml
2024-04-03 15:07:22 +01:00

301 lines
13 KiB
YAML

name: Auto Build function (Use for call only)
on:
workflow_call:
inputs:
arch:
type: string
gapps:
type: string
root:
type: string
insider:
type: string
magiskver:
type: string
devicemodel:
type: string
amazonflag:
type: string
compressformat:
type: string
wsa_ver:
type: string
jobs:
build:
name: Build WSA
runs-on: ubuntu-latest
steps:
- name: Checkout ♻️
uses: actions/checkout@v4
- name: Setup Python 🏭
uses: actions/setup-python@v5
with:
check-latest: true
python-version: '3.x'
cache: 'pip'
cache-dependency-path: MagiskOnWSA/scripts/
- name: Setup Python3 Virtual Enviroment 🐍
working-directory: MagiskOnWSA/scripts
run: |
sudo apt-get update
PYTHON_VENV_DIR="$(dirname "$PWD")/python3-env"
python3 -m venv "$PYTHON_VENV_DIR" || abort "Failed to create python3 virtual env"
# shellcheck disable=SC1091
source "$PYTHON_VENV_DIR/bin/activate" || abort "Failed to activate python3 virtual env"
python3 -c "import pkg_resources; pkg_resources.require(open('requirements.txt',mode='r'))" &>/dev/null || {
echo "Installing Python3 dependencies"
python3 -m pip install --upgrade -r requirements.txt || abort "Failed to install python3 dependencies"
}
deactivate
- name: Install Ubuntu Dependencies 🧑‍🏭
uses: awalsh128/cache-apt-pkgs-action@v1
with:
packages: e2fsprogs attr unzip qemu-utils python3-venv curl xmlstarlet
version: 1.0
- name: Check workflow inputs
run: |
echo ${{ inputs.arch }}
echo ${{ inputs.gapps }}
echo ${{ inputs.root }}
echo ${{ inputs.insider }}
echo ${{ inputs.magiskver }}
echo ${{ inputs.devicemodel }}
echo ${{ inputs.amazonflag }}
echo ${{ inputs.compressformat }}
echo ${{ inputs.release_type }}
echo ${{ inputs.wsa_ver }}
- name: Build WSA ${{ inputs.arch }} with GApps ${{ inputs.root }} 🏗️
id: wsa
working-directory: MagiskOnWSA
run: |
chmod -R 777 ./
mkdir -p download
./scripts/build.sh --arch ${{ inputs.arch }} --release-type WIF --magisk-ver ${{ inputs.magiskver }} ${{ inputs.gapps }} --root-sol ${{ inputs.root }} ${{ inputs.amazonflag }} --compress-format none
- name: Check Subdirectories and Directories
working-directory: MagiskOnWSA
run: |
ls -lR
- name: Compress artifact for Windows 11 x64 Build📦
working-directory: MagiskOnWSA
run: |
7z a -t7z -mx=6 -m0=LZMA2 -ms=on -mmt=8 -- "${{ steps.wsa.outputs.artifact }}.7z" ./output/*
- name: Run WSA Windows 10 Python Patch Script
working-directory: MagiskOnWSA/output/WSA_2311.40000.5.0_x64
run: |
#!/bin/bash
# Define the output directory
outputDir="."
# Define the namespaces
rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
desktop6="http://schemas.microsoft.com/appx/manifest/desktop/windows10/6"
# Define the XML file
xmlFile="$outputDir/AppxManifest.xml"
# Patching Windows 10 AppxManifest file
echo -e "\nPatching Windows 10 AppxManifest file..."
# Remove the 'customInstallActions' Capability node
xmlstarlet ed --inplace --delete "//*[local-name()='Capability' and @Name='customInstallActions']" $xmlFile
# Remove the 'windows.customInstall' Extension node
xmlstarlet ed --inplace --delete "//*[local-name()='Extension' and @Category='windows.customInstall']" $xmlFile
# Update the MinVersion
xmlstarlet ed --inplace --update "//*[local-name()='TargetDeviceFamily']/@MinVersion" -v "10.0.19041.264" $xmlFile
# Downloading modified DLL file
echo -e "\nDownloading modified DLL file..."
# Download the DLL files
curl -sL "https://github.com/MustardChef/WSAPatch/raw/main/DLLs%20for%20WSABuilds/winhttp.dll" -o "$outputDir/WsaClient/winhttp.dll"
curl -sL "https://github.com/MustardChef/WSAPatch/raw/main/DLLs%20for%20WSABuilds/WsaPatch.dll" -o "$outputDir/WsaClient/WsaPatch.dll"
curl -sL "https://github.com/MustardChef/WSAPatch/raw/main/DLLs%20for%20WSABuilds/icu.dll" -o "$outputDir/WsaClient/icu.dll"
shell: bash
- name: Compress artifact for Windows 10 x64 Build📦
working-directory: MagiskOnWSA
run: 7z a -t7z -mx=6 -m0=LZMA2 -ms=on -mmt=8 -sdel -- "${{ steps.wsa.outputs.artifact }}_Windows_10.7z" ./output/*
- name: Prepare release tag 🏷️
id: releasetag
run: |
currentver=${{ inputs.wsa_ver }}
folderpath="/WSABuilds/Builds/Windows Subsystem For Android™ v$currentver/Windows 11/Windows 11 x86_64"
folderpathwin10="/WSABuilds/Builds/Windows Subsystem For Android™ v$currentver/Windows 10/"
echo "DRIVE_FOLDER_PATH=$folderpath" >> $GITHUB_ENV
echo "DRIVE_FOLDER_PATH_WIN10=$folderpathwin10" >> $GITHUB_ENV
echo "WSA_TAG=Windows_11_$currentver" >> $GITHUB_ENV
echo "WSA_TAG_WIN10=Windows_10_$currentver" >> $GITHUB_ENV
echo "WSA_VER=$currentver" >> $GITHUB_ENV
- name: Check GitHub ENV variables
run: |
echo "${{ steps.wsa.outputs.artifact }}"
echo "${{ steps.wsa.outputs.artifact_folder }}"
echo "${{ steps.date.outputs.date }}"
echo "${{ steps.wsa.outputs.built }}"
echo "${{ env.WSA_TAG }}"
echo "${{ env.WSA_VER }}"
echo "${{ env.DRIVE_FOLDER_PATH }}"
- name: Upload Windows 11 x64 build to release 🤌
uses: softprops/action-gh-release@v2
with:
files: MagiskOnWSA/${{ steps.wsa.outputs.artifact }}.7z
fail_on_unmatched_files: true
append_body: false
tag_name: ${{ env.WSA_TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
- name: Upload Windows 10 x64 build to release 🤌
uses: softprops/action-gh-release@v2
with:
files: MagiskOnWSA/${{ steps.wsa.outputs.artifact }}_Windows_10.7z
fail_on_unmatched_files: true
append_body: false
tag_name: ${{ env.WSA_TAG_WIN10 }}
token: ${{ secrets.GITHUB_TOKEN }}
# - name: Pass to Windows 💸
# uses: actions/upload-artifact@v4
# with:
# name: ${{ steps.wsa.outputs.artifact }}-${{ steps.wsa.outputs.built }}
# path: MagiskOnWSA/output
# outputs:
# zipname: ${{ steps.wsa.outputs.artifact }}
# artifact_folder: ${{ steps.wsa.outputs.artifact_folder }}
# date: ${{ steps.date.outputs.date }}
# built: ${{ steps.wsa.outputs.built }}
# tag: ${{ env.WSA_TAG }}
# tagwin10: ${{ env.WSA_TAG_WIN10 }}
# wsaver: ${{ env.WSA_VER }}
# onedrivepath: ${{ env.DRIVE_FOLDER_PATH }}
# onedrivepathwin10: ${{ env.DRIVE_FOLDER_PATH_WIN10 }}
# make-pri:
# name: Merge PRI resources
# runs-on: windows-latest
# needs: build
# steps:
# - name: Checkout ♻️
# uses: actions/checkout@v4
#
# - name: Download built artifact ⌛
# uses: actions/download-artifact@v4
# with:
# path: output
# name: ${{ needs.build.outputs.zipname }}-${{ needs.build.outputs.built }}
#
# - name: Remove unused artifact ❌
# uses: geekyeggo/delete-artifact@v5
# with:
# name: ${{ needs.build.outputs.zipname }}-${{ needs.build.outputs.built }}
#
# - name: Check Subdirectories and Directories 1
# run: tree /F ${{ github.workspace }}
#
# - name: Check Subdirectories and Directories 2
# run: tree /F "${{ github.workspace }}\output\${{ needs.build.outputs.artifact_folder }}"
#
# - name: Merge language and density resources 🧙🏻‍♂️
# run: |
# if ("${{ inputs.arch }}" -eq "x64") {
# (Start-Process pwsh.exe -NoNewWindow -PassThru -Args "-ExecutionPolicy Bypass -File MakePri.ps1" -WorkingDirectory "${{ github.workspace }}\output\${{ needs.build.outputs.artifact_folder }}").WaitForExit()
# } else {
# Copy-Item -Force "C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\arm64\makepri.exe" "${{ github.workspace }}\output\${{ needs.build.outputs.artifact_folder }}"
# }
# - name: Compact Images 💿
# run: |
# foreach ($Partition in 'system','product','system_ext','vendor') {
# Write-Output "Optimizing of $Partition..."
# Write-Output "SELECT VDISK FILE=`"${{ github.workspace }}\output\${{ needs.build.outputs.artifact_folder }}\$Partition.vhdx`"`
# ATTACH VDISK READONLY`
# COMPACT VDISK`
# DETACH VDISK" | Set-Content -Path "$Partition.txt" -Encoding Ascii
# Start-Process -NoNewWindow -Wait "diskpart.exe" -Args "/s $Partition.txt" -RedirectStandardOutput NUL
# }
# - name: Compress artifact for Windows 11 x64 Build📦
# run: 7z a -t7z -mx=6 -m0=LZMA2 -ms=on -mmt=8 -- "${{ needs.build.outputs.zipname }}.7z" .\output\*
# - name: Setup rclone 🎚️
# uses: AnimMouse/setup-rclone@v1.9.0
# with:
# rclone_config: ${{ secrets.RCLONE_CONFIG }}
#
# - name: Upload build to OneDrive for Windows 11 x64 Build⏫
# run: |
# echo ${{ needs.build.outputs.onedrivepath }}
# rclone copy ${{ needs.build.outputs.zipname }}.7z OneDrive:"${{ needs.build.outputs.onedrivepath }}" --create-empty-src-dirs
# env:
# RCLONE_CONFIG_PASS: ${{ secrets.RCLONE_CONFIG_PASS }}
# - name: Upload Windows 11 x64 build to release 🤌
# uses: softprops/action-gh-release@v2
# with:
# files: ${{ needs.build.outputs.zipname }}.7z
# fail_on_unmatched_files: true
# append_body: false
# tag_name: ${{ needs.build.outputs.tag }}
# token: ${{ secrets.GITHUB_TOKEN }}
# - name: Check Subdirectories and Directories 3
# run: tree /F ${{ github.workspace }}
# - name: Check Subdirectories and Directories 4
# run: tree /F "${{ github.workspace }}\output\${{ needs.build.outputs.artifact_folder }}"
# - name: Run WSA Windows 10 PowerShell Patch Script
# run: |
# Write-Output "`r`nPatching Windows 10 AppxManifest file..."
# $outputDir = "${{ github.workspace }}\output\${{ needs.build.outputs.artifact_folder }}"
# $xml = [xml](Get-Content "$outputDir\AppxManifest.xml")
# $nsm = New-Object Xml.XmlNamespaceManager($xml.NameTable)
# $nsm.AddNamespace('rescap', "http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities")
# $nsm.AddNamespace('desktop6', "http://schemas.microsoft.com/appx/manifest/desktop/windows10/6")
# $node = $xml.Package.Capabilities.SelectSingleNode("rescap:Capability[@Name='customInstallActions']", $nsm)
# $xml.Package.Capabilities.RemoveChild($node) | Out-Null
# $node = $xml.Package.Extensions.SelectSingleNode("desktop6:Extension[@Category='windows.customInstall']", $nsm)
# $xml.Package.Extensions.RemoveChild($node) | Out-Null
# $xml.Package.Dependencies.TargetDeviceFamily.MinVersion = "10.0.19041.264"
# $xml.Save("$outputDir\AppxManifest.xml")
# Write-Output "`r`nDownloading modifided DLL file..."
# $ProgressPreference = 'SilentlyContinue'
# Invoke-WebRequest -Uri "https://github.com/MustardChef/WSAPatch/raw/main/DLLs%20for%20WSABuilds/winhttp.dll" -OutFile "$outputDir\WSAClient\winhttp.dll"
# Invoke-WebRequest -Uri "https://github.com/MustardChef/WSAPatch/raw/main/DLLs%20for%20WSABuilds/WsaPatch.dll" -OutFile "$outputDir\WSAClient\WsaPatch.dll"
# Invoke-WebRequest -Uri "https://github.com/MustardChef/WSAPatch/raw/main/DLLs%20for%20WSABuilds/icu.dll" -OutFile "$outputDir\WSAClient\icu.dll"
# shell: pwsh
# - name: Compress artifact for Windows 10 x64 Build📦
# run: 7z a -t7z -mx=6 -m0=LZMA2 -ms=on -mmt=8 -sdel -- "${{ needs.build.outputs.zipname }}_Windows_10.7z" .\output\*
# - name: Upload build to OneDrive for Windows 10 x64 Build⏫
# run: |
# echo ${{ needs.build.outputs.onedrivepathwin10 }}
# rclone copy ${{ needs.build.outputs.zipname }}_Windows_10.7z OneDrive:"${{ needs.build.outputs.onedrivepathwin10 }}" --create-empty-src-dirs
# env:
# RCLONE_CONFIG_PASS: ${{ secrets.RCLONE_CONFIG_PASS }}
# - name: Upload Windows 10 x64 build to release 🤌
# uses: softprops/action-gh-release@v2
# with:
# files: ${{ needs.build.outputs.zipname }}_Windows_10.7z
# fail_on_unmatched_files: true
# append_body: false
# tag_name: ${{ needs.build.outputs.tagwin10 }}
# token: ${{ secrets.GITHUB_TOKEN }}