Skip to content

Commit 71752f9

Browse files
committed
refactor: Update Dockerfiles and scripts for consistency and enhancements
Updated syntax version in Dockerfiles and improved ENV var formatting. Enhanced entrypoint.sh and app_token.sh for clearer variable names and structure. Bumped versions for Git LFS, .NET, GH Runner, and PowerShell.
1 parent 41ab0f2 commit 71752f9

File tree

10 files changed

+154
-130
lines changed

10 files changed

+154
-130
lines changed

Dockerfile

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,25 @@
1+
# syntax=docker/dockerfile:1
12
ARG BASE_IMAGE="derskythe/github-runner-base:latest"
23
FROM ${BASE_IMAGE} AS base
34
# hadolint ignore=DL3007
45

56
ARG CACHE_HOSTED_TOOLS_DIRECTORY="/opt/hostedtoolcache"
6-
ENV CACHE_HOSTED_TOOLS_DIRECTORY=${CACHE_HOSTED_TOOLS_DIRECTORY}
7-
ARG GH_RUNNER_VERSION="2.313.0"
7+
ARG GH_RUNNER_VERSION="2.320.0"
88
ARG RUNNER_DIR="/actions-runner"
9-
ENV RUNNER_DIR=${RUNNER_DIR}
109
ARG CHOWN_USER="runner"
1110
ARG TARGETARCH
1211

12+
ENV CACHE_HOSTED_TOOLS_DIRECTORY=${CACHE_HOSTED_TOOLS_DIRECTORY} \
13+
RUNNER_DIR=${RUNNER_DIR}
14+
1315
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
1416

1517
RUN install -d -m 0755 -o ${CHOWN_USER} -g ${CHOWN_USER} ${CACHE_HOSTED_TOOLS_DIRECTORY}/nuget-packages /_work
1618

1719
WORKDIR ${RUNNER_DIR}
20+
1821
COPY --chown=${CHOWN_USER} *.sh .
22+
1923
RUN chmod +x entrypoint.sh \
2024
&& TARGET_ARCH=$(echo ${TARGETARCH} | sed 's/amd/x/') \
2125
&& wget -qO- "https://github.com/actions/runner/releases/download/v${GH_RUNNER_VERSION}/actions-runner-linux-$TARGET_ARCH-${GH_RUNNER_VERSION}.tar.gz" | tar xz \
@@ -25,4 +29,4 @@ RUN chmod +x entrypoint.sh \
2529

2630
ENTRYPOINT ["./entrypoint.sh"]
2731
CMD ["./bin/Runner.Listener", "run", "--startuptype", "service"]
28-
#
32+
#

Dockerfile.base

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,26 @@
1+
# syntax=docker/dockerfile:1
12
ARG BUILD_IMAGE=ubuntu:22.10
23
FROM ${BUILD_IMAGE}
34

45
ARG DUMB_INIT_VERSION=1.2.5
56
ARG GIT_CORE_PPA_KEY=A1715D88E1DF1F24
67
ARG CHOWN_USER=runner
78
ARG DOCKER_COMPOSE_VERSION=1.29.2
8-
ARG GIT_LFS_VERSION=3.4.1
9+
ARG GIT_LFS_VERSION=3.5.1
910
ARG LSB_RELEASE_CODENAME=focal
1011
ARG DOCKER_CODENAME=focal
1112
ARG DISTRO=ubuntu
1213
ARG TARGETARCH
1314

14-
ENV DOCKER_COMPOSE_VERSION=${DOCKER_COMPOSE_VERSION}
15-
ENV GIT_LFS_VERSION=${GIT_LFS_VERSION}
16-
ENV LANG=en_US.UTF-8
17-
ENV LANGUAGE=en_US.UTF-8
18-
ENV LC_ALL=en_US.UTF-8
19-
#SHELL ["/bin/bash", "-o", "pipefail", "-c"]
20-
ENV DEBIAN_FRONTEND=noninteractive
15+
ENV DOCKER_COMPOSE_VERSION=${DOCKER_COMPOSE_VERSION} \
16+
GIT_LFS_VERSION=${GIT_LFS_VERSION} \
17+
LANG=en_US.UTF-8 \
18+
LANGUAGE=en_US.UTF-8 \
19+
LC_ALL=en_US.UTF-8 \
20+
DEBIAN_FRONTEND=noninteractive
21+
22+
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
23+
2124
# hadolint ignore=SC2086,DL3015,DL3008,DL3013
2225
RUN echo en_US.UTF-8 UTF-8 >> /etc/locale.gen \
2326
&& apt-get update -qq \

