aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Resnick <max@ofmax.li>2024-08-04 22:12:07 -0700
committerMax Resnick <max@ofmax.li>2024-08-04 22:12:07 -0700
commitf3b1eecc68cdabf7296c05fcd9e96317c0c1c8f2 (patch)
treef472ad69e129b12e92d27c70a6faf53e2f30e988
parent1d913224d3f0ea1381e1704c46b805619d61f19f (diff)
downloadgo-git-server-f3b1eecc68cdabf7296c05fcd9e96317c0c1c8f2.tar.gz
feat: add version reporting to server
-rw-r--r--Dockerfile3
-rw-r--r--cmd/main.go27
-rw-r--r--justfile41
3 files changed, 48 insertions, 23 deletions
diff --git a/Dockerfile b/Dockerfile
index a005659..41e3d37 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,5 +1,6 @@
FROM golangci/golangci-lint:latest as golangci
FROM golang:1.22.0-bookworm as base
+ARG version
RUN mkdir -p /app
WORKDIR /app
@@ -8,7 +9,7 @@ COPY --from=golangci /usr/bin/golangci-lint /usr/bin/golangci-lint
COPY . /app/
RUN curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to /usr/local/bin
-RUN just build
+RUN just build $version
FROM public.ecr.aws/s0f9o2k5/base:v0.1.0
RUN useradd -s /usr/sbin/nologin \
diff --git a/cmd/main.go b/cmd/main.go
index 755a005..c6b9854 100644
--- a/cmd/main.go
+++ b/cmd/main.go
@@ -14,16 +14,18 @@ import (
)
var (
- reposDir string
- mgmtRepo bool
- backendCommand string
- loggingLevel string
- addr string
- modelPath string
- policyPath string
- serverConfigPath string
- tokenFilePath string
- newToken bool
+ reposDir string
+ mgmtRepo bool
+ backendCommand string
+ loggingLevel string
+ addr string
+ modelPath string
+ policyPath string
+ serverConfigPath string
+ tokenFilePath string
+ newToken bool
+ goGitServerVersion string
+ showVersion bool
)
var (
@@ -42,6 +44,10 @@ func main() {
os.Exit(1)
}
slog.SetLogLoggerLevel(level)
+ slog.Info("go-git-server", "version", goGitServerVersion)
+ if showVersion {
+ os.Exit(0)
+ }
if newToken {
token, hash, err := authz.GenerateNewToken()
if err != nil {
@@ -91,4 +97,5 @@ func init() {
flag.StringVar(&reposDir, "r", "./repos", "Directory containing git repositories")
flag.BoolVar(&mgmtRepo, "a", false, "mgmt repo used for configuration")
flag.BoolVar(&newToken, "g", false, "make a new token")
+ flag.BoolVar(&showVersion, "v", false, "show version of go-git-server")
}
diff --git a/justfile b/justfile
index 6a9cf4f..da736c9 100644
--- a/justfile
+++ b/justfile
@@ -1,11 +1,17 @@
TEMPDIR := `mktemp -d`
BUILDDIR := "_build"
+ALL_VERSIONS := BUILDDIR / "ALL_VERSIONS"
+NEW_VERSION := BUILDDIR / "NEW_VERSION"
+CURRENT_VERSION := BUILDDIR / "CURRENT_VERSION"
+COMMIT := `git rev-parse --short HEAD`
+TAGS := `git tag -l > _build/ALL_VERSIONS`
+
alias dr := debug-run
alias dt := debug-test
-
-docker tag:
- docker build -t go-git-server:{{tag}} .
+docker part: (new_ver part)
+ new_ver=$(cat {{ NEW_VERSION }}); \
+ docker build --build-arg="version=$new_ver" -t go-git-server:$new_ver .
docker-run:
docker run -it --rm -p 8080:8080 --volume $(pwd)/tokens.csv:/opt/app/etc/tokens.csv go-git-server
@@ -13,19 +19,31 @@ docker-run:
clean:
rm -r {{ BUILDDIR }}
+new_ver part="latest":
+ #!/usr/bin/env bash
+ set -euxo pipefail
+ CURRENT_VER=$(bumpver --last-version patch {{ ALL_VERSIONS }})
+ if [[ {{part}} == "latest" ]];
+ then
+ echo $CURRENT_VER | bumpver patch --prerelease --prerelease-fmt 'latest.$KeyArg commit' -k commit={{COMMIT}} - > {{ NEW_VERSION }}
+ else
+ bumpver {{part}} <(git tag -l) > {{ NEW_VERSION }}
+ fi
+
builddir:
mkdir -p {{ BUILDDIR }}/etc
mkdir -p {{ BUILDDIR }}/bin
+ cp policy.csv auth_model.ini gitserver.yaml {{ BUILDDIR }}/etc/
-release part: build
+release part:
#!/usr/bin/env bash
set -euxo pipefail
- current_ver=$(bumpver {{part}} <(git tag -l))
- new_ver=$(bumpver {{part}} <(git tag -l))
- # temp tag for release notes
- git tag $new_ver
+ new_ver=$(cat {{ NEW_VERSION }})
+ current_ver=$(cat {{ CURRENT_VERSION }})
+ # temp light weight tag for building release notes
+ git tag $new_var
echo "v${new_ver} release" > {{ TEMPDIR }}/chglog
- git-chglog $current_ver..$new_ver >> {{ TEMPDIR }}/chglog
+ git-chglog $curent_ver..$new_ver >> {{ TEMPDIR }}/chglog
echo "## Coverage" >> {{ TEMPDIR }}/chglog
echo "" >> {{ TEMPDIR }}/chglog
go tool cover -func={{ TEMPDIR }}/testcover.out >> {{ TEMPDIR }}/chglog
@@ -34,9 +52,8 @@ release part: build
git tag --annotate --sign --cleanup=whitespace --file {{ TEMPDIR }}/chglog ${new_ver}
git push origin ${new_ver}
-build: test builddir
- cp policy.csv auth_model.ini gitserver.yaml {{ BUILDDIR }}/etc/
- CGO_ENABLED=0 go build -a -ldflags '-s' -o {{ BUILDDIR }}//bin/go-git-server cmd/main.go
+build version: test builddir
+ CGO_ENABLED=0 go build -a -ldflags "-s -X 'main.goGitServerVersion={{version}}'" -o {{ BUILDDIR }}//bin/go-git-server cmd/main.go
push tag="latest" registry="public.ecr.aws/s0f9o2k5": (docker tag)
docker tag go-git-server:latest {{registry}}/go-git-server:{{tag}}