Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 33 additions & 2 deletions Plugins/AWSLambdaPackager/Plugin.swift
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,8 @@ struct AWSLambdaPackager: CommandPlugin {
(default is latest)
This parameter cannot be used when --base-docker-image is specified.
--base-docker-image <name> The name of the base docker image to use for the build.
(default : swift-<version>:amazonlinux2)
(default: swift:<version>-amazonlinux2023 for Swift >= 6.3,
swift:<version>-amazonlinux2 for earlier versions)
This parameter cannot be used when --swift-version is specified.
--disable-docker-image-update Do not attempt to update the docker image
--container-cli <name> The container CLI to use (docker or container)
Expand Down Expand Up @@ -484,8 +485,38 @@ private struct Configuration: CustomStringConvertible {
}

let swiftVersion = swiftVersionArgument.first ?? .none // undefined version will yield the latest docker image

// Swift 6.3+ uses amazonlinux2023, earlier versions use amazonlinux2
let amazonLinuxVersion: String
if let version = swiftVersion {
let components = version.split(separator: ".").compactMap { Int($0) }
if components.count >= 2 {
let major = components[0]
let minor = components[1]
amazonLinuxVersion = (major > 6 || (major == 6 && minor >= 3)) ? "amazonlinux2023" : "amazonlinux2"
} else if let major = components.first {
// treat "6" (no minor) as possibly 6.0, hence amazonlinux2
amazonLinuxVersion = major > 6 ? "amazonlinux2023" : "amazonlinux2"
} else {
amazonLinuxVersion = "amazonlinux2023"
}
} else {
// no version specified means "latest", which is >= 6.3
amazonLinuxVersion = "amazonlinux2023"
Comment thread
sebsto marked this conversation as resolved.
}

self.baseDockerImage =
baseDockerImageArgument.first ?? "swift:\(swiftVersion.map { $0 + "-" } ?? "")amazonlinux2"
baseDockerImageArgument.first ?? "swift:\(swiftVersion.map { $0 + "-" } ?? "")\(amazonLinuxVersion)"

if verboseArgument {
if baseDockerImageArgument.isEmpty {
print(
"swift version: \(swiftVersion ?? "latest"), amazon linux version: \(amazonLinuxVersion), base docker image: \(self.baseDockerImage)"
)
} else {
print("base docker image (user provided): \(self.baseDockerImage)")
}
}

self.disableDockerImageUpdate = disableDockerImageUpdateArgument
self.containerCLI = try ContainerCLI.parse(
Expand Down
Loading