Dockerfile.base-dotnet

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,26 @@
1+
# syntax=docker/dockerfile:1
12
ARG BUILD_IMAGE=ubuntu:20.04
23
FROM ${BUILD_IMAGE}
34

45
ARG DUMB_INIT_VERSION=1.2.5
56
ARG GIT_CORE_PPA_KEY=A1715D88E1DF1F24
67
ARG CHOWN_USER=runner
78
ARG DOCKER_COMPOSE_VERSION=1.29.2
8-
ARG GIT_LFS_VERSION=3.4.1
9+
ARG GIT_LFS_VERSION=3.5.1
910
ARG LSB_RELEASE_CODENAME=focal
1011
ARG DOCKER_CODENAME=focal
1112
ARG DISTRO=ubuntu
1213
ARG TARGETARCH
1314

14-
ENV DOCKER_COMPOSE_VERSION=${DOCKER_COMPOSE_VERSION}
15-
ENV GIT_LFS_VERSION=${GIT_LFS_VERSION}
16-
ENV LANG=en_US.UTF-8
17-
ENV LANGUAGE=en_US.UTF-8
18-
ENV LC_ALL=en_US.UTF-8
19-
#SHELL ["/bin/bash", "-o", "pipefail", "-c"]
20-
ENV DEBIAN_FRONTEND=noninteractive
15+
ENV DOCKER_COMPOSE_VERSION=${DOCKER_COMPOSE_VERSION} \
16+
GIT_LFS_VERSION=${GIT_LFS_VERSION} \
17+
LANG=en_US.UTF-8 \
18+
LANGUAGE=en_US.UTF-8 \
19+
LC_ALL=en_US.UTF-8 \
20+
DEBIAN_FRONTEND=noninteractive
21+
22+
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
23+
2124
# hadolint ignore=SC2086,DL3015,DL3008,DL3013
2225
RUN echo en_US.UTF-8 UTF-8 >> /etc/locale.gen \
2326
&& apt-get update -qq \

Dockerfile.base-slim

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# syntax=docker/dockerfile:1
12
ARG BUILD_IMAGE=debian:bullseye-slim
23
FROM ${BUILD_IMAGE}
34

@@ -8,12 +9,14 @@ ARG DOCKER_CODENAME=bullseye
89
ARG DISTRO=debian
910
ARG TARGETARCH
1011

