diff --git a/.drone.yml b/.drone.yml index 0752392..c10e7cd 100644 --- a/.drone.yml +++ b/.drone.yml @@ -4,52 +4,56 @@ name: default type: docker steps: - - name: fetch image: alpine/git commands: - git fetch --tags - name: lint - image: golangci/golangci-lint:v1.24-alpine + image: golangci/golangci-lint:v1.31.0-alpine commands: - apk add --no-cache make - make lint - name: test - image: golang:1.14 + image: golang + pull: always commands: - make test - name: build - image: golang:1.14 + image: goreleaser/goreleaser commands: - - (cd /go; go get -v github.com/mitchellh/gox) - - (cd /go; go get -v github.com/vektra/mockery/.../) - make build + depends_on: + - test + - lint + when: + event: + exclude: + - tag - - name: docker - image: plugins/docker - settings: - repo: quay.io/xsteadfastx/jitsiexporter - registry: quay.io - auto_tag: true - username: - from_secret: username - password: - from_secret: password - - - name: publish to github - image: plugins/github-release - settings: - api_key: - from_secret: github_token - files: - - jitsiexporter_darwin_* - - jitsiexporter_freebsd_* - - jitsiexporter_linux_* - - jitsiexporter_netbsd_* - - jitsiexporter_openbsd_* - - jitsiexporter_windows_* + - name: release + image: golang + environment: + GITEA_TOKEN: + from_secret: gitea_token + commands: + - curl -sL https://git.io/goreleaser | bash + depends_on: + - test + - lint when: event: tag + # - name: docker + # image: plugins/docker + # settings: + # repo: quay.io/xsteadfastx/jitsiexporter + # registry: quay.io + # auto_tag: true + # username: + # from_secret: username + # password: + # from_secret: password + # when: + # event: tag diff --git a/.gitignore b/.gitignore index ab0050c..a261f29 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1 @@ -jitsiexporter_darwin_* -jitsiexporter_freebsd_* -jitsiexporter_linux_* -jitsiexporter_netbsd_* -jitsiexporter_openbsd_* -jitsiexporter_windows_* +dist/* diff --git a/.goreleaser.yml b/.goreleaser.yml new file mode 100644 index 0000000..cc40196 --- /dev/null +++ b/.goreleaser.yml @@ -0,0 +1,60 @@ +--- +gitea_urls: + api: https://git.xsfx.dev/api/v1/ + +builds: + - env: + - CGO_ENABLED=0 + goos: + - linux + - windows + - darwin + ldflags: + - > + -s -w + -extldflags "-static" + -X git.xsfx.dev/prometheus/jitsiexporter/cmd/main.version={{.Version}} + -X git.xsfx.dev/prometheus/jitsiexporter/cmd/main.commit={{.ShortCommit}} + -X git.xsfx.dev/prometheus/jitsiexporter/cmd/main.date={{.Date}} + main: "./cmd/jitsiexporter/main.go" + +archives: + - replacements: + darwin: macos + 386: i386 + format_overrides: + - goos: windows + format: zip + +dockers: + - image_templates: + - "quay.io/xsteadfastx/jitsiexporter:latest" + - "quay.io/xsteadfastx/jitsiexporter:{{ .Tag }}" + - "quay.io/xsteadfastx/jitsiexporter:{{ .Major }}" + dockerfile: Dockerfile + +checksum: + name_template: "checksums.txt" + +snapshot: + name_template: "{{ .Tag }}-next" + +changelog: + sort: asc + filters: + exclude: + - "^docs:" + - "^test:" + - "^Bump version:" + - "typo" + - "^debug:" + +nfpms: + - formats: + - apk + - deb + - rpm + replacements: + 386: i386 + homepage: https://git.xsfx.dev/prometheus/jitsiexporter + maintainer: Marvin Preuss diff --git a/Dockerfile b/Dockerfile index a43ab2b..4a43c6f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,4 @@ -FROM golang:1.14 AS base -RUN set -ex \ - && go get github.com/mitchellh/gox \ - && go get github.com/vektra/mockery/.../ - -FROM base AS builder -COPY . /go/src/github.com/xsteadfastx/jitsiexporter -WORKDIR /go/src/github.com/xsteadfastx/jitsiexporter -RUN set -ex \ - && make build - FROM scratch -COPY --from=builder /go/src/github.com/xsteadfastx/jitsiexporter/jitsiexporter_linux_amd64 /bin/jitsiexporter +COPY jitsiexporter / EXPOSE 9700 ENTRYPOINT ["/bin/jitsiexporter", "-debug=true", "-host=0.0.0.0"] diff --git a/Makefile b/Makefile index bd5b69a..6605cf1 100644 --- a/Makefile +++ b/Makefile @@ -1,22 +1,23 @@ -.PHONY: build clean test lint dep-update +.PHONY: generate build release clean test lint dep-update -VERSION ?= $(shell git describe --tags --always --dirty --match=v* 2> /dev/null || \ - echo v0) +generate: + GOFLAGS=-mod=vendor go generate ./... build: - export GOFLAGS=-mod=vendor ; \ - go generate ./...; \ - CGO_ENABLED=0 gox -mod vendor -ldflags '-extldflags "-static" -X "main.version=${VERSION}"' github.com/xsteadfastx/jitsiexporter/cmd/jitsiexporter + goreleaser build --rm-dist --snapshot + +release: + goreleaser release --rm-dist --snapshot --skip-publish clean: - rm -f jitsiexporter + rm -f dist/ test: export GOFLAGS=-mod=vendor ; \ - go test ./... + go test -v -race -cover ./... lint: - golangci-lint run --enable-all --timeout 5m + golangci-lint run --enable-all --disable=godox dep-update: go get -u ./... diff --git a/cmd/jitsiexporter/main.go b/cmd/jitsiexporter/main.go index dbf7e0d..02d700f 100644 --- a/cmd/jitsiexporter/main.go +++ b/cmd/jitsiexporter/main.go @@ -1,3 +1,4 @@ +// nolint: gochecknoglobals package main import ( @@ -10,7 +11,11 @@ import ( "github.com/xsteadfastx/jitsiexporter" ) -var version string = "development" +var ( + version = "dev" + commit = "none" + date = "unknown" +) func main() { ver := flag.Bool("version", false, "Prints version.") @@ -22,7 +27,7 @@ func main() { flag.Parse() if *ver { - fmt.Print(version) + fmt.Printf("jitsiexporter %s, commit %s, built at %s", version, commit, date) os.Exit(0) } diff --git a/go.mod b/go.mod index d28cc80..7bb0f2c 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/xsteadfastx/jitsiexporter +module git.xsfx.dev/prometheus/jitsiexporter go 1.14 diff --git a/jitsiexporter.go b/jitsiexporter.go index 3ab96c9..41663ee 100644 --- a/jitsiexporter.go +++ b/jitsiexporter.go @@ -34,7 +34,6 @@ func (m *Metrics) Update() error { defer m.mux.Unlock() now, err := m.Stater.Now(m.URL) - if err != nil { m.Errors.Inc() @@ -95,6 +94,7 @@ func get(ctx context.Context, url string, resp chan Response) { req, err := http.NewRequest("GET", url, nil) if err != nil { resp <- Response{Resp: nil, Error: err} + return } @@ -158,7 +158,7 @@ func collect(m *Metrics) { log.Error(err) } - time.Sleep(m.Interval) // nolint:gomnd + time.Sleep(m.Interval) } }