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 - 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 - 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 tags: - latest - ${DRONE_COMMIT_SHA} 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