Skip to content

Commit a13597e

Browse files
committed
update build system
Signed-off-by: Markus Blaschke <mblaschke82@gmail.com>
1 parent f7b3ee2 commit a13597e

File tree

5 files changed

+125
-99
lines changed

5 files changed

+125
-99
lines changed

.github/workflows/release-docker.yml

Lines changed: 49 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -11,39 +11,52 @@ jobs:
1111
build:
1212
runs-on: ubuntu-latest
1313
steps:
14-
- uses: actions/checkout@v2
15-
- name: Docker meta
16-
id: docker_meta
17-
uses: crazy-max/ghaction-docker-meta@v1
18-
with:
19-
images: webdevops/azure-loganalytics-exporter,quay.io/webdevops/azure-loganalytics-exporter
20-
#tag-sha: true
21-
22-
- name: Set up QEMU
23-
uses: docker/setup-qemu-action@v1
24-
25-
- name: Set up Docker Buildx
26-
uses: docker/setup-buildx-action@v1
27-
28-
- name: Login to DockerHub
29-
uses: docker/login-action@v1
30-
with:
31-
username: ${{ secrets.DOCKERHUB_USERNAME }}
32-
password: ${{ secrets.DOCKERHUB_TOKEN }}
33-
34-
- name: Login to Quay
35-
uses: docker/login-action@v1
36-
with:
37-
registry: quay.io
38-
username: ${{ secrets.QUAY_USERNAME }}
39-
password: ${{ secrets.QUAY_TOKEN }}
40-
41-
- name: Build and push
42-
uses: docker/build-push-action@v2
43-
with:
44-
context: .
45-
file: ./Dockerfile
46-
platforms: linux/amd64,linux/arm,linux/arm64,linux/ppc64le
47-
push: ${{ github.event_name != 'pull_request' }}
48-
tags: ${{ steps.docker_meta.outputs.tags }}
49-
labels: ${{ steps.docker_meta.outputs.labels }}
14+
- uses: actions/checkout@v2
15+
16+
- name: Run Gosec Security Scanner
17+
uses: securego/gosec@master
18+
with:
19+
args: ./...
20+
21+
- name: Run Golangci lint
22+
uses: golangci/golangci-lint-action@v2
23+
with:
24+
version: latest
25+
args: -E exportloopref,gofmt --timeout=30m
26+
27+
- name: Docker meta
28+
id: docker_meta
29+
uses: docker/metadata-action@v3
30+
with:
31+
images: webdevops/${{ github.event.repository.name }},quay.io/webdevops/${{ github.event.repository.name }}
32+
labels: |
33+
io.artifacthub.package.readme-url=https://raw.githubusercontent.com/${{ github.repository }}/${{ github.event.repository.default_branch }}/README.md
34+
35+
- name: Set up QEMU
36+
uses: docker/setup-qemu-action@v1
37+
38+
- name: Set up Docker Buildx
39+
uses: docker/setup-buildx-action@v1
40+
41+
- name: Login to DockerHub
42+
uses: docker/login-action@v1
43+
with:
44+
username: ${{ secrets.DOCKERHUB_USERNAME }}
45+
password: ${{ secrets.DOCKERHUB_TOKEN }}
46+
47+
- name: Login to Quay
48+
uses: docker/login-action@v1
49+
with:
50+
registry: quay.io
51+
username: ${{ secrets.QUAY_USERNAME }}
52+
password: ${{ secrets.QUAY_TOKEN }}
53+
54+
- name: Build and push
55+
uses: docker/build-push-action@v2
56+
with:
57+
context: .
58+
file: ./Dockerfile
59+
platforms: linux/amd64,linux/arm,linux/arm64,linux/ppc64le
60+
push: ${{ github.event_name != 'pull_request' }}
61+
tags: ${{ steps.docker_meta.outputs.tags }}
62+
labels: ${{ steps.docker_meta.outputs.labels }}

.github/workflows/scheduled-docker.yml

