mylomen-server/.gitlab-ci.yml
2023-06-04 22:54:54 +08:00

69 lines
1.9 KiB
YAML

stages:
- build
- package
- deploy
.go-cache:
variables:
GOPATH: $CI_PROJECT_DIR/.go
before_script:
- mkdir -p .go
cache:
paths:
- .go/pkg/mod/
golang-build:
stage: build
image: golang:1.20.2
extends: .go-cache
script:
- |
export GOPROXY="https://goproxy.cn"
export GOPRIVATE="code.mylomen.com"
export GONOPROXY="code.mylomen.com"
export GONOSUMDB="code.mylomen.com"
go mod download
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -mod=mod -ldflags="-w -s" main.go
artifacts:
paths:
- ./main
expire_in: 1 hour
docker-package:
stage: package
services:
- name: docker:23.0.1-dind
script:
- |
docker info
APP_NAME=$(basename "$PWD")
echo ${APP_NAME}
docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
tag="${CI_REGISTRY}/mylomen/${APP_NAME}:${CI_COMMIT_BRANCH}-${CI_COMMIT_SHA}"
echo "Running on branch '$CI_COMMIT_BRANCH': tag = $tag" && pwd && ls && ifconfig
echo "docker build -t \"${tag}\" ."
docker build -t "${tag}" .
docker push "${tag}"
echo "CURRENT_IMAGE_URL=${tag}" > docker-build.env
echo "APP_NAME=${APP_NAME}" >> docker-build.env
docker rmi "${tag}"
rm ./main
artifacts:
reports:
dotenv: docker-build.env
deploy:
when: manual
image: laoma/nomad:v1
stage: deploy
script:
- nomad status -address=http://10.0.4.3:4646
- envsubst < nomad-job-test.tpl.hcl > nomad-job.hcl
- cat nomad-job.hcl
- nomad validate nomad-job.hcl
- nomad plan -address=http://10.0.4.3:4646 nomad-job.hcl 2>&1 |sed 's/\(password[^ \t]*[ \t]*\).*/\1 ... /' |tee plan.log || echo
- export INDEX=$(grep -E -o -- '-check-index [0-9]+' plan.log |tr -dc 0-9)
- nomad run -check-index $INDEX -address=http://10.0.4.3:4646 nomad-job.hcl
dependencies:
- docker-package