diff --git a/.github/workflows/build_cbsinit.yml b/.github/workflows/build_cbsinit.yml new file mode 100644 index 00000000..24b7e228 --- /dev/null +++ b/.github/workflows/build_cbsinit.yml @@ -0,0 +1,36 @@ +name: Cloudbase-Init build MSI retest + +on: [push, pull_request] + +jobs: + build: + + runs-on: windows-2025 + strategy: + max-parallel: 100 + matrix: + cbsinit_repo: ['https://github.com/cloudbase/cloudbase-init'] + cbsinit_branch: ['master'] + python_version: ['3.13_10'] + platform: ['x64'] + + steps: + - uses: actions/checkout@v4 + - name: Add msbuild to PATH + uses: microsoft/setup-msbuild@v2 + - name: Build msi + shell: cmd + run: + powershell.exe .\BuildAutomation\BuildCloudbaseInitSetup.ps1 ^ + -ClonePullInstallerRepo:$false ^ + -PythonVersion ${{ matrix.python_version }} ^ + -Platform ${{ matrix.platform }} ^ + -VCVars "2022" ^ + -RelativePythonDirPath:$true ^ + -VSRedistDir "''" ^ + -CloudbaseInitRepoUrl ${{ matrix.cbsinit_repo }} ^ + -CloudbaseInitRepoBranch ${{ matrix.cbsinit_branch }} + - uses: actions/upload-artifact@v4 + with: + name: "CloudbaseInit_${{ matrix.platform }}_MSI_${{ matrix.cbsinit_branch }}" + path: 'CloudbaseInitSetup/bin/release/${{ matrix.platform }}/CloudbaseInitSetup.msi' diff --git a/BuildAutomation/BuildCloudbaseInitSetup.ps1 b/BuildAutomation/BuildCloudbaseInitSetup.ps1 index 68f7669a..6845f90a 100644 --- a/BuildAutomation/BuildCloudbaseInitSetup.ps1 +++ b/BuildAutomation/BuildCloudbaseInitSetup.ps1 @@ -10,12 +10,16 @@ Param( [switch]$ClonePullInstallerRepo = $true, [string]$InstallerDir = $null, [string]$VSRedistDir = "${ENV:ProgramFiles(x86)}\Common Files\Merge Modules", - [string]$SignTimestampUrl = "http://timestamp.digicert.com?alg=sha256" + [string]$SignTimestampUrl = "http://timestamp.digicert.com?alg=sha256", + [string]$VCVars="2019", + [switch]$RelativePythonDirPath ) $ErrorActionPreference = "Stop" $scriptPath = split-path -parent $MyInvocation.MyCommand.Definition +$repoRootPath = split-path -parent $scriptPath + . "$scriptPath\BuildUtils.ps1" $platformVCVarsRequired = "x86_amd64" @@ -25,18 +29,23 @@ if ($platform -eq "x86") { $platformVCVarsRequired = "x86" } -SetVCVars "2019" $platformVCVarsRequired +SetVCVars $VCVars $platformVCVarsRequired # Needed for SSH $ENV:HOME = $ENV:USERPROFILE $python_dir = "C:\Python_CloudbaseInit" +$basepath = "C:\build\cloudbase-init" + +if ($RelativePythonDirPath) { + $python_dir = Join-Path $repoRootPath "CloudbaseInitSetup\Python_CloudbaseInit" + $basepath = Join-path $scriptPath "build\cloudbase-init" +} $ENV:PATH = "$python_dir\;$python_dir\scripts;$ENV:PATH" $ENV:PATH += ";$ENV:ProgramFiles (x86)\Git\bin\" $ENV:PATH += ";$ENV:ProgramFiles\7-zip\" -$basepath = "C:\build\cloudbase-init" CheckDir $basepath pushd . @@ -164,13 +173,17 @@ try $installer_sources_dir = join-path $cloudbaseInitInstallerDir "CloudbaseInitSetup" - if($platform -eq "x64") - { - copy "${VSRedistDir}\Microsoft_VC140_CRT_x64.msm" $installer_sources_dir - } - else + + if ($VSRedistDir) { - copy "${VSRedistDir}\Microsoft_VC140_CRT_x86.msm" $installer_sources_dir + if($platform -eq "x64") + { + copy "${VSRedistDir}\Microsoft_VC140_CRT_x64.msm" $installer_sources_dir + } + else + { + copy "${VSRedistDir}\Microsoft_VC140_CRT_x86.msm" $installer_sources_dir + } } cd $cloudbaseInitInstallerDir diff --git a/CloudbaseInitSetup.sln b/CloudbaseInitSetup.sln index c0ff91e9..258de71d 100644 --- a/CloudbaseInitSetup.sln +++ b/CloudbaseInitSetup.sln @@ -4,9 +4,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00 VisualStudioVersion = 12.0.30501.0 MinimumVisualStudioVersion = 10.0.40219.1 Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "CloudbaseInitSetup", "CloudbaseInitSetup\CloudbaseInitSetup.wixproj", "{72504EA8-DE95-42DA-91EA-4359BA85699E}" - ProjectSection(ProjectDependencies) = postProject - {03E4CD9D-2149-424A-9092-9162DE22F105} = {03E4CD9D-2149-424A-9092-9162DE22F105} - EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "BuildAutomation", "BuildAutomation", "{2F8164AD-5423-46D8-BC71-554873129841}" ProjectSection(SolutionItems) = preProject @@ -32,16 +29,6 @@ Global {72504EA8-DE95-42DA-91EA-4359BA85699E}.Release|x64.Build.0 = Release|x64 {72504EA8-DE95-42DA-91EA-4359BA85699E}.Release|x86.ActiveCfg = Release|x86 {72504EA8-DE95-42DA-91EA-4359BA85699E}.Release|x86.Build.0 = Release|x86 - {03E4CD9D-2149-424A-9092-9162DE22F105}.Debug|x64.ActiveCfg = Debug|x64 - {03E4CD9D-2149-424A-9092-9162DE22F105}.Debug|x64.Build.0 = Debug|x64 - {03E4CD9D-2149-424A-9092-9162DE22F105}.Debug|x86.ActiveCfg = Debug|Win32 - {03E4CD9D-2149-424A-9092-9162DE22F105}.Debug|x86.Build.0 = Debug|Win32 - {03E4CD9D-2149-424A-9092-9162DE22F105}.Debug|x86.Deploy.0 = Debug|Win32 - {03E4CD9D-2149-424A-9092-9162DE22F105}.Release|x64.ActiveCfg = Release|x64 - {03E4CD9D-2149-424A-9092-9162DE22F105}.Release|x64.Build.0 = Release|x64 - {03E4CD9D-2149-424A-9092-9162DE22F105}.Release|x86.ActiveCfg = Release|Win32 - {03E4CD9D-2149-424A-9092-9162DE22F105}.Release|x86.Build.0 = Release|Win32 - {03E4CD9D-2149-424A-9092-9162DE22F105}.Release|x86.Deploy.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/CloudbaseInitSetup/Binaries/x64/UtilsActions.dll b/CloudbaseInitSetup/Binaries/x64/UtilsActions.dll new file mode 100644 index 00000000..952ecd85 Binary files /dev/null and b/CloudbaseInitSetup/Binaries/x64/UtilsActions.dll differ diff --git a/CloudbaseInitSetup/Binaries/x86/UtilsActions.dll b/CloudbaseInitSetup/Binaries/x86/UtilsActions.dll new file mode 100644 index 00000000..f3128fd7 Binary files /dev/null and b/CloudbaseInitSetup/Binaries/x86/UtilsActions.dll differ diff --git a/CloudbaseInitSetup/CloudbaseInitSetup.wixproj b/CloudbaseInitSetup/CloudbaseInitSetup.wixproj index 2fb2adab..23f4940b 100644 --- a/CloudbaseInitSetup/CloudbaseInitSetup.wixproj +++ b/CloudbaseInitSetup/CloudbaseInitSetup.wixproj @@ -19,7 +19,7 @@ bin\$(Configuration)\$(platform)\ obj\$(Configuration)\ - PythonSourcePath=C:\Python_CloudbaseInit;CarbonSourcePath=Carbon;Version=1.0.0.0;VersionStr=1.0.0.0 + PythonSourcePath=Python_CloudbaseInit;CarbonSourcePath=Carbon;Version=1.0.0.0;VersionStr=1.0.0.0 Debug @@ -27,7 +27,7 @@ obj\$(Platform)\$(Configuration)\ - PythonSourcePath=C:\Python_CloudbaseInit;CarbonSourcePath=Carbon;Version=1.0.0.0;VersionStr=1.0.0.0 + PythonSourcePath=Python_CloudbaseInit;CarbonSourcePath=Carbon;Version=1.0.0.0;VersionStr=1.0.0.0 bin\$(Configuration)\$(platform)\ obj\$(Platform)\$(Configuration)\ @@ -309,10 +309,9 @@ - + - - + - \ No newline at end of file + diff --git a/CloudbaseInitSetup/Microsoft_VC140_CRT_x64.msm b/CloudbaseInitSetup/Microsoft_VC140_CRT_x64.msm new file mode 100644 index 00000000..c85f03ab Binary files /dev/null and b/CloudbaseInitSetup/Microsoft_VC140_CRT_x64.msm differ diff --git a/CloudbaseInitSetup/Microsoft_VC140_CRT_x86.msm b/CloudbaseInitSetup/Microsoft_VC140_CRT_x86.msm new file mode 100644 index 00000000..6bb26a31 Binary files /dev/null and b/CloudbaseInitSetup/Microsoft_VC140_CRT_x86.msm differ