fix: Check for buildx before using docker
This commit is contained in:
parent
46ef12e0bb
commit
0da26e37d5
2 changed files with 18 additions and 2 deletions
|
|
@ -57,6 +57,10 @@ impl DockerDriver {
|
||||||
fn setup() -> Result<()> {
|
fn setup() -> Result<()> {
|
||||||
trace!("DockerDriver::setup()");
|
trace!("DockerDriver::setup()");
|
||||||
|
|
||||||
|
if !Self::has_buildx() {
|
||||||
|
bail!("Docker Buildx is required to use the Docker driver");
|
||||||
|
}
|
||||||
|
|
||||||
let mut lock = DOCKER_SETUP.lock().expect("Should lock");
|
let mut lock = DOCKER_SETUP.lock().expect("Should lock");
|
||||||
|
|
||||||
if *lock {
|
if *lock {
|
||||||
|
|
@ -105,6 +109,13 @@ impl DockerDriver {
|
||||||
drop(lock);
|
drop(lock);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[must_use]
|
||||||
|
pub fn has_buildx() -> bool {
|
||||||
|
pipe!(cmd!("docker", "--help") | cmd!("grep", "buildx"))
|
||||||
|
.status()
|
||||||
|
.is_ok_and(|status| status.success())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl DriverVersion for DockerDriver {
|
impl DriverVersion for DockerDriver {
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,9 @@ impl DetermineDriver<BuildDriverType> for Option<BuildDriverType> {
|
||||||
blue_build_utils::check_command_exists("podman"),
|
blue_build_utils::check_command_exists("podman"),
|
||||||
blue_build_utils::check_command_exists("buildah"),
|
blue_build_utils::check_command_exists("buildah"),
|
||||||
) {
|
) {
|
||||||
(Ok(_docker), _, _) if DockerDriver::is_supported_version() => {
|
(Ok(_docker), _, _)
|
||||||
|
if DockerDriver::is_supported_version() && DockerDriver::has_buildx() =>
|
||||||
|
{
|
||||||
BuildDriverType::Docker
|
BuildDriverType::Docker
|
||||||
}
|
}
|
||||||
(_, Ok(_podman), _) if PodmanDriver::is_supported_version() => {
|
(_, Ok(_podman), _) if PodmanDriver::is_supported_version() => {
|
||||||
|
|
@ -70,7 +72,10 @@ impl DetermineDriver<BuildDriverType> for Option<BuildDriverType> {
|
||||||
_ => panic!(
|
_ => panic!(
|
||||||
"{}{}{}{}",
|
"{}{}{}{}",
|
||||||
"Could not determine strategy, ",
|
"Could not determine strategy, ",
|
||||||
format_args!("need either docker version {}, ", DockerDriver::VERSION_REQ,),
|
format_args!(
|
||||||
|
"need either docker version {} with buildx, ",
|
||||||
|
DockerDriver::VERSION_REQ,
|
||||||
|
),
|
||||||
format_args!("podman version {}, ", PodmanDriver::VERSION_REQ,),
|
format_args!("podman version {}, ", PodmanDriver::VERSION_REQ,),
|
||||||
format_args!(
|
format_args!(
|
||||||
"or buildah version {} to continue",
|
"or buildah version {} to continue",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue