continuous-integration/drone/push Build is passing
- .drone.yml: two command strings contained ": " and were parsed as maps
by Drone's YAML loader ("cannot unmarshal !!map into string"). Quoted.
- Filters: new type "regex-filter". The rule is a Go regular expression
tried against the channel name, the group title and the raw attribute
line; case-insensitive unless the filter is marked case sensitive.
Patterns are validated when the filter is saved and when rules are
rebuilt, and compiled once (cached). The two fixed {include}/!{exclude}
patterns are compiled at package level instead of per stream.
- Per-playlist buffer: a playlist's "buffer" parameter ("-", "xteve",
"ffmpeg", "vlc") overrides the global setting for that playlist in
the stream handler, the buffer start, the tuner lookup and the external
process buffer. Anything else falls back to the global setting.
(UI controls for both follow with the Phase 5 frontend work.)
- Tests: TestRegexFilter, TestBufferModeFor.
107 lines
3.3 KiB
YAML
107 lines
3.3 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
|
|
- 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
|