73 lines
1.6 KiB
YAML
73 lines
1.6 KiB
YAML
image: golang:latest
|
|
|
|
variables:
|
|
REPO_NAME: gitlab.com/mporrato/uBrowserSync
|
|
CMDS: "ubsserver"
|
|
PLATFORMS: "linux/amd64 linux/arm64 linux/armv6"
|
|
|
|
before_script:
|
|
- mkdir -p $GOPATH/src/$(dirname $REPO_NAME)
|
|
- ln -svf $CI_PROJECT_DIR $GOPATH/src/$REPO_NAME
|
|
- mkdir -p $CI_PROJECT_DIR/bin
|
|
- cd $GOPATH/src/$REPO_NAME
|
|
- go version
|
|
|
|
stages:
|
|
- lint
|
|
- test
|
|
- build
|
|
|
|
go-vet:
|
|
stage: lint
|
|
script:
|
|
- go vet $(go list ./... | grep -v /vendor/)
|
|
|
|
go-test:
|
|
stage: test
|
|
script:
|
|
- go test -race $(go list ./... | grep -v /vendor/)
|
|
|
|
go-build:
|
|
stage: build
|
|
script: |
|
|
for platform in $PLATFORMS ; do
|
|
IFS="/" read GOOS GOARCH <<< "$platform"
|
|
case $GOARCH in
|
|
armv*)
|
|
GOARM=$(tr -cd "0-9" <<< $GOARCH)
|
|
GOARCH=arm
|
|
SUFFIX="$GOOS-${GOARCH}v$GOARM"
|
|
export GOARM
|
|
;;
|
|
*)
|
|
SUFFIX="$GOOS-$GOARCH"
|
|
unset GOARM
|
|
;;
|
|
esac
|
|
export GOOS GOARCH
|
|
for bin in $CMDS ; do
|
|
echo "BUILDING $bin for $platform"
|
|
go build -ldflags="-s -w" -trimpath -o bin/$bin-$SUFFIX ./cmd/$bin
|
|
done
|
|
done
|
|
artifacts:
|
|
paths:
|
|
- bin/
|
|
|
|
docker-build:
|
|
image: docker:20
|
|
stage: build
|
|
services:
|
|
- docker:20-dind
|
|
variables:
|
|
IMAGE_NAME: $CI_REGISTRY_IMAGE/ubsserver
|
|
DOCKER_TLS_CERTDIR: "/certs"
|
|
before_script:
|
|
- docker version
|
|
script:
|
|
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
|
|
- docker build -f ./docker/ubsserver/Dockerfile -t $IMAGE_NAME:$CI_COMMIT_REF_NAME .
|
|
- docker tag $IMAGE_NAME:$CI_COMMIT_REF_NAME $IMAGE_NAME:latest
|
|
- docker push $IMAGE_NAME --all-tags
|
|
only:
|
|
- tags |