Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .github/actionlint.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
self-hosted-runner:
labels:
- self-hosted-single
- self-hosted-ubuntu
48 changes: 18 additions & 30 deletions .github/workflows/deploy-github-runners.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,15 +38,14 @@ jobs:
env:
REGISTRY_NAME: altinntjenestercontainerregistry
outputs:
base_image: ${{ steps.vars.outputs.base-image }}
config_repo: ${{ steps.vars.outputs.config-repo }}
coordinator_digest: ${{ steps.coordinator-image.outputs.digest }}
coordinator_repository: ${{ steps.vars.outputs.coordinator-repository }}
image_tag: ${{ steps.vars.outputs.short-sha }}
prepared_image: ${{ steps.vars.outputs.prepared-image }}
prepared_image_latest: ${{ steps.vars.outputs.prepared-image-latest }}
prepared_image_repository: ${{ steps.vars.outputs.prepared-image-repository }}
runner_digest: ${{ steps.base-image.outputs.digest }}
runner_digest: ${{ steps.runner-image.outputs.digest }}
runner_repository: ${{ steps.vars.outputs.runner-repository }}
defaults:
run:
Expand All @@ -61,8 +60,8 @@ jobs:
{
echo "short-sha=${SHA}"
echo "runner-repository=altinntjenestercontainerregistry.azurecr.io/altinn-studio/github-runner"
echo "base-image=altinntjenestercontainerregistry.azurecr.io/altinn-studio/github-runner:${SHA}"
echo "base-latest=altinntjenestercontainerregistry.azurecr.io/altinn-studio/github-runner:latest"
echo "runner-image=altinntjenestercontainerregistry.azurecr.io/altinn-studio/github-runner:${SHA}"
echo "runner-latest=altinntjenestercontainerregistry.azurecr.io/altinn-studio/github-runner:latest"
echo "coordinator-repository=altinntjenestercontainerregistry.azurecr.io/altinn-studio/github-runner-coordinator"
echo "coordinator-image=altinntjenestercontainerregistry.azurecr.io/altinn-studio/github-runner-coordinator:${SHA}"
echo "coordinator-latest=altinntjenestercontainerregistry.azurecr.io/altinn-studio/github-runner-coordinator:latest"
Expand Down Expand Up @@ -90,13 +89,13 @@ jobs:
echo "version=${GO_VERSION}" >> "$GITHUB_OUTPUT"

- name: Build and publish runner image
id: base-image
id: runner-image
env:
IMAGE: ${{ steps.vars.outputs.base-image }}
LATEST: ${{ steps.vars.outputs.base-latest }}
IMAGE: ${{ steps.vars.outputs.runner-image }}
LATEST: ${{ steps.vars.outputs.runner-latest }}
GO_VERSION: ${{ steps.go-version.outputs.version }}
run: |
METADATA_FILE="${RUNNER_TEMP}/github-runner-base-build.json"
METADATA_FILE="${RUNNER_TEMP}/github-runner-build.json"
docker buildx build \
--build-arg "GO_VERSION=${GO_VERSION}" \
--file Dockerfile \
Expand Down Expand Up @@ -139,7 +138,7 @@ jobs:
echo "digest=${IMAGE_DIGEST}" >> "$GITHUB_OUTPUT"

build-prepared-image:
name: Build prepared Sandbox image
name: Build prepared runner image
needs: build-images
runs-on: ubuntu-latest
environment: dev
Expand All @@ -166,7 +165,7 @@ jobs:
- name: az acr login
run: az acr login --name "${REGISTRY_NAME}"

- name: Export prepared Sandbox image
- name: Export prepared runner image
env:
COORDINATOR_DIGEST: ${{ needs.build-images.outputs.coordinator_digest }}
COORDINATOR_REPOSITORY: ${{ needs.build-images.outputs.coordinator_repository }}
Expand Down Expand Up @@ -195,7 +194,7 @@ jobs:
"${COORDINATOR_IMAGE}" \
export

- name: Build and publish prepared Sandbox image
- name: Build and publish prepared runner image
id: prepared-image
env:
COORDINATOR_DIGEST: ${{ needs.build-images.outputs.coordinator_digest }}
Expand Down Expand Up @@ -249,17 +248,6 @@ jobs:
- name: flux install
uses: fluxcd/flux2/action@889be9d6cc8afa8ed639e1e1ba4ab678e3b38d8c # v2.9.4

- name: patch base with image tag
working-directory: src/github-runner/infra/kustomize/base
env:
IMAGE: ${{ needs.build-images.outputs.base_image }}
IMAGE_TAG: ${{ needs.build-images.outputs.image_tag }}
run: |
for file in scaledjob.yaml scaledjob-single.yaml; do
yq -i '.metadata.annotations["altinn.studio/image"] = env(IMAGE)' "$file"
yq -i '.metadata.annotations["altinn.studio/image-tag"] = env(IMAGE_TAG)' "$file"
done

- name: Pin runner images by digest
working-directory: src/github-runner/infra/kustomize/base
env:
Expand All @@ -283,14 +271,14 @@ jobs:
.metadata.annotations["altinn.studio/runner-image-tag"] = strenv(IMAGE_TAG) |
.metadata.annotations["altinn.studio/prepared-image"] = strenv(PREPARED_IMAGE) |
.metadata.annotations["altinn.studio/prepared-image-tag"] = strenv(IMAGE_TAG)
' scaledjob-sandbox.yaml

test "$(yq -er '.metadata.annotations["altinn.studio/image"]' scaledjob-sandbox.yaml)" = "${COORDINATOR_IMAGE}"
test "$(yq -er '.metadata.annotations["altinn.studio/image-tag"]' scaledjob-sandbox.yaml)" = "${IMAGE_TAG}"
test "$(yq -er '.metadata.annotations["altinn.studio/runner-image"]' scaledjob-sandbox.yaml)" = "${RUNNER_IMAGE}"
test "$(yq -er '.metadata.annotations["altinn.studio/runner-image-tag"]' scaledjob-sandbox.yaml)" = "${IMAGE_TAG}"
test "$(yq -er '.metadata.annotations["altinn.studio/prepared-image"]' scaledjob-sandbox.yaml)" = "${PREPARED_IMAGE}"
test "$(yq -er '.metadata.annotations["altinn.studio/prepared-image-tag"]' scaledjob-sandbox.yaml)" = "${IMAGE_TAG}"
' scaledjob.yaml

test "$(yq -er '.metadata.annotations["altinn.studio/image"]' scaledjob.yaml)" = "${COORDINATOR_IMAGE}"
test "$(yq -er '.metadata.annotations["altinn.studio/image-tag"]' scaledjob.yaml)" = "${IMAGE_TAG}"
test "$(yq -er '.metadata.annotations["altinn.studio/runner-image"]' scaledjob.yaml)" = "${RUNNER_IMAGE}"
test "$(yq -er '.metadata.annotations["altinn.studio/runner-image-tag"]' scaledjob.yaml)" = "${IMAGE_TAG}"
test "$(yq -er '.metadata.annotations["altinn.studio/prepared-image"]' scaledjob.yaml)" = "${PREPARED_IMAGE}"
test "$(yq -er '.metadata.annotations["altinn.studio/prepared-image-tag"]' scaledjob.yaml)" = "${IMAGE_TAG}"

RENDERED="$(kubectl kustomize .)"
test "$(yq -er '.spec.jobTargetRef.template.spec.containers[] | select(.name == "coordinator") | .image' <<< "${RENDERED}")" = "${COORDINATOR_IMAGE}"
Expand Down
7 changes: 1 addition & 6 deletions src/github-runner/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,13 @@ ARG DOTNET_INSTALL_SCRIPT_SHA256=082f7685e156738a1b2e2ed8381a621870d4ce8e8c59278
USER root

COPY run.sh /usr/local/bin/altinn-github-runner
COPY run-with-dockerd.sh /usr/local/bin/altinn-github-runner-dind
COPY run-sandbox.sh /usr/local/bin/altinn-github-runner-sandbox
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
build-essential \
ca-certificates \
curl \
docker.io \
docker-compose-v2 \
e2fsprogs \
fonts-liberation \
git \
iproute2 \
Expand Down Expand Up @@ -83,8 +80,6 @@ RUN apt-get update \
&& ln -s /opt/chrome-for-testing/chrome-linux64/chrome /usr/bin/google-chrome \
&& ln -s /opt/chrome-for-testing/chrome-linux64/chrome /usr/bin/chrome \
&& rm -rf /var/lib/apt/lists/* \
&& chmod +x /usr/local/bin/altinn-github-runner \
&& chmod +x /usr/local/bin/altinn-github-runner-dind \
&& mkdir -p \
/home/runner/.cache/go-build \
/home/runner/.npm \
Expand Down Expand Up @@ -142,7 +137,7 @@ RUN KUBECTL_SHA256="$(curl -fsSL \
&& echo "${KUBECTL_SHA256} /tmp/kubectl" | sha256sum -c - \
&& install -m 0755 /tmp/kubectl /usr/local/bin/kubectl \
&& rm -f /tmp/kubectl \
&& chmod 0755 /usr/local/bin/altinn-github-runner-sandbox
&& chmod 0755 /usr/local/bin/altinn-github-runner

ENV CGO_ENABLED=1
ENV DOTNET_ROOT=/usr/share/dotnet
Expand Down
2 changes: 1 addition & 1 deletion src/github-runner/coordinator/src/coordinator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ use crate::{

const DEFAULT_RUNNER_HOME: &str = "/home/runner";
const DEFAULT_RUNNER_LABELS: &str = "self-hosted-ubuntu";
const RUNNER_ENTRYPOINT: &str = "/usr/local/bin/altinn-github-runner-sandbox";
const RUNNER_ENTRYPOINT: &str = "/usr/local/bin/altinn-github-runner";
const CLEANUP_TIMEOUT: Duration = Duration::from_mins(1);
const RUNNER_CLAIM_POLL_INTERVAL: Duration = Duration::from_secs(5);
// Conventional shell exit status: 128 + SIGTERM (15).
Expand Down
2 changes: 1 addition & 1 deletion src/github-runner/coordinator/src/github.rs
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ struct Runner {
impl GithubClient {
pub(crate) async fn authenticate(config: GithubConfig) -> Result<Self, AnyError> {
let client = Client::builder()
.user_agent("altinn-studio-sandbox-runner")
.user_agent("altinn-studio-github-runner")
.timeout(Duration::from_secs(30))
.build()?;
let jwt = app_jwt(config.app_id, &config.private_key)?;
Expand Down
25 changes: 4 additions & 21 deletions src/github-runner/infra/kustomize/base/kustomization.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- scaledjob.yaml
- scaledjob-single.yaml
- scaledjob-sandbox.yaml
- triggerauthentication.yaml
replacements:
- source:
Expand All @@ -14,41 +12,26 @@ replacements:
- select:
kind: ScaledJob
name: github-runners
fieldPaths:
- spec.jobTargetRef.template.spec.containers.[name=github-runner].image
- select:
kind: ScaledJob
name: github-runners-single
fieldPaths:
- spec.jobTargetRef.template.spec.containers.[name=github-runner].image
- source:
kind: ScaledJob
name: github-runners-sandbox
fieldPath: metadata.annotations.[altinn.studio/image]
targets:
- select:
kind: ScaledJob
name: github-runners-sandbox
fieldPaths:
- spec.jobTargetRef.template.spec.containers.[name=coordinator].image
- source:
kind: ScaledJob
name: github-runners-sandbox
name: github-runners
fieldPath: metadata.annotations.[altinn.studio/runner-image]
targets:
- select:
kind: ScaledJob
name: github-runners-sandbox
name: github-runners
fieldPaths:
- spec.jobTargetRef.template.spec.containers.[name=coordinator].env.[name=SANDBOX_IMAGE].value
- spec.jobTargetRef.template.spec.initContainers.[name=prepare-image].env.[name=SANDBOX_IMAGE].value
- source:
kind: ScaledJob
name: github-runners-sandbox
name: github-runners
fieldPath: metadata.annotations.[altinn.studio/prepared-image]
targets:
- select:
kind: ScaledJob
name: github-runners-sandbox
name: github-runners
fieldPaths:
- spec.jobTargetRef.template.spec.initContainers.[name=prepare-image].image
Loading