ARM64 Support, GitHub Actions Workflow

This commit is contained in:
Chris Pressland
2022-01-23 15:49:26 +00:00
committed by David Zuber
parent f834f328c1
commit 09159f4fb5
7 changed files with 79 additions and 36 deletions

32
.github/workflows/container.yaml vendored Normal file
View File

@ -0,0 +1,32 @@
---
name: Container Build
on:
push:
tags: ['[0-9]+.[0-9]+.[0-9]+']
jobs:
build:
name: build
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v2
- uses: docker/setup-qemu-action@v1
- uses: docker/setup-buildx-action@v1
- uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- id: version
run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}
- uses: docker/build-push-action@v2
with:
platforms: linux/amd64, linux/arm64
push: true
tags: |-
ghcr.io/${{ github.repository }}:latest
ghcr.io/${{ github.repository }}:${{ steps.version.outputs.VERSION }}

View File

@ -1,56 +1,57 @@
FROM golang:1.14-alpine AS gobuild
FROM golang:1.17-alpine AS build-kubedoom
WORKDIR /go/src/kubedoom
ADD go.mod .
ADD kubedoom.go .
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o kubedoom .
FROM ubuntu:20.10 AS ubuntu
# make sure the package repository is up to date
RUN apt-get update
FROM ubuntu AS ubuntu-deps
# Install dependencies
RUN apt-get install -y \
FROM ubuntu:21.10 AS build-essentials
ARG TARGETARCH
ARG KUBECTL_VERSION=1.23.2
RUN apt-get update && apt-get install -y \
-o APT::Install-Suggests=0 \
--no-install-recommends \
wget ca-certificates
RUN wget http://distro.ibiblio.org/pub/linux/distributions/slitaz/sources/packages/d/doom1.wad
RUN wget -O /usr/bin/kubectl https://storage.googleapis.com/kubernetes-release/release/$(wget -O- https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl \
RUN echo "TARGETARCH is $TARGETARCH"
RUN echo "KUBECTL_VERSION is $KUBECTL_VERSION"
RUN wget -O /usr/bin/kubectl "https://storage.googleapis.com/kubernetes-release/release/v${KUBECTL_VERSION}/bin/linux/${TARGETARCH}/kubectl" \
&& chmod +x /usr/bin/kubectl
FROM ubuntu AS ubuntu-build
FROM ubuntu:21.10 AS build-doom
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get install -y \
RUN apt-get update && apt-get install -y \
-o APT::Install-Suggests=0 \
--no-install-recommends \
build-essential \
libsdl-mixer1.2-dev \
libsdl-net1.2-dev \
gcc
# Setup doom
ADD /dockerdoom /dockerdoom
RUN cd /dockerdoom/trunk && ./configure && make && make install
WORKDIR /dockerdoom/trunk
RUN ./configure && make && make install
FROM ubuntu
RUN apt-get install -y \
FROM ubuntu:21.10 as build-converge
WORKDIR /build
RUN mkdir -p \
/build/root \
/build/usr/bin \
/build/usr/local/games
COPY --from=build-essentials /doom1.wad /build/root
COPY --from=build-essentials /usr/bin/kubectl /build/usr/bin
COPY --from=build-kubedoom /go/src/kubedoom/kubedoom /build/usr/bin
COPY --from=build-doom /usr/local/games/psdoom /build/usr/local/games
FROM ubuntu:21.10
RUN apt-get update && apt-get install -y \
-o APT::Install-Suggests=0 \
--no-install-recommends \
libsdl-mixer1.2 \
libsdl-net1.2 \
x11vnc \
xvfb \
netcat-openbsd
WORKDIR /root/
# Setup a password
RUN mkdir ~/.vnc && x11vnc -storepasswd idbehold ~/.vnc/passwd
COPY --from=ubuntu-deps /doom1.wad .
COPY --from=ubuntu-deps /usr/bin/kubectl /usr/bin/
COPY --from=ubuntu-build /usr/local/games/psdoom /usr/local/games/
COPY --from=gobuild /go/src/kubedoom/kubedoom .
ENTRYPOINT ["/root/kubedoom"]
netcat-openbsd \
&& rm -rf /var/lib/apt/lists/*
RUN mkdir /root/.vnc && x11vnc -storepasswd idbehold /root/.vnc/passwd
COPY --from=build-converge /build /
WORKDIR /root
ENTRYPOINT ["/usr/bin/kubedoom"]

3
go.mod Normal file
View File

@ -0,0 +1,3 @@
module kubedoom
go 1.17

View File

@ -1,3 +1,4 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
@ -18,8 +19,11 @@ spec:
hostNetwork: true
serviceAccountName: kubedoom
containers:
- image: storaxdev/kubedoom:0.5.0
name: kubedoom
ports:
- containerPort: 5900
name: vnc
- image: ghcr.io/storax/kubedoom:latest
env:
- name: NAMESPACE
value: default
name: kubedoom
ports:
- containerPort: 5900
name: vnc

View File

@ -1,3 +1,4 @@
---
resources:
- namespace.yaml
- deployment.yaml

View File

@ -1,3 +1,4 @@
---
apiVersion: v1
kind: Namespace
metadata:

View File

@ -1,3 +1,4 @@
---
apiVersion: v1
kind: ServiceAccount
metadata: