ci: make package updates a separate workflow step

Signed-off-by: Steven Noonan <steven@valvesoftware.com>
This commit is contained in:
Steven Noonan
2021-02-06 15:38:07 -08:00
parent b7f22790d1
commit b9f3cea862
18 changed files with 91 additions and 38 deletions
+28
View File
@@ -0,0 +1,28 @@
#!/bin/bash
set -e
set -o pipefail
ACTION="$(basename "$0")"
ACTION="${ACTION%.sh}"
SCRIPT_CANDIDATES=(
"$PWD/.github/${ACTION}/${IMAGE//\//-}.sh"
"$PWD/.github/${ACTION}/${IMAGE%/*}.sh"
)
for SCRIPT in "${SCRIPT_CANDIDATES[@]}"; do
if [[ -f "${SCRIPT}" ]]; then
bash "${SCRIPT}" | cat
exit $?
fi
done
echo "Could not find script in any of these paths:"
for SCRIPT in "${SCRIPT_CANDIDATES[@]}"; do
echo " ${SCRIPT}"
done
echo ""
echo "Don't know how to do step '${ACTION}' for ${IMAGE}!"
echo ""
exit 1
-1
View File
@@ -1 +0,0 @@
install-ubuntu.sh
-25
View File
@@ -1,25 +0,0 @@
#!/bin/bash
set -e
set -o pipefail
INSTALL_SCRIPT_CANDIDATES=(
"$PWD/.github/install-${IMAGE//\//-}.sh"
"$PWD/.github/install-${IMAGE%/*}.sh"
)
for INSTALL_SCRIPT in "${INSTALL_SCRIPT_CANDIDATES[@]}"; do
if [[ -f "${INSTALL_SCRIPT}" ]]; then
bash "${INSTALL_SCRIPT}" | cat
exit $?
fi
done
echo "Could not find install script in any of these paths:"
for INSTALL_SCRIPT in "${INSTALL_SCRIPT_CANDIDATES[@]}"; do
echo " ${INSTALL_SCRIPT}"
done
echo ""
echo "Don't know how to install packages for ${IMAGE}!"
echo ""
exit 1
+1
View File
@@ -0,0 +1 @@
action.sh
@@ -4,8 +4,6 @@
#
set -ex
apk update
# Base build packages
PACKAGES=(
clang
@@ -19,7 +19,6 @@ PACKAGES+=(protobuf)
PACKAGES+=(openssl)
PACKAGES+=(libsodium)
pacman --noconfirm -Syu
pacman --noconfirm -Sy "${PACKAGES[@]}"
exit 0
+1
View File
@@ -0,0 +1 @@
ubuntu.sh
@@ -23,12 +23,6 @@ PACKAGES+=(protobuf-compiler protobuf-devel)
PACKAGES+=(openssl-devel)
PACKAGES+=(libsodium-devel)
if ! grep '^fastestmirror' /etc/dnf/dnf.conf; then
echo 'fastestmirror=1' >> /etc/dnf/dnf.conf
fi
dnf clean all
dnf update -y
dnf install -y "${PACKAGES[@]}"
exit 0
@@ -21,7 +21,6 @@ PACKAGES+=(protobuf-devel)
PACKAGES+=(libopenssl-devel)
PACKAGES+=(libsodium-devel)
zypper update -y
zypper install -y "${PACKAGES[@]}"
exit 0
@@ -8,8 +8,6 @@ APT_FLAGS=(-q -oDpkg::Use-Pty=0)
export DEBIAN_FRONTEND=noninteractive
apt-get ${APT_FLAGS[@]} update
apt-get ${APT_FLAGS[@]} dist-upgrade -y
apt-get ${APT_FLAGS[@]} install -y locales
locale-gen en_US.UTF-8
+1
View File
@@ -0,0 +1 @@
action.sh
+9
View File
@@ -0,0 +1,9 @@
#!/bin/bash
#
# This is an install script for Alpine-specific package updates.
#
set -ex
apk update
exit 0
+9
View File
@@ -0,0 +1,9 @@
#!/bin/bash
#
# This is an install script for Arch Linux-specific package updates.
#
set -ex
pacman --noconfirm -Syu
exit 0
+1
View File
@@ -0,0 +1 @@
ubuntu.sh
+14
View File
@@ -0,0 +1,14 @@
#!/bin/bash
#
# This is an install script for Fedora-specific package updates.
#
set -ex
if ! grep '^fastestmirror' /etc/dnf/dnf.conf; then
echo 'fastestmirror=1' >> /etc/dnf/dnf.conf
fi
dnf clean all
dnf update -y
exit 0
+9
View File
@@ -0,0 +1,9 @@
#!/bin/bash
#
# This is an install script for OpenSuSE-specific package updates.
#
set -ex
zypper update -y
exit 0
+14
View File
@@ -0,0 +1,14 @@
#!/bin/bash
#
# This is an install script for Debian/Ubuntu-specific package updates.
#
set -ex
APT_FLAGS=(-q -oDpkg::Use-Pty=0)
export DEBIAN_FRONTEND=noninteractive
apt-get ${APT_FLAGS[@]} update
apt-get ${APT_FLAGS[@]} dist-upgrade -y
exit 0
+3
View File
@@ -44,6 +44,9 @@ jobs:
docker run -d --rm --name github-docker-builder -e LC_ALL="C" -e LANG="C" -v ${{ github.workspace }}:/build -w /build ${{ matrix.docker_image }}:${{ matrix.docker_tag }} tail -f /dev/null
docker ps
docker exec -e CI_BUILD=1 -e IMAGE=${{ matrix.docker_image }} -e IMAGE_TAG=${{ matrix.docker_tag }} -t github-docker-builder sh .github/preinstall.sh
- name: Update packages
run: |
docker exec -e CI_BUILD=1 -e IMAGE=${{ matrix.docker_image }} -e IMAGE_TAG=${{ matrix.docker_tag }} -t github-docker-builder bash .github/update-packages.sh
- name: Install dependencies
run: |
docker exec -e CI_BUILD=1 -e IMAGE=${{ matrix.docker_image }} -e IMAGE_TAG=${{ matrix.docker_tag }} -t github-docker-builder bash .github/install.sh
+1
View File
@@ -45,6 +45,7 @@ before_install:
- docker run -d --rm --cap-add SYS_PTRACE --name $CONTAINER_NAME -e LC_ALL="C" -e LANG="C" -v $(pwd):/build -w /build $IMAGE_PREFIX$IMAGE:$IMAGE_TAG tail -f /dev/null
- docker ps
- docker exec -e CI_BUILD=1 -e IMAGE=$IMAGE -e IMAGE_TAG=$IMAGE_TAG -t $CONTAINER_NAME sh .github/preinstall.sh
- docker exec -e CI_BUILD=1 -e IMAGE=$IMAGE -e IMAGE_TAG=$IMAGE_TAG -t $CONTAINER_NAME bash .github/update-packages.sh
install:
- docker exec -e CI_BUILD=1 -e IMAGE=$IMAGE -e IMAGE_TAG=$IMAGE_TAG -t $CONTAINER_NAME bash .github/install.sh