···11+builder:
22+ stage: build
33+ image: quay.io/buildah/stable
44+ variables:
55+ # Use vfs with buildah. Docker offers overlayfs as a default, but Buildah
66+ # cannot stack overlayfs on top of another overlayfs filesystem.
77+ STORAGE_DRIVER: vfs
88+ # Write all image metadata in the docker format, not the standard OCI format.
99+ # Newer versions of docker can handle the OCI format, but older versions, like
1010+ # the one shipped with Fedora 30, cannot handle the format.
1111+ # BUILDAH_FORMAT: docker
1212+ FQ_IMAGE_NAME: "$CI_REGISTRY_IMAGE:builder"
1313+ before_script:
1414+ # GitLab container registry credentials taken from the
1515+ # [predefined CI/CD variables](../variables/index.md#predefined-cicd-variables)
1616+ # to authenticate to the registry.
1717+ - echo "$CI_REGISTRY_PASSWORD" | buildah login -u "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY
1818+ script:
1919+ - cd docker && buildah build -t $FQ_IMAGE_NAME -f build.Dockerfile
2020+ - buildah push $FQ_IMAGE_NAME
2121+2222+build:
2323+ stage: build
2424+ needs:
2525+ - builder
2626+ image: "$CI_REGISTRY_IMAGE:builder"
2727+ script:
2828+ - make all
2929+ artifacts:
3030+ name: "$CI_COMMIT_REF_NAME"
3131+ paths:
3232+ - bin/aquareum-linux-amd64.tar.gz
3333+ - bin/aquareum-linux-arm64.tar.gz
+37-2
Makefile
···11+OUT_DIR?="bin"
22+$(shell mkdir -p $(OUT_DIR))
1322-.phony: default
33-default:
44+.PHONY: default
55+default: app node
66+77+.PHONY: app
88+app:
49 pnpm install
510 pnpm run -r build
1111+1212+.PHONY: node
1313+node:
1414+ go build -o $(OUT_DIR)/aquareum ./cmd/aquareum
1515+1616+.PHONY: all
1717+all: app node-all-platforms
1818+1919+.PHONY: node-all-platforms
2020+node-all-platforms:
2121+ for GOOS in linux; do \
2222+ for GOARCH in amd64 arm64; do \
2323+ GOOS=$$GOOS GOARCH=$$GOARCH $(MAKE) node OUT_DIR=bin/$$GOOS-$$GOARCH \
2424+ && cd bin/$$GOOS-$$GOARCH \
2525+ && tar -czvf ../aquareum-$$GOOS-$$GOARCH.tar.gz ./aquareum \
2626+ && cd -; \
2727+ done \
2828+ done
2929+3030+.PHONY: docker-build
3131+docker-build: docker-build-builder docker-build-in-container
3232+3333+.PHONY: docker-build-builder
3434+docker-build-builder:
3535+ cd docker \
3636+ && docker build --os=linux --arch=amd64 -f build.Dockerfile -t aqrm.io/aquareum-tv/aquareum:builder .
3737+3838+.PHONY: docker-build-builder
3939+docker-build-in-container:
4040+ docker run -v $$(pwd):$$(pwd) -w $$(pwd) --rm -it aqrm.io/aquareum-tv/aquareum:builder make