ci: multiple ubuntu version (#2036)
* ci: prepare ci for multiple runners * chore: rename dockerfiles * chore: sup multiple os in makefile * chore: changes to support multiple versions * chore: remove test for TARGETPLATFORM * chore: fixes and add individual targets * ci: add latest tag back in * ci: remove latest suffix tag Co-authored-by: toast-gear <toast-gear@users.noreply.github.com>
This commit is contained in:
parent
18077a1e83
commit
63d2cbfdaa
|
|
@ -44,12 +44,15 @@ jobs:
|
||||||
- name: actions-runner
|
- name: actions-runner
|
||||||
os-name: ubuntu
|
os-name: ubuntu
|
||||||
os-version: 20.04
|
os-version: 20.04
|
||||||
|
latest: "true"
|
||||||
- name: actions-runner-dind
|
- name: actions-runner-dind
|
||||||
os-name: ubuntu
|
os-name: ubuntu
|
||||||
os-version: 20.04
|
os-version: 20.04
|
||||||
|
latest: "true"
|
||||||
- name: actions-runner-dind-rootless
|
- name: actions-runner-dind-rootless
|
||||||
os-name: ubuntu
|
os-name: ubuntu
|
||||||
os-version: 20.04
|
os-version: 20.04
|
||||||
|
latest: "true"
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
|
|
@ -67,7 +70,7 @@ jobs:
|
||||||
uses: docker/build-push-action@v3
|
uses: docker/build-push-action@v3
|
||||||
with:
|
with:
|
||||||
context: ./runner
|
context: ./runner
|
||||||
file: ./runner/${{ matrix.name }}.dockerfile
|
file: ./runner/${{ matrix.name }}.${{ matrix.os-name }}-${{ matrix.os-version }}.dockerfile
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
push: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
|
push: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
|
||||||
build-args: |
|
build-args: |
|
||||||
|
|
@ -77,9 +80,30 @@ jobs:
|
||||||
tags: |
|
tags: |
|
||||||
${{ env.DOCKERHUB_USERNAME }}/${{ matrix.name }}:v${{ env.RUNNER_VERSION }}-${{ matrix.os-name }}-${{ matrix.os-version }}
|
${{ env.DOCKERHUB_USERNAME }}/${{ matrix.name }}:v${{ env.RUNNER_VERSION }}-${{ matrix.os-name }}-${{ matrix.os-version }}
|
||||||
${{ env.DOCKERHUB_USERNAME }}/${{ matrix.name }}:v${{ env.RUNNER_VERSION }}-${{ matrix.os-name }}-${{ matrix.os-version }}-${{ env.sha_short }}
|
${{ env.DOCKERHUB_USERNAME }}/${{ matrix.name }}:v${{ env.RUNNER_VERSION }}-${{ matrix.os-name }}-${{ matrix.os-version }}-${{ env.sha_short }}
|
||||||
${{ env.DOCKERHUB_USERNAME }}/${{ matrix.name }}:latest
|
${{ env.DOCKERHUB_USERNAME }}/${{ matrix.name }}:${{ matrix.os-name }}-${{ matrix.os-version }}
|
||||||
ghcr.io/${{ github.repository }}/${{ matrix.name }}:latest
|
|
||||||
ghcr.io/${{ github.repository }}/${{ matrix.name }}:v${{ env.RUNNER_VERSION }}-${{ matrix.os-name }}-${{ matrix.os-version }}
|
ghcr.io/${{ github.repository }}/${{ matrix.name }}:v${{ env.RUNNER_VERSION }}-${{ matrix.os-name }}-${{ matrix.os-version }}
|
||||||
ghcr.io/${{ github.repository }}/${{ matrix.name }}:v${{ env.RUNNER_VERSION }}-${{ matrix.os-name }}-${{ matrix.os-version }}-${{ env.sha_short }}
|
ghcr.io/${{ github.repository }}/${{ matrix.name }}:v${{ env.RUNNER_VERSION }}-${{ matrix.os-name }}-${{ matrix.os-version }}-${{ env.sha_short }}
|
||||||
cache-from: type=gha,scope=build-${{ matrix.name }}
|
ghcr.io/${{ github.repository }}/${{ matrix.name }}:${{ matrix.os-name }}-${{ matrix.os-version }}
|
||||||
cache-to: type=gha,mode=max,scope=build-${{ matrix.name }}
|
cache-from: type=gha,scope=build-${{ matrix.name }}-${{ matrix.os-name }}-${{ matrix.os-version }}
|
||||||
|
cache-to: type=gha,mode=max,scope=build-${{ matrix.name }}-${{ matrix.os-name }}-${{ matrix.os-version }}
|
||||||
|
|
||||||
|
# NOTE : Only to be used on the 20.04 image until we remove the latest tag entirely
|
||||||
|
# at which point this step needs to be deleted
|
||||||
|
# https://github.com/actions-runner-controller/actions-runner-controller/issues/2056
|
||||||
|
- name: Build and Push Latest Tags
|
||||||
|
id: ${{ matrix.latest == "true" }}
|
||||||
|
uses: docker/build-push-action@v3
|
||||||
|
with:
|
||||||
|
context: ./runner
|
||||||
|
file: ./runner/${{ matrix.name }}.${{ matrix.os-name }}-${{ matrix.os-version }}.dockerfile
|
||||||
|
platforms: linux/amd64,linux/arm64
|
||||||
|
push: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
|
||||||
|
build-args: |
|
||||||
|
RUNNER_VERSION=${{ env.RUNNER_VERSION }}
|
||||||
|
DOCKER_VERSION=${{ env.DOCKER_VERSION }}
|
||||||
|
RUNNER_CONTAINER_HOOKS_VERSION=${{ env.RUNNER_CONTAINER_HOOKS_VERSION }}
|
||||||
|
tags: |
|
||||||
|
${{ env.DOCKERHUB_USERNAME }}/${{ matrix.name }}:latest
|
||||||
|
ghcr.io/${{ github.repository }}/${{ matrix.name }}:latest
|
||||||
|
cache-from: type=gha,scope=build-${{ matrix.name }}-${{ matrix.os-name }}-${{ matrix.os-version }}
|
||||||
|
cache-to: type=gha,mode=max,scope=build-${{ matrix.name }}-${{ matrix.os-name }}-${{ matrix.os-version }}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
DOCKER_USER ?= summerwind
|
DOCKER_USER ?= summerwind
|
||||||
DOCKER ?= docker
|
DOCKER ?= docker
|
||||||
NAME ?= ${DOCKER_USER}/actions-runner
|
DEFAULT_RUNNER_NAME ?= ${DOCKER_USER}/actions-runner
|
||||||
DIND_RUNNER_NAME ?= ${DOCKER_USER}/actions-runner-dind
|
DIND_RUNNER_NAME ?= ${DOCKER_USER}/actions-runner-dind
|
||||||
DIND_ROOTLESS_RUNNER_NAME ?= ${DOCKER_USER}/actions-runner-dind-rootless
|
DIND_ROOTLESS_RUNNER_NAME ?= ${DOCKER_USER}/actions-runner-dind-rootless
|
||||||
TAG ?= latest
|
OS_IMAGE ?= ubuntu-20.04
|
||||||
TARGETPLATFORM ?= $(shell arch)
|
TARGETPLATFORM ?= $(shell arch)
|
||||||
|
|
||||||
RUNNER_VERSION ?= 2.299.1
|
RUNNER_VERSION ?= 2.299.1
|
||||||
|
|
@ -39,33 +39,33 @@ else
|
||||||
$(error Supported target platforms: linux/amd64 and linux/arm64)
|
$(error Supported target platforms: linux/amd64 and linux/arm64)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
docker-build-ubuntu: check-target-platform
|
docker-build-set: check-target-platform
|
||||||
${DOCKER} build \
|
${DOCKER} build \
|
||||||
--build-arg TARGETPLATFORM=${TARGETPLATFORM} \
|
--build-arg TARGETPLATFORM=${TARGETPLATFORM} \
|
||||||
--build-arg RUNNER_VERSION=${RUNNER_VERSION} \
|
--build-arg RUNNER_VERSION=${RUNNER_VERSION} \
|
||||||
--build-arg RUNNER_CONTAINER_HOOKS_VERSION=${RUNNER_CONTAINER_HOOKS_VERSION} \
|
--build-arg RUNNER_CONTAINER_HOOKS_VERSION=${RUNNER_CONTAINER_HOOKS_VERSION} \
|
||||||
--build-arg DOCKER_VERSION=${DOCKER_VERSION} \
|
--build-arg DOCKER_VERSION=${DOCKER_VERSION} \
|
||||||
-f actions-runner.dockerfile \
|
-f actions-runner.${OS_IMAGE}.dockerfile \
|
||||||
-t ${NAME}:${TAG} .
|
-t ${DEFAULT_RUNNER_NAME}:${OS_IMAGE} .
|
||||||
${DOCKER} build \
|
${DOCKER} build \
|
||||||
--build-arg TARGETPLATFORM=${TARGETPLATFORM} \
|
--build-arg TARGETPLATFORM=${TARGETPLATFORM} \
|
||||||
--build-arg RUNNER_VERSION=${RUNNER_VERSION} \
|
--build-arg RUNNER_VERSION=${RUNNER_VERSION} \
|
||||||
--build-arg DOCKER_VERSION=${DOCKER_VERSION} \
|
--build-arg DOCKER_VERSION=${DOCKER_VERSION} \
|
||||||
-f actions-runner-dind.dockerfile \
|
-f actions-runner-dind.${OS_IMAGE}.dockerfile \
|
||||||
-t ${DIND_RUNNER_NAME}:${TAG} .
|
-t ${DIND_RUNNER_NAME}:${OS_IMAGE} .
|
||||||
${DOCKER} build \
|
${DOCKER} build \
|
||||||
--build-arg TARGETPLATFORM=${TARGETPLATFORM} \
|
--build-arg TARGETPLATFORM=${TARGETPLATFORM} \
|
||||||
--build-arg RUNNER_VERSION=${RUNNER_VERSION} \
|
--build-arg RUNNER_VERSION=${RUNNER_VERSION} \
|
||||||
--build-arg DOCKER_VERSION=${DOCKER_VERSION} \
|
--build-arg DOCKER_VERSION=${DOCKER_VERSION} \
|
||||||
-f actions-runner-dind-rootless.dockerfile \
|
-f actions-runner-dind-rootless.${OS_IMAGE}.dockerfile \
|
||||||
-t ${DIND_ROOTLESS_RUNNER_NAME}:${TAG} .
|
-t "${DIND_ROOTLESS_RUNNER_NAME}:${OS_IMAGE}" .
|
||||||
|
|
||||||
docker-push-ubuntu:
|
docker-push-set:
|
||||||
${DOCKER} push ${NAME}:${TAG}
|
${DOCKER} push "${DEFAULT_RUNNER_NAME}:${OS_IMAGE}"
|
||||||
${DOCKER} push ${DIND_RUNNER_NAME}:${TAG}
|
${DOCKER} push "${DIND_RUNNER_NAME}:${OS_IMAGE}"
|
||||||
${DOCKER} push ${DIND_ROOTLESS_RUNNER_NAME}:${TAG}
|
${DOCKER} push "${DIND_ROOTLESS_RUNNER_NAME}:${OS_IMAGE}"
|
||||||
|
|
||||||
docker-buildx-ubuntu:
|
docker-buildx-set:
|
||||||
export DOCKER_CLI_EXPERIMENTAL=enabled ;\
|
export DOCKER_CLI_EXPERIMENTAL=enabled ;\
|
||||||
export DOCKER_BUILDKIT=1
|
export DOCKER_BUILDKIT=1
|
||||||
@if ! docker buildx ls | grep -q container-builder; then\
|
@if ! docker buildx ls | grep -q container-builder; then\
|
||||||
|
|
@ -75,19 +75,62 @@ docker-buildx-ubuntu:
|
||||||
--build-arg RUNNER_VERSION=${RUNNER_VERSION} \
|
--build-arg RUNNER_VERSION=${RUNNER_VERSION} \
|
||||||
--build-arg RUNNER_CONTAINER_HOOKS_VERSION=${RUNNER_CONTAINER_HOOKS_VERSION} \
|
--build-arg RUNNER_CONTAINER_HOOKS_VERSION=${RUNNER_CONTAINER_HOOKS_VERSION} \
|
||||||
--build-arg DOCKER_VERSION=${DOCKER_VERSION} \
|
--build-arg DOCKER_VERSION=${DOCKER_VERSION} \
|
||||||
-f actions-runner.dockerfile \
|
-f actions-runner.${OS_IMAGE}.dockerfile \
|
||||||
-t "${NAME}:${TAG}" \
|
-t "${DEFAULT_RUNNER_NAME}:${OS_IMAGE}" \
|
||||||
. ${PUSH_ARG}
|
. ${PUSH_ARG}
|
||||||
${DOCKER} buildx build --platform ${PLATFORMS} \
|
${DOCKER} buildx build --platform ${PLATFORMS} \
|
||||||
--build-arg RUNNER_VERSION=${RUNNER_VERSION} \
|
--build-arg RUNNER_VERSION=${RUNNER_VERSION} \
|
||||||
--build-arg RUNNER_CONTAINER_HOOKS_VERSION=${RUNNER_CONTAINER_HOOKS_VERSION} \
|
--build-arg RUNNER_CONTAINER_HOOKS_VERSION=${RUNNER_CONTAINER_HOOKS_VERSION} \
|
||||||
--build-arg DOCKER_VERSION=${DOCKER_VERSION} \
|
--build-arg DOCKER_VERSION=${DOCKER_VERSION} \
|
||||||
-f actions-runner-dind.dockerfile \
|
-f actions-runner-dind.${OS_IMAGE}.dockerfile \
|
||||||
-t "${DIND_RUNNER_NAME}:${TAG}" \
|
-t "${DIND_RUNNER_NAME}:${OS_IMAGE}" \
|
||||||
. ${PUSH_ARG}
|
. ${PUSH_ARG}
|
||||||
${DOCKER} buildx build --platform ${PLATFORMS} \
|
${DOCKER} buildx build --platform ${PLATFORMS} \
|
||||||
--build-arg RUNNER_VERSION=${RUNNER_VERSION} \
|
--build-arg RUNNER_VERSION=${RUNNER_VERSION} \
|
||||||
|
--build-arg RUNNER_CONTAINER_HOOKS_VERSION=${RUNNER_CONTAINER_HOOKS_VERSION} \
|
||||||
--build-arg DOCKER_VERSION=${DOCKER_VERSION} \
|
--build-arg DOCKER_VERSION=${DOCKER_VERSION} \
|
||||||
-f actions-runner-dind-rootless.dockerfile \
|
-f actions-runner-dind-rootless.${OS_IMAGE}.dockerfile \
|
||||||
-t "${DIND_ROOTLESS_RUNNER_NAME}:${TAG}" \
|
-t "${DIND_ROOTLESS_RUNNER_NAME}:${OS_IMAGE}" \
|
||||||
|
. ${PUSH_ARG}
|
||||||
|
|
||||||
|
docker-buildx-default:
|
||||||
|
export DOCKER_CLI_EXPERIMENTAL=enabled ;\
|
||||||
|
export DOCKER_BUILDKIT=1
|
||||||
|
@if ! docker buildx ls | grep -q container-builder; then\
|
||||||
|
docker buildx create --platform ${PLATFORMS} --name container-builder --use;\
|
||||||
|
fi
|
||||||
|
${DOCKER} buildx build --platform ${PLATFORMS} \
|
||||||
|
--build-arg RUNNER_VERSION=${RUNNER_VERSION} \
|
||||||
|
--build-arg RUNNER_CONTAINER_HOOKS_VERSION=${RUNNER_CONTAINER_HOOKS_VERSION} \
|
||||||
|
--build-arg DOCKER_VERSION=${DOCKER_VERSION} \
|
||||||
|
-f actions-runner.${OS_IMAGE}.dockerfile \
|
||||||
|
-t "${DEFAULT_RUNNER_NAME}:${OS_IMAGE}" \
|
||||||
|
. ${PUSH_ARG}
|
||||||
|
|
||||||
|
docker-buildx-dind:
|
||||||
|
export DOCKER_CLI_EXPERIMENTAL=enabled ;\
|
||||||
|
export DOCKER_BUILDKIT=1
|
||||||
|
@if ! docker buildx ls | grep -q container-builder; then\
|
||||||
|
docker buildx create --platform ${PLATFORMS} --name container-builder --use;\
|
||||||
|
fi
|
||||||
|
${DOCKER} buildx build --platform ${PLATFORMS} \
|
||||||
|
--build-arg RUNNER_VERSION=${RUNNER_VERSION} \
|
||||||
|
--build-arg RUNNER_CONTAINER_HOOKS_VERSION=${RUNNER_CONTAINER_HOOKS_VERSION} \
|
||||||
|
--build-arg DOCKER_VERSION=${DOCKER_VERSION} \
|
||||||
|
-f actions-runner-dind.${OS_IMAGE}.dockerfile \
|
||||||
|
-t "${DIND_RUNNER_NAME}:${OS_IMAGE}" \
|
||||||
|
. ${PUSH_ARG}
|
||||||
|
|
||||||
|
docker-buildx-dind-rootless:
|
||||||
|
export DOCKER_CLI_EXPERIMENTAL=enabled ;\
|
||||||
|
export DOCKER_BUILDKIT=1
|
||||||
|
@if ! docker buildx ls | grep -q container-builder; then\
|
||||||
|
docker buildx create --platform ${PLATFORMS} --name container-builder --use;\
|
||||||
|
fi
|
||||||
|
${DOCKER} buildx build --platform ${PLATFORMS} \
|
||||||
|
--build-arg RUNNER_VERSION=${RUNNER_VERSION} \
|
||||||
|
--build-arg RUNNER_CONTAINER_HOOKS_VERSION=${RUNNER_CONTAINER_HOOKS_VERSION} \
|
||||||
|
--build-arg DOCKER_VERSION=${DOCKER_VERSION} \
|
||||||
|
-f actions-runner-dind-rootless.${OS_IMAGE}.dockerfile \
|
||||||
|
-t "${DIND_ROOTLESS_RUNNER_NAME}:${OS_IMAGE}" \
|
||||||
. ${PUSH_ARG}
|
. ${PUSH_ARG}
|
||||||
|
|
|
||||||
|
|
@ -11,10 +11,8 @@ ARG DUMB_INIT_VERSION=1.2.5
|
||||||
# Other arguments
|
# Other arguments
|
||||||
ARG DEBUG=false
|
ARG DEBUG=false
|
||||||
|
|
||||||
RUN test -n "$TARGETPLATFORM" || (echo "TARGETPLATFORM must be set" && false)
|
|
||||||
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
RUN apt update -y \
|
RUN apt-get update -y \
|
||||||
&& apt-get install -y software-properties-common \
|
&& apt-get install -y software-properties-common \
|
||||||
&& add-apt-repository -y ppa:git-core/ppa \
|
&& add-apt-repository -y ppa:git-core/ppa \
|
||||||
&& apt-get update -y \
|
&& apt-get update -y \
|
||||||
|
|
@ -9,10 +9,8 @@ ARG DOCKER_VERSION=20.10.18
|
||||||
ARG DOCKER_COMPOSE_VERSION=v2.6.0
|
ARG DOCKER_COMPOSE_VERSION=v2.6.0
|
||||||
ARG DUMB_INIT_VERSION=1.2.5
|
ARG DUMB_INIT_VERSION=1.2.5
|
||||||
|
|
||||||
RUN test -n "$TARGETPLATFORM" || (echo "TARGETPLATFORM must be set" && false)
|
|
||||||
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
RUN apt update -y \
|
RUN apt-get update -y \
|
||||||
&& apt-get install -y software-properties-common \
|
&& apt-get install -y software-properties-common \
|
||||||
&& add-apt-repository -y ppa:git-core/ppa \
|
&& add-apt-repository -y ppa:git-core/ppa \
|
||||||
&& apt-get update -y \
|
&& apt-get update -y \
|
||||||
|
|
@ -9,10 +9,8 @@ ARG DOCKER_VERSION=20.10.18
|
||||||
ARG DOCKER_COMPOSE_VERSION=v2.6.0
|
ARG DOCKER_COMPOSE_VERSION=v2.6.0
|
||||||
ARG DUMB_INIT_VERSION=1.2.5
|
ARG DUMB_INIT_VERSION=1.2.5
|
||||||
|
|
||||||
RUN test -n "$TARGETPLATFORM" || (echo "TARGETPLATFORM must be set" && false)
|
|
||||||
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
RUN apt update -y \
|
RUN apt-get update -y \
|
||||||
&& apt-get install -y software-properties-common \
|
&& apt-get install -y software-properties-common \
|
||||||
&& add-apt-repository -y ppa:git-core/ppa \
|
&& add-apt-repository -y ppa:git-core/ppa \
|
||||||
&& apt-get update -y \
|
&& apt-get update -y \
|
||||||
|
|
@ -172,5 +172,9 @@ unset RUNNER_NAME RUNNER_REPO RUNNER_TOKEN STARTUP_DELAY_IN_SECONDS DISABLE_WAIT
|
||||||
if [ -z "${UNITTEST:-}" ]; then
|
if [ -z "${UNITTEST:-}" ]; then
|
||||||
mapfile -t env </etc/environment
|
mapfile -t env </etc/environment
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
log.notice "WARNING LATEST TAG HAS BEEN DEPRECATED. SEE GITHUB ISSUE FOR DETAILS:"
|
||||||
|
log.notice "https://github.com/actions-runner-controller/actions-runner-controller/issues/2056"
|
||||||
|
|
||||||
update-status "Idle"
|
update-status "Idle"
|
||||||
exec env -- "${env[@]}" ./run.sh
|
exec env -- "${env[@]}" ./run.sh
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue