tasks/firecracker.tasks.ps1
# <copyright file="firecracker.tasks.ps1" company="Endjin Limited"> # Copyright (c) Endjin Limited. All rights reserved. # </copyright> $kernelVersion = "4.20" task DownloadKernel -If {$IsLinux} { $arch = exec { uname -m } $sourceKernelFilename = "vmlinux.bin" $targetKernelFilename = "vmlinux-$kernelVersion-$arch.bin" if (!(Test-Path $PackagesDir/$targetKernelFilename)) { $kernelContainerImage = "endjin.azurecr.io/firecracker/kernel:$kernelVersion" $copiedFile = Copy-FilesFromContainerImage -SourceImageName $kernelContainerImage ` -DestinationFolderPath $PackagesDir ` -Filter $sourceKernelFilename ` -PassThru ` -Verbose:$VerbosePreference Rename-Item $copiedFile $targetKernelFilename } else { Write-Build White "Kernel already downloaded" } } # NOTE: 'GenerateContainerBuildTag' is defined in the Endjin.RecommendedPractices.Build extension, # which is referenced as a dependency. task BuildDiskImages -If {$IsLinux} -After PackageCore GenerateContainerBuildTag,DownloadKernel,{ $ContainersToBuild | Where-Object { $_.CreateDiskImage } | ForEach-Object { # NOTE: 'containerBuildTag' is set by the external GenerateContainerBuildTag task $sourceImageWithTag = "$($_.ImageName):$containerBuildTag" Write-Build Green "Creating disk image for app container: $imageWithTag" $diskImagePath = New-DiskImageFromContainerisedRootFS -SourceImageName $sourceImageWithTag ` -DestinationFolderPath $PackagesDir ` -DiskSizeMB $_.DiskImageSizeMB if ($_.ContainsKey("IncludeInGitHubRelease") -and $_.IncludeInGitHubRelease) { $script:GitHubReleaseArtefacts += $diskImagePath } # Write-Build Green "Packaging disk image: $diskImagePath" # Export-DiskImageToContainerImage -SourceImageName $container.ImageName -DiskImagePath $diskImagePath -DiskSizeMB $diskImageSizeRequirements[$distro] } } |