continuous-integration/drone/push Build is passing
- Drone: an image-tags step writes .tags (latest, commit SHA, changelog version) for the master publish, so each release can be pulled and rolled back by version. The master publish step no longer hardcodes tags. - Version 2.2.0.0201 -> 2.3.0.0202 in xteve.go and changelog-beta.md, with a changelog entry covering the improvements branch. - README / README-DEV describe the version tag.
121 lines
3.8 KiB
YAML
121 lines
3.8 KiB
YAML
kind: pipeline
|
|
type: docker
|
|
name: default
|
|
|
|
steps:
|
|
- name: go-test
|
|
image: cache.coadcorp.com/library/golang:1.27.1
|
|
commands:
|
|
- go mod download
|
|
- go vet ./...
|
|
- 'test -z "$(gofmt -l .)" || (echo "gofmt needed" && gofmt -l . && exit 1)'
|
|
- go run honnef.co/go/tools/cmd/staticcheck@v0.8.1 ./...
|
|
- go test ./...
|
|
|
|
- name: webui-check
|
|
image: cache.coadcorp.com/library/node:22-alpine
|
|
commands:
|
|
- cp html/js/app.js /tmp/app.js.committed
|
|
- npm ci --no-audit --no-fund
|
|
- npm run build
|
|
- npm test
|
|
- cmp /tmp/app.js.committed html/js/app.js || (echo "html/js/app.js is stale - run 'npm run build' and commit the result" && exit 1)
|
|
|
|
- name: go-build
|
|
image: cache.coadcorp.com/library/golang:1.27.1
|
|
commands:
|
|
- XTEVE_VERSION="$(grep -m1 '^#### ' changelog-beta.md | cut -d' ' -f2 | sed 's/-beta$//')"
|
|
- test -n "$XTEVE_VERSION" || (echo "Could not parse version from changelog-beta.md" && exit 1)
|
|
- SRC_VERSION="$(grep -m1 '^var Version = ' xteve.go | cut -d'"' -f2)"
|
|
- 'test "$SRC_VERSION" = "$XTEVE_VERSION" || (echo "Version drift - xteve.go has $SRC_VERSION, changelog-beta.md has $XTEVE_VERSION" && exit 1)'
|
|
- echo "Building xTeVe version $XTEVE_VERSION from changelog-beta.md"
|
|
- go build -v -ldflags "-X main.Version=$XTEVE_VERSION" ./...
|
|
|
|
- name: dockerfile-lint
|
|
image: cache.coadcorp.com/hadolint/hadolint:v2.12.0-alpine
|
|
commands:
|
|
- hadolint -t error Dockerfile
|
|
|
|
- name: compose-validate
|
|
image: cache.coadcorp.com/library/docker:27-cli
|
|
commands:
|
|
- apk add --no-cache docker-cli-compose
|
|
- docker compose -f docker-compose.yml config -q
|
|
- docker compose -f docker-compose.host.yml config -q
|
|
|
|
- name: docker-build-validate
|
|
image: gcr.io/kaniko-project/executor:v1.23.2-debug
|
|
commands:
|
|
- /kaniko/executor --context "${DRONE_WORKSPACE}" --dockerfile "${DRONE_WORKSPACE}/Dockerfile" --no-push --destination xteve:validate --build-arg TARGETOS=linux --build-arg TARGETARCH=amd64 --build-arg XTEVE_UID=1000 --build-arg XTEVE_GID=1000
|
|
when:
|
|
event:
|
|
- pull_request
|
|
|
|
# plugins/docker reads its tag list from a .tags file when no "tags"
|
|
# setting is given. Master images get latest, the commit SHA and the
|
|
# release version from changelog-beta.md, so a release can be pulled by name.
|
|
- name: image-tags
|
|
image: cache.coadcorp.com/library/golang:1.27.1
|
|
commands:
|
|
- XTEVE_VERSION="$(grep -m1 '^#### ' changelog-beta.md | cut -d' ' -f2 | sed 's/-beta$//')"
|
|
- test -n "$XTEVE_VERSION"
|
|
- printf '%s' "latest,${DRONE_COMMIT_SHA},$XTEVE_VERSION" > .tags
|
|
- cat .tags
|
|
when:
|
|
event:
|
|
- push
|
|
branch:
|
|
- master
|
|
|
|
- name: docker-publish
|
|
image: plugins/docker
|
|
environment:
|
|
XTEVE_UID: "1000"
|
|
XTEVE_GID: "1000"
|
|
settings:
|
|
registry: registry.coadcorp.com
|
|
repo: registry.coadcorp.com/nathan/xteve
|
|
dockerfile: Dockerfile
|
|
username: nathan
|
|
password:
|
|
from_secret: registry_password
|
|
build_args:
|
|
- TARGETOS=linux
|
|
- TARGETARCH=amd64
|
|
build_args_from_env:
|
|
- XTEVE_UID
|
|
- XTEVE_GID
|
|
when:
|
|
event:
|
|
- push
|
|
branch:
|
|
- master
|
|
|
|
- name: docker-publish-branch
|
|
image: plugins/docker
|
|
environment:
|
|
XTEVE_UID: "1000"
|
|
XTEVE_GID: "1000"
|
|
settings:
|
|
registry: registry.coadcorp.com
|
|
repo: registry.coadcorp.com/nathan/xteve
|
|
dockerfile: Dockerfile
|
|
username: nathan
|
|
password:
|
|
from_secret: registry_password
|
|
tags:
|
|
- ${DRONE_BRANCH}
|
|
- ${DRONE_COMMIT_SHA}
|
|
build_args:
|
|
- TARGETOS=linux
|
|
- TARGETARCH=amd64
|
|
build_args_from_env:
|
|
- XTEVE_UID
|
|
- XTEVE_GID
|
|
when:
|
|
event:
|
|
- push
|
|
branch:
|
|
exclude:
|
|
- master
|