11-
ENV DOCKER_COMPOSE_VERSION=${DOCKER_COMPOSE_VERSION}
12-
ENV LANG=en_US.UTF-8
13-
ENV LANGUAGE=en_US.UTF-8
14-
ENV LC_ALL=en_US.UTF-8
12+
ENV DOCKER_COMPOSE_VERSION=${DOCKER_COMPOSE_VERSION} \
13+
LANG=en_US.UTF-8 \
14+
LANGUAGE=en_US.UTF-8 \
15+
LC_ALL=en_US.UTF-8 \
16+
DEBIAN_FRONTEND=noninteractive
17+
1518
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
16-
ENV DEBIAN_FRONTEND=noninteractive
19+
1720
# hadolint ignore=SC2086,DL3015,DL3008,DL3013
1821
RUN echo en_US.UTF-8 UTF-8 >> /etc/locale.gen \
1922
&& apt-get update -qq \
@@ -64,4 +67,4 @@ RUN echo en_US.UTF-8 UTF-8 >> /etc/locale.gen \
6467
&& GH_CLI_DOWNLOAD_URL=$(curl -sSL -H "Accept: application/vnd.github+json" https://api.github.com/repos/cli/cli/releases/latest | jq ".assets[] | select(.name == \"gh_${GH_CLI_VERSION}_linux_${TARGETARCH}.deb\")" | jq -r '.browser_download_url') \
6568
&& curl -sSLo /tmp/ghcli.deb ${GH_CLI_DOWNLOAD_URL} && apt-get -y install /tmp/ghcli.deb \
6669
&& rm -rf /tmp/ghcli.deb /var/lib/apt/lists/* /tmp/*
67-
#
70+
#

Dockerfile.dotnet

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
1+
# syntax=docker/dockerfile:1
12
ARG BASE_IMAGE="derskythe/runner-base-slim:latest"
23
FROM ${BASE_IMAGE} AS base
34
# hadolint ignore=DL3007
45

5-
ARG GH_RUNNER_VERSION='2.313.0'
6+
ARG GH_RUNNER_VERSION='2.320.0'
67
ARG RUNNER_DIR="/actions-runner"
7-
ENV RUNNER_DIR=${RUNNER_DIR}
88
ARG CACHE_HOSTED_TOOLS_DIRECTORY="${RUNNER_DIR}/hostedtoolcache"
9-
ENV CACHE_HOSTED_TOOLS_DIRECTORY=${CACHE_HOSTED_TOOLS_DIRECTORY}
109
ARG CHOWN_USER="runner"
1110
ARG TARGETARCH
1211
ARG DISTRO
1312
ARG DISTRO_VERSION
1413

15-
# SDK version
16-
ENV DOTNET_VERSION='7.0'
17-
ENV PWSH_VERSION='7.3.3'
18-
ENV NUGET_PACKAGES=${CACHE_HOSTED_TOOLS_DIRECTORY}/nuget-packages
19-
ENV DOTNET_GENERATE_ASPNET_CERTIFICATE=false
20-
ENV DOTNET_NOLOGO=true
21-
ENV NUGET_XMLDOC_MODE=skip
14+
ENV CACHE_HOSTED_TOOLS_DIRECTORY=${CACHE_HOSTED_TOOLS_DIRECTORY} \
15+
RUNNER_DIR=${RUNNER_DIR} \
16+
DOTNET_VERSION='8.0' \
17+
PWSH_VERSION='7.4.6' \
18+
NUGET_PACKAGES=${CACHE_HOSTED_TOOLS_DIRECTORY}/nuget-packages \
19+
DOTNET_GENERATE_ASPNET_CERTIFICATE=false \
20+
DOTNET_NOLOGO=true \
21+
NUGET_XMLDOC_MODE=skip
2222

2323
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
2424

Dockerfile.slim

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
1+
# syntax=docker/dockerfile:1
12
ARG BASE_IMAGE="derskythe/github-runner-base:latest"
23
FROM ${BASE_IMAGE} AS base
34
# hadolint ignore=DL3007
45

5-
ARG GH_RUNNER_VERSION="2.303.0"
6+
ARG GH_RUNNER_VERSION="2.320.0"
67
ARG RUNNER_DIR="/actions-runner"
7-
ENV RUNNER_DIR=${RUNNER_DIR}
88
ARG CACHE_HOSTED_TOOLS_DIRECTORY="${RUNNER_DIR}/hostedtoolcache"
99
ARG CHOWN_USER="runner"
1010
ARG TARGETARCH
1111

1212
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
1313

14-
ENV NUGET_PACKAGES=${CACHE_HOSTED_TOOLS_DIRECTORY}/nuget-packages \
14+
ENV RUNNER_DIR=${RUNNER_DIR} \
15+
NUGET_PACKAGES=${CACHE_HOSTED_TOOLS_DIRECTORY}/nuget-packages \
1516
CACHE_HOSTED_TOOLS_DIRECTORY=${CACHE_HOSTED_TOOLS_DIRECTORY}
1617

1718
WORKDIR ${RUNNER_DIR}

Dockerfiles/Dockerfile.base-build

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,21 @@
22
ARG BUILD_IMAGE
33
FROM ${BUILD_IMAGE} AS build
44

5-
ENV RUNNER_DIR=${RUNNER_DIR}
6-
ARG CACHE_HOSTED_TOOLS_DIRECTORY="${RUNNER_DIR}/hostedtoolcache"
7-
ENV CACHE_HOSTED_TOOLS_DIRECTORY=${CACHE_HOSTED_TOOLS_DIRECTORY}
8-
ENV NUGET_PACKAGES=${CACHE_HOSTED_TOOLS_DIRECTORY}/nuget-packages
95
ARG TARGETARCH
10-
ENV DOTNET_GENERATE_ASPNET_CERTIFICATE=false
11-
ENV DOTNET_NOLOGO=true
12-
ENV NUGET_XMLDOC_MODE=skip
6+
ARG CACHE_HOSTED_TOOLS_DIRECTORY="${RUNNER_DIR}/hostedtoolcache"
137

14-
ENV LANG=en_US.UTF-8
15-
ENV LANGUAGE=en_US.UTF-8
16-
ENV LC_ALL=en_US.UTF-8
8+
ENV RUNNER_DIR=${RUNNER_DIR} \
9+
CACHE_HOSTED_TOOLS_DIRECTORY=${CACHE_HOSTED_TOOLS_DIRECTORY} \
10+
NUGET_PACKAGES=${CACHE_HOSTED_TOOLS_DIRECTORY}/nuget-packages \
11+
DOTNET_GENERATE_ASPNET_CERTIFICATE=false \
12+
DOTNET_NOLOGO=true \
13+
NUGET_XMLDOC_MODE=skip \
14+
LANG=en_US.UTF-8 \
15+
LANGUAGE=en_US.UTF-8 \
16+
LC_ALL=en_US.UTF-8 \
17+
DEBIAN_FRONTEND=noninteractive
1718
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
18-
ENV DEBIAN_FRONTEND=noninteractive
19+
1920
# hadolint ignore=SC2086,DL3015,DL3008,DL3013
2021
WORKDIR /tmp/git-src
2122
COPY ./variables/${TARGETARCH}_extra.env /tmp/${TARGETARCH}.env

Dockerfiles/Dockerfile.build-old

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
ARG BUILD_IMAGE=ubuntu:focal
1+
# syntax=docker/dockerfile:1
2+
ARG BUILD_IMAGE=ubuntu:focal
23
FROM ${BUILD_IMAGE} AS build
34

4-
ENV LANG=en_US.UTF-8
5-
ENV LANGUAGE=en_US.UTF-8
6-
ENV LC_ALL=en_US.UTF-8
5+
ENV LANG=en_US.UTF-8 \
6+
LANGUAGE=en_US.UTF-8 \
7+
LC_ALL=en_US.UTF-8 \
8+
DEBIAN_FRONTEND=noninteractive
79
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
8-
ENV DEBIAN_FRONTEND=noninteractive
910
# hadolint ignore=SC2086,DL3015,DL3008,DL3013
1011
RUN echo en_US.UTF-8 UTF-8 >> /etc/locale.gen \
1112
&& apt-get update -qq \
@@ -58,19 +59,20 @@ ARG DUMB_INIT_VERSION=1.2.2
5859
ARG GIT_CORE_PPA_KEY=A1715D88E1DF1F24
5960
ARG CHOWN_USER=runner
6061
ARG DOCKER_COMPOSE_VERSION=1.27.4
61-
ARG GIT_LFS_VERSION=3.2.0
62+
ARG GIT_LFS_VERSION=3.5.1
6263
ARG LSB_RELEASE_CODENAME=focal
6364
ARG DOCKER_CODENAME=focal
6465
ARG DISTRO=ubuntu
6566
ARG TARGETARCH
6667

67-
ENV DOCKER_COMPOSE_VERSION=${DOCKER_COMPOSE_VERSION}
68-
ENV GIT_LFS_VERSION=${GIT_LFS_VERSION}
69-
ENV LANG=en_US.UTF-8
70-
ENV LANGUAGE=en_US.UTF-8
71-
ENV LC_ALL=en_US.UTF-8
68+
ENV DOCKER_COMPOSE_VERSION=${DOCKER_COMPOSE_VERSION} \
69+
GIT_LFS_VERSION=${GIT_LFS_VERSION} \
70+
LANG=en_US.UTF-8 \
71+
LANGUAGE=en_US.UTF-8 \
72+
LC_ALL=en_US.UTF-8 \
73+
DEBIAN_FRONTEND=noninteractive
74+
7275
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
73-
ENV DEBIAN_FRONTEND=noninteractive
7476
# hadolint ignore=SC2086,DL3015,DL3008,DL3013
7577

7678
COPY --from=build /*.deb /tmp

app_token.sh

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
set -o pipefail
1313

1414
_GITHUB_HOST=${GITHUB_HOST:="github.com"}
15-
1615
# If URL is not github.com then use the enterprise api endpoint
1716
if [[ ${GITHUB_HOST} = "github.com" ]]; then
1817
URI="https://api.${_GITHUB_HOST}"
@@ -25,33 +24,30 @@ API_HEADER="Accept: application/vnd.github.${API_VERSION}+json"
2524
CONTENT_LENGTH_HEADER="Content-Length: 0"
2625
APP_INSTALLATIONS_URI="${URI}/app/installations"
2726

28-
2927
# JWT parameters based off
3028
# https://docs.github.com/en/developers/apps/building-github-apps/authenticating-with-github-apps#authenticating-as-a-github-app
3129
#
3230
# JWT token issuance and expiration parameters
3331
JWT_IAT_DRIFT=60
3432
JWT_EXP_DELTA=600
35-
3633
JWT_JOSE_HEADER='{
3734
"alg": "RS256",
3835
"typ": "JWT"
3936
}'
4037

41-
4238
build_jwt_payload() {
43-
now=$(date +%s)
44-
iat=$((now - JWT_IAT_DRIFT))
39+
NOW=$(date +%s)
40+
IAT=$((NOW - JWT_IAT_DRIFT))
4541
jq -c \
46-
--arg iat_str "${iat}" \
42+
--arg iat_str "${IAT}" \
4743
--arg exp_delta_str "${JWT_EXP_DELTA}" \
4844
--arg app_id_str "${APP_ID}" \
4945
'
50-
($iat_str | tonumber) as $iat
46+
($iat_str | tonumber) as $IAT
5147
| ($exp_delta_str | tonumber) as $exp_delta
5248
| ($app_id_str | tonumber) as $app_id
53-
| .iat = $iat
54-
| .exp = ($iat + $exp_delta)
49+
| .IAT = $IAT
50+
| .exp = ($IAT + $exp_delta)
5551
| .iss = $app_id
5652
' <<< "{}" | tr -d '\n'
5753
}
@@ -65,25 +61,28 @@ rs256_sign() {
6561
}
6662

6763
request_access_token() {
68-
jwt_payload=$(build_jwt_payload)
69-
encoded_jwt_parts=$(base64url <<<"${JWT_JOSE_HEADER}").$(base64url <<<"${jwt_payload}")
70-
encoded_mac=$(echo -n "${encoded_jwt_parts}" | rs256_sign "${APP_PRIVATE_KEY}" | base64url)
71-
generated_jwt="${encoded_jwt_parts}.${encoded_mac}"
64+
JWT_PAYLOAD=$(build_jwt_payload)
65+
ENCODED_JWT_PARTS=$(base64url <<<"${JWT_JOSE_HEADER}").$(base64url <<<"${JWT_PAYLOAD}")
66+
ENCODED_MAC=$(echo -n "${ENCODED_JWT_PARTS}" | rs256_sign "${APP_PRIVATE_KEY}" | base64url)
67+
GENERATED_JWT="${ENCODED_JWT_PARTS}.${ENCODED_MAC}"
7268

73-
auth_header="Authorization: Bearer ${generated_jwt}"
69+
AUTH_HEADER="Authorization: Bearer ${GENERATED_JWT}"
7470

75-
app_installations_response=$(curl -sX GET \
76-
-H "${auth_header}" \
71+
APP_INSTALLATIONS_RESPONSE=$(curl -sX GET \
72+
-H "${AUTH_HEADER}" \
7773
-H "${API_HEADER}" \
7874
"${APP_INSTALLATIONS_URI}" \
7975
)
80-
access_token_url=$(echo "${app_installations_response}" | jq --raw-output '.[] | select (.account.login == "'"${APP_LOGIN}"'" and .app_id == '"${APP_ID}"') .access_tokens_url')
76+
ACCESS_TOKEN_URL=$(echo "${APP_INSTALLATIONS_RESPONSE}" | \
77+
jq --raw-output '.[] | select (.account.login == "'"${APP_LOGIN}"'" and .app_id == '"${APP_ID}"') .access_tokens_url')
8178
curl -sX POST \
8279
-H "${CONTENT_LENGTH_HEADER}" \
83-
-H "${auth_header}" \
80+
-H "${AUTH_HEADER}" \
8481
-H "${API_HEADER}" \
85-
"${access_token_url}" | \
82+
"${ACCESS_TOKEN_URL}" | \
8683
jq --raw-output .token
8784
}
8885

8986
request_access_token
87+
88+
exit 0

0 commit comments

Comments
 (0)