From 6e437e3ac3fecf6a289a6ea4cd35ad1f1bce8b90 Mon Sep 17 00:00:00 2001 From: Greg Cymbalski Date: Thu, 20 Jun 2024 14:33:47 -0700 Subject: [PATCH 1/7] Initial setup for packaging ScoutFS fencing scripts --- .dockerignore | 5 +++++ Dockerfile | 23 +++++++++++++++++++++++ package.sh | 4 ++++ 3 files changed, 32 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 package.sh diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..a6f958b --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +# .dockerignore + +* +!fencing/ +!package.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..080c13a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +FROM golang:latest + +# Set build arguments with default values +ARG VERSION="none" +ARG BUILD="none" +ARG TIME="none" +ARG GOPROXY=http://yum-repo.vpn.versity.com:4000 + +# Set environment variables +ENV VERSION=${VERSION} +ENV BUILD=${BUILD} +ENV TIME=${TIME} +ENV GOPROXY=${GOPROXY} + +ENV CGO_ENABLED=0 +RUN go install github.com/goreleaser/nfpm/v2/cmd/nfpm@latest + +COPY fencing/fence-remote-host /scoutfs-fencing/ +COPY fencing/README.md /scoutfs-fencing/ + +COPY package.sh / + +ENTRYPOINT [ "/bin/bash" ] diff --git a/package.sh b/package.sh new file mode 100644 index 0000000..30035bd --- /dev/null +++ b/package.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +export PATH="/go/bin:${PATH}" + From cb62c646d842de11988ed609c5eb739be278b301 Mon Sep 17 00:00:00 2001 From: Greg Cymbalski Date: Thu, 20 Jun 2024 14:59:38 -0700 Subject: [PATCH 2/7] Simplify, make executable --- package.sh | 1 + 1 file changed, 1 insertion(+) mode change 100644 => 100755 package.sh diff --git a/package.sh b/package.sh old mode 100644 new mode 100755 index 30035bd..bd5e615 --- a/package.sh +++ b/package.sh @@ -2,3 +2,4 @@ export PATH="/go/bin:${PATH}" +cd /scoutfs-fencing && nfpm pkg --packager rpm --conf /scoutfs-fencing/nfpm.yaml --target /package From 98f3a464df94feb92cba209a42b847a4b328dd8e Mon Sep 17 00:00:00 2001 From: Greg Cymbalski Date: Thu, 20 Jun 2024 15:00:39 -0700 Subject: [PATCH 3/7] Use bundled NFPM config --- .dockerignore | 1 + Dockerfile | 1 + nfpm.yaml | 21 +++++++++++++++++++++ package.sh | 2 +- 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 nfpm.yaml diff --git a/.dockerignore b/.dockerignore index a6f958b..23f1ca4 100644 --- a/.dockerignore +++ b/.dockerignore @@ -3,3 +3,4 @@ * !fencing/ !package.sh +!nfpm.yaml diff --git a/Dockerfile b/Dockerfile index 080c13a..4636c3e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,5 +19,6 @@ COPY fencing/fence-remote-host /scoutfs-fencing/ COPY fencing/README.md /scoutfs-fencing/ COPY package.sh / +COPY nfpm.yaml /scoutfs-fencing/ ENTRYPOINT [ "/bin/bash" ] diff --git a/nfpm.yaml b/nfpm.yaml new file mode 100644 index 0000000..463f312 --- /dev/null +++ b/nfpm.yaml @@ -0,0 +1,21 @@ +name: "scoutfs-scripts" +arch: "amd64" +platform: "linux" +version: "${VERSION}" +section: "default" +priority: "extra" +provides: +- scoutfs-scripts +maintainer: "Versity " +description: | + This includes various support scripts and extra documentation for advanced ScoutFS usage. +vendor: "Versity, Inc." +homepage: "http://versity.com" +license: "" +umask: 0o002 +#changelog: "changelog.yaml" +contents: +- src: /scoutfs-fencing/fence-remote-host + dst: /usr/libexec/scoutfs-fenced/run/fence-remote-host +- src: /scoutfs-fencing/README.md + dst: /usr/libexec/scoutfs-fenced/run/README.md diff --git a/package.sh b/package.sh index bd5e615..dea4ee2 100755 --- a/package.sh +++ b/package.sh @@ -2,4 +2,4 @@ export PATH="/go/bin:${PATH}" -cd /scoutfs-fencing && nfpm pkg --packager rpm --conf /scoutfs-fencing/nfpm.yaml --target /package +nfpm pkg --packager rpm --conf /scoutfs-fencing/nfpm.yaml --target /package From d2127f20ecbd43407e9a2ac577069419cf30604d Mon Sep 17 00:00:00 2001 From: Greg Cymbalski Date: Thu, 20 Jun 2024 15:06:36 -0700 Subject: [PATCH 4/7] Build and collect package artifact, using git tag as version --- Dockerfile | 2 +- build_package.sh | 9 +++++++++ package/.keep | 0 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100755 build_package.sh create mode 100644 package/.keep diff --git a/Dockerfile b/Dockerfile index 4636c3e..23223bc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,4 +21,4 @@ COPY fencing/README.md /scoutfs-fencing/ COPY package.sh / COPY nfpm.yaml /scoutfs-fencing/ -ENTRYPOINT [ "/bin/bash" ] +ENTRYPOINT [ "/package.sh" ] diff --git a/build_package.sh b/build_package.sh new file mode 100755 index 0000000..d6b66e5 --- /dev/null +++ b/build_package.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +set -ex + +export VERSION +VERSION="$(git describe --all)" + +docker build -t versity-scripts:latest . + +docker run --rm -e "VERSION=${VERSION}" -v /package:${PWD}/package supportbuilder:latest diff --git a/package/.keep b/package/.keep new file mode 100644 index 0000000..e69de29 From c299f6b59312fcb0392afc730fd44911197a7134 Mon Sep 17 00:00:00 2001 From: Greg Cymbalski Date: Thu, 20 Jun 2024 15:34:57 -0700 Subject: [PATCH 5/7] Working package generation for support scripts --- Dockerfile | 5 ++++- build_package.sh | 13 ++++++++++--- package.sh | 4 +++- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 23223bc..f9aa10c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,7 @@ -FROM golang:latest +ARG GOLANG_IMAGE_NAME="golang" +ARG GOLANG_IMAGE_VERSION="latest" + +FROM ${GOLANG_IMAGE_NAME}:${GOLANG_IMAGE_VERSION} # Set build arguments with default values ARG VERSION="none" diff --git a/build_package.sh b/build_package.sh index d6b66e5..6bd5145 100755 --- a/build_package.sh +++ b/build_package.sh @@ -1,9 +1,16 @@ #!/usr/bin/env bash set -ex +PULL="${PULL:-true}" +GOLANG_IMAGE_NAME="${GOLANG_IMAGE_NAME:-golang}" +GOLANG_IMAGE_VERSION="${GOLANG_IMAGE_VERSION:-latest}" + export VERSION -VERSION="$(git describe --all)" +VERSION="$(git describe --tags)" -docker build -t versity-scripts:latest . +docker build --pull="${PULL}" \ + --build-arg "GOLANG_IMAGE_NAME=${GOLANG_IMAGE_NAME}" \ + --build-arg "GOLANG_IMAGE_VERSION=${GOLANG_IMAGE_VERSION}" \ + -t "versity-scripts:${VERSION}" . -docker run --rm -e "VERSION=${VERSION}" -v /package:${PWD}/package supportbuilder:latest +docker run --rm -e "HOST_UID=${UID}" -e "VERSION=${VERSION}" -v "${PWD}/package:/package" "versity-scripts:${VERSION}" diff --git a/package.sh b/package.sh index dea4ee2..efc7bb8 100755 --- a/package.sh +++ b/package.sh @@ -1,5 +1,7 @@ #!/usr/bin/env bash export PATH="/go/bin:${PATH}" +HOST_UID="${HOST_UID:-$UID}" -nfpm pkg --packager rpm --conf /scoutfs-fencing/nfpm.yaml --target /package +nfpm pkg --packager rpm --config /scoutfs-fencing/nfpm.yaml --target /package +chown -R "${HOST_UID}" /package From d0187a5665fafd267120e7e75eb08e19e058b540 Mon Sep 17 00:00:00 2001 From: Greg Cymbalski Date: Thu, 20 Jun 2024 15:41:32 -0700 Subject: [PATCH 6/7] Make this executable --- fencing/fence-remote-host | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 fencing/fence-remote-host diff --git a/fencing/fence-remote-host b/fencing/fence-remote-host old mode 100644 new mode 100755 From 48917c1035fe3aa5524e25482f9f852a0252c303 Mon Sep 17 00:00:00 2001 From: Greg Cymbalski Date: Fri, 21 Jun 2024 13:14:35 -0700 Subject: [PATCH 7/7] Include ipmi-remote-host --- nfpm.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nfpm.yaml b/nfpm.yaml index 463f312..31dfd03 100644 --- a/nfpm.yaml +++ b/nfpm.yaml @@ -17,5 +17,7 @@ umask: 0o002 contents: - src: /scoutfs-fencing/fence-remote-host dst: /usr/libexec/scoutfs-fenced/run/fence-remote-host +- src: /scoutfs-fencing/ipmi-remote-host + dst: /usr/libexec/scoutfs-fenced/run/ipmi-remote-host - src: /scoutfs-fencing/README.md dst: /usr/libexec/scoutfs-fenced/run/README.md