create builds using go and docker

This commit is contained in:
Bryson Steck 2025-06-29 13:47:56 -06:00
parent 696a49c3b4
commit 8b20500208
Signed by: bryson
SSH key fingerprint: SHA256:XpKABw/nP4z8UVaH+weLaBnEOD86+cVwif+QjuYLGT4
4 changed files with 76 additions and 1 deletions

3
.gitignore vendored
View file

@ -1 +1,2 @@
.vscode
.vscode/
out/

47
build Executable file
View file

@ -0,0 +1,47 @@
#!/bin/sh
# Create all the different builds for listen
# verify we are at root of repository
if ! [ -d .git ]; then
echo build: this script must be run at the root of the repo
exit 1
fi
build_go() {
go build -o out/$(go env GOOS)/listen .
}
build_docker() {
if [ $DOCKER_IMAGE ]; then
image=$DOCKER_IMAGE
else
image=1-alpine
fi
if echo $i | grep -q server; then
os=windows
exe=C:/build/listen/listen.exe
else
os=linux
exe=/usr/src/listen/listen
fi
echo building with $os image golang:$image
mkdir -p out/docker
docker build -t listen-build --build-arg IMAGE=$image -f docker/build.$os.Dockerfile .
docker create --name listen-build-tmp listen-build
docker cp listen-build-tmp:$exe out/docker
docker rm listen-build-tmp
}
mkdir -p out
# if an arg is specified, force building with the specified method
[ $1 ] && build_$1
# prefer building with local go install if it exists on path
if which go &> /dev/null; then
build_go
# otherwise, try building with docker
elif which docker &> /dev/null; then
build_docker
fi

View file

@ -0,0 +1,14 @@
# This Dockerfile is meant for building listen for Linux ONLY
# listen is currently not intended to run in a Docker container
ARG IMAGE
FROM golang:${IMAGE} AS build
WORKDIR /usr/src/listen
COPY . .
RUN apk upgrade --no-cache
RUN go build .
CMD ["tail", "-f", "/dev/null"]

View file

@ -0,0 +1,13 @@
# This Dockerfile is meant for building listen for Windows ONLY
# listen is currently not intended to run in a Docker container
ARG IMAGE
FROM golang:${IMAGE} AS build
WORKDIR C:/build/listen
COPY . .
RUN go build .
CMD ["ping.exe", "-t", "localhost"]