Live video on the AT Protocol

ci: publish packages

See merge request aquareum-tv/aquareum!3

+23 -11
+3 -7
.gitlab-ci.yml
··· 9 9 # Newer versions of docker can handle the OCI format, but older versions, like 10 10 # the one shipped with Fedora 30, cannot handle the format. 11 11 # BUILDAH_FORMAT: docker 12 - FQ_IMAGE_NAME: "$CI_REGISTRY_IMAGE:builder" 12 + FQ_IMAGE_NAME: "$CI_REGISTRY_IMAGE:builder-$CI_COMMIT_SHA" 13 13 before_script: 14 14 # GitLab container registry credentials taken from the 15 15 # [predefined CI/CD variables](../variables/index.md#predefined-cicd-variables) ··· 23 23 stage: build 24 24 needs: 25 25 - builder 26 - image: "$CI_REGISTRY_IMAGE:builder" 26 + image: "$CI_REGISTRY_IMAGE:builder-$CI_COMMIT_SHA" 27 27 script: 28 28 - make all 29 - artifacts: 30 - name: "$CI_COMMIT_REF_NAME" 31 - paths: 32 - - bin/aquareum-linux-amd64.tar.gz 33 - - bin/aquareum-linux-arm64.tar.gz 29 + - make ci-upload
+16 -2
Makefile
··· 1 1 OUT_DIR?="bin" 2 2 $(shell mkdir -p $(OUT_DIR)) 3 + VERSION=$(shell git describe --long --tags --dirty | sed 's/-[0-9]*-g/-/') 3 4 4 5 .PHONY: default 5 6 default: app node ··· 11 12 12 13 .PHONY: node 13 14 node: 14 - go build -o $(OUT_DIR)/aquareum ./cmd/aquareum 15 + go build -ldflags="-X 'main.Version=$(VERSION)'" -o $(OUT_DIR)/aquareum ./cmd/aquareum 15 16 16 17 .PHONY: all 17 18 all: app node-all-platforms ··· 22 23 for GOARCH in amd64 arm64; do \ 23 24 GOOS=$$GOOS GOARCH=$$GOARCH $(MAKE) node OUT_DIR=bin/$$GOOS-$$GOARCH \ 24 25 && cd bin/$$GOOS-$$GOARCH \ 25 - && tar -czvf ../aquareum-$$GOOS-$$GOARCH.tar.gz ./aquareum \ 26 + && tar -czvf ../aquareum-$(VERSION)-$$GOOS-$$GOARCH.tar.gz ./aquareum \ 26 27 && cd -; \ 27 28 done \ 28 29 done ··· 38 39 .PHONY: docker-build-builder 39 40 docker-build-in-container: 40 41 docker run -v $$(pwd):$$(pwd) -w $$(pwd) --rm -it aqrm.io/aquareum-tv/aquareum:builder make 42 + 43 + .PHONY: ci-upload 44 + ci-upload: 45 + for GOOS in linux; do \ 46 + for GOARCH in amd64 arm64; do \ 47 + export file=aquareum-$(VERSION)-$$GOOS-$$GOARCH.tar.gz \ 48 + && curl --fail-with-body --header "JOB-TOKEN: $$CI_JOB_TOKEN" --upload-file bin/$$file "$$CI_API_V4_URL/projects/$$CI_PROJECT_ID/packages/generic/aquareum/$(VERSION)/$$file"; \ 49 + done \ 50 + done 51 + 52 + .PHONY: version 53 + version: 54 + @echo $(VERSION)
+3 -1
cmd/aquareum/aquareum.go
··· 8 8 "aquareum.tv/aquareum/packages/app" 9 9 ) 10 10 11 + var Version = "unknown" 12 + 11 13 func main() { 12 - fmt.Println("hello world") 13 14 files, err := app.Files() 14 15 if err != nil { 15 16 panic(err) 16 17 } 17 18 http.Handle("/", http.FileServer(http.FS(files))) 19 + fmt.Printf("aquareum version %s\n", Version) 18 20 log.Fatal(http.ListenAndServe(":8080", nil)) 19 21 }
+1 -1
docker/build.Dockerfile
··· 6 6 ENV GO_VERSION 1.22.4 7 7 ENV NODE_VERSION 22.3.0 8 8 9 - RUN apt update && apt install -y build-essential curl 9 + RUN apt update && apt install -y build-essential curl git 10 10 RUN curl -L --fail https://go.dev/dl/go$GO_VERSION.linux-$TARGETARCH.tar.gz -o go.tar.gz \ 11 11 && tar -C /usr/local -xf go.tar.gz \ 12 12 && rm go.tar.gz