Lines changed: 49 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -8,39 +8,52 @@ jobs:
88
build:
99
runs-on: ubuntu-latest
1010
steps:
11-
- uses: actions/checkout@v2
12-
- name: Docker meta
13-
id: docker_meta
14-
uses: crazy-max/ghaction-docker-meta@v1
15-
with:
16-
images: webdevops/azure-loganalytics-exporter,quay.io/webdevops/azure-loganalytics-exporter
17-
#tag-sha: true
18-
19-
- name: Set up QEMU
20-
uses: docker/setup-qemu-action@v1
21-
22-
- name: Set up Docker Buildx
23-
uses: docker/setup-buildx-action@v1
24-
25-
- name: Login to DockerHub
26-
uses: docker/login-action@v1
27-
with:
28-
username: ${{ secrets.DOCKERHUB_USERNAME }}
29-
password: ${{ secrets.DOCKERHUB_TOKEN }}
30-
31-
- name: Login to Quay
32-
uses: docker/login-action@v1
33-
with:
34-
registry: quay.io
35-
username: ${{ secrets.QUAY_USERNAME }}
36-
password: ${{ secrets.QUAY_TOKEN }}
37-
38-
- name: Build and push
39-
uses: docker/build-push-action@v2
40-
with:
41-
context: .
42-
file: ./Dockerfile
43-
platforms: linux/amd64,linux/arm,linux/arm64,linux/ppc64le
44-
push: ${{ github.event_name != 'pull_request' }}
45-
tags: ${{ steps.docker_meta.outputs.tags }}
46-
labels: ${{ steps.docker_meta.outputs.labels }}
11+
- uses: actions/checkout@v2
12+
13+
- name: Run Gosec Security Scanner
14+
uses: securego/gosec@master
15+
with:
16+
args: ./...
17+
18+
- name: Run Golangci lint
19+
uses: golangci/golangci-lint-action@v2
20+
with:
21+
version: latest
22+
args: -E exportloopref,gofmt --timeout=30m
23+
24+
- name: Docker meta
25+
id: docker_meta
26+
uses: docker/metadata-action@v3
27+
with:
28+
images: webdevops/${{ github.event.repository.name }},quay.io/webdevops/${{ github.event.repository.name }}
29+
labels: |
30+
io.artifacthub.package.readme-url=https://raw.githubusercontent.com/${{ github.repository }}/${{ github.event.repository.default_branch }}/README.md
31+
32+
- name: Set up QEMU
33+
uses: docker/setup-qemu-action@v1
34+
35+
- name: Set up Docker Buildx
36+
uses: docker/setup-buildx-action@v1
37+
38+
- name: Login to DockerHub
39+
uses: docker/login-action@v1
40+
with:
41+
username: ${{ secrets.DOCKERHUB_USERNAME }}
42+
password: ${{ secrets.DOCKERHUB_TOKEN }}
43+
44+
- name: Login to Quay
45+
uses: docker/login-action@v1
46+
with:
47+
registry: quay.io
48+
username: ${{ secrets.QUAY_USERNAME }}
49+
password: ${{ secrets.QUAY_TOKEN }}
50+
51+
- name: Build and push
52+
uses: docker/build-push-action@v2
53+
with:
54+
context: .
55+
file: ./Dockerfile
56+
platforms: linux/amd64,linux/arm,linux/arm64,linux/ppc64le
57+
push: ${{ github.event_name != 'pull_request' }}
58+
tags: ${{ steps.docker_meta.outputs.tags }}
59+
labels: ${{ steps.docker_meta.outputs.labels }}

Dockerfile

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
1-
FROM golang:1.17 as build
1+
FROM golang:1.17-alpine as build
22

3-
WORKDIR /go/src/github.com/webdevops/azure-loganalytics-exporter
3+
RUN apk upgrade --no-cache --force
4+
RUN apk add --update build-base make git
45

5-
# Get deps (cached)
6-
COPY ./go.mod /go/src/github.com/webdevops/azure-loganalytics-exporter
7-
COPY ./go.sum /go/src/github.com/webdevops/azure-loganalytics-exporter
8-
RUN go mod download
6+
WORKDIR /go/src/github.com/webdevops/azure-loganalytics-exporter
97

108
# Compile
119
COPY ./ /go/src/github.com/webdevops/azure-loganalytics-exporter
10+
RUN make dependencies
1211
RUN make test
13-
RUN make lint
1412
RUN make build
1513
RUN ./azure-loganalytics-exporter --help
1614

Makefile

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
PROJECT_NAME := azure-loganalytics-exporter
22
GIT_TAG := $(shell git describe --dirty --tags --always)
33
GIT_COMMIT := $(shell git rev-parse --short HEAD)
4-
LDFLAGS := -X "main.gitTag=$(GIT_TAG)" -X "main.gitCommit=$(GIT_COMMIT)" -extldflags "-static"
4+
LDFLAGS := -X "main.gitTag=$(GIT_TAG)" -X "main.gitCommit=$(GIT_COMMIT)" -linkmode external -extldflags "-static" -s -w
55

