diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4559246ce4276..7f72f2de0dc6d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -118,6 +118,12 @@ jobs: with: fetch-depth: 2 + - name: update Docker version + if: matrix.codebuild + run: | + echo "updating Docker version" + src/ci/scripts/update-docker.sh + # Free up disk space on Linux by removing preinstalled components that # we do not need. We do this to enable some of the less resource # intensive jobs to run on free runners, which however also have diff --git a/src/ci/scripts/update-docker.sh b/src/ci/scripts/update-docker.sh new file mode 100755 index 0000000000000..4df4c0dbd01d3 --- /dev/null +++ b/src/ci/scripts/update-docker.sh @@ -0,0 +1,52 @@ +#!/bin/bash +# Update Docker to the latest version on Ubuntu + +set -euo pipefail + +echo "previous docker version:" +sudo docker --version || true + +echo "Remove old Docker packages" +for pkg in \ + docker.io \ + docker-compose \ + docker-compose-v2 \ + docker-doc \ + podman-docker ; + do sudo apt-get remove -y $pkg || true; done + +echo "Add Docker's official GPG key" +sudo install -m 0755 -d /etc/apt/keyrings +sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc +sudo chmod a+r /etc/apt/keyrings/docker.asc + +echo "Add the repository to Apt sources" +echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \ + https://download.docker.com/linux/ubuntu \ + $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \ + sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + +echo "Update the package database" +sudo apt-get update + +echo "Install the latest version of Docker" +sudo apt-get install -y \ + docker-ce \ + docker-ce-cli \ + containerd.io \ + docker-buildx-plugin + +if ! sudo docker --version; then + echo "Docker installation failed" + exit 1 +fi + +echo "Docker updated successfully! New version:" +sudo docker --version +# # Start and enable Docker service +# sudo systemctl start docker +# sudo systemctl enable docker + +# # Add current user to docker group (if not already) +# sudo usermod -aG docker $USER || true