diff options
Diffstat (limited to '')
| -rw-r--r-- | Dockerfile | 3 | ||||
| -rw-r--r-- | cmd/main.go | 27 | ||||
| -rw-r--r-- | justfile | 41 |
3 files changed, 48 insertions, 23 deletions
@@ -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") } @@ -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}} |