66
FIRST_GOPATH := $(firstword $(subst :, ,$(shell go env GOPATH)))
77
GOLANGCI_LINT_BIN := $(FIRST_GOPATH)/bin/golangci-lint
@@ -34,12 +34,20 @@ build-push-development:
3434
test:
3535
go test ./...
3636

37+
.PHONY: dependencies
38+
dependencies:
39+
go mod vendor
40+
3741
.PHONY: lint
3842
lint: $(GOLANGCI_LINT_BIN)
39-
$(GOLANGCI_LINT_BIN) run -E exportloopref,gofmt --timeout=10m
43+
$(GOLANGCI_LINT_BIN) run -E exportloopref,gofmt --timeout=30m
4044

41-
.PHONY: dependencies
42-
dependencies: $(GOLANGCI_LINT_BIN)
45+
.PHONY: gosec
46+
gosec: $(GOSEC_BIN)
47+
$(GOSEC_BIN) ./...
4348

4449
$(GOLANGCI_LINT_BIN):
45-
curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(FIRST_GOPATH)/bin v1.32.2
50+
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin
51+
52+
$(GOSEC_BIN):
53+
curl -sfL https://raw.githubusercontent.com/securego/gosec/master/install.sh | sh -s -- -b $(FIRST_GOPATH)/bin v2.7.0

README.md

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
1-
Azure LogAnalytics exporter
2-
============================
1+
# Azure LogAnalytics exporter
32

43
[![license](https://img.shields.io/github/license/webdevops/azure-loganalytics-exporter.svg)](https://github.com/webdevops/azure-loganalytics-exporter/blob/master/LICENSE)
54
[![DockerHub](https://img.shields.io/badge/DockerHub-webdevops%2Fazure--loganalytics--exporter-blue)](https://hub.docker.com/r/webdevops/azure-loganalytics-exporter/)
65
[![Quay.io](https://img.shields.io/badge/Quay.io-webdevops%2Fazure--loganalytics--exporter-blue)](https://quay.io/repository/webdevops/azure-loganalytics-exporter)
6+
[![Artifact Hub](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/azure-loganalytics-exporter)](https://artifacthub.io/packages/search?repo=azure-loganalytics-exporter)
77

88
Prometheus exporter for Azure LogAnalytics Kusto queries with configurable fields and transformations.
99

1010
`azure-loganalytics-exporter` can query configured workspaces or all workspaces in one or multiple subscriptions.
1111
The exporter can also cache metrics and servicediscovery information to reduce requests against workspaces and Azure API.
1212

13-
Usage
14-
-----
13+
## Usage
1514

1615
```
1716
Usage:
@@ -34,15 +33,13 @@ Help Options:
3433
-h, --help Show this help message
3534
```
3635

37-
for Azure API authentication (using ENV vars) see https://github.com/Azure/azure-sdk-for-go#authentication
36+
for Azure API authentication (using ENV vars) see https://docs.microsoft.com/en-us/azure/developer/go/azure-sdk-authentication
3837

39-
Configuration file
40-
------------------
38+
## Configuration file
4139

4240
* see [example.yaml](example.yaml)
4341

44-
HTTP Endpoints
45-
--------------
42+
## HTTP Endpoints
4643

4744
| Endpoint | Description |
4845
|--------------------------------|-------------------------------------------------------------------------------------|
@@ -85,8 +82,7 @@ uses Azure service discovery to find all workspaces in one or multiple subscript
8582
| `cache` | | no | no | Use of internal metrics caching (time.Duration) |
8683
| `parallel` | `$LOGANALYTICS_PARALLEL` | no | no | Number (int) of how many workspaces can be queried at the same time |
8784

88-
Global metrics
89-
--------------
85+
## Global metrics
9086

9187
available on `/metrics`
9288

@@ -99,8 +95,7 @@ available on `/metrics`
9995
| `azure_loganalytics_query_requests` | Count of requests (eg paged subqueries) per query |
10096

10197

102-
Examples
103-
--------
98+
## Examples
10499

105100
see [example.yaml](example.yaml) for general ingestion metrics (number of rows per second and number of bytes per second per table)
106101

@@ -128,8 +123,7 @@ Metrics:
128123
azure_loganalytics_operationstatus_count{OperationStatus="Succeeded",workspaceId="xxxxx-xxxx-xxxx-xxxx-xxxxxxxxx",workspaceTable="PrimaryResult"} 1
129124
```
130125

131-
Prometheus configuration
132-
------------------------
126+
## Prometheus configuration
133127

134128
predefined workspaces (at startup via parameter/environment variable)
135129

0 commit comments

Comments
 (0)