-
-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
229 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
{ | ||
"Exclude": [ | ||
".git", | ||
"go.mod", | ||
"go.sum", | ||
"vendor", | ||
"fixtures", | ||
"LICENSE", | ||
"drivers/hetznercloud/driver.go", | ||
"_test.go", | ||
"Makefile" | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
root = true | ||
|
||
[*] | ||
indent_style = space | ||
indent_size = 2 | ||
tab_width = 2 | ||
end_of_line = lf | ||
charset = utf-8 | ||
trim_trailing_whitespace = true | ||
insert_final_newline = true | ||
|
||
[*.go] | ||
indent_style = tab | ||
|
||
[*.md] | ||
trim_trailing_whitespace = false | ||
indent_size = 1 | ||
|
||
[Makefile] | ||
indent_style = tab |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,37 @@ | ||
.env | ||
/dist | ||
### IDEs ### | ||
.idea/ | ||
.vscode/* | ||
!.vscode/settings.json | ||
!.vscode/launch.json | ||
!.vscode/extensions.json | ||
|
||
### GO ### | ||
# Binaries for programs and plugins | ||
*.exe | ||
*.exe~ | ||
*.dll | ||
*.so | ||
*.dylib | ||
vendor/ | ||
__debug_bin | ||
|
||
# Test binary, built with `go test -c` | ||
*.test | ||
|
||
# Output of the go coverage tool, specifically when used with LiteIDE | ||
*.out | ||
|
||
### Docker ### | ||
docker-compose.yml | ||
|
||
### Other ## | ||
# runetime or build relicts | ||
*.sqlite | ||
*.out | ||
/.env | ||
/.pnpm-store | ||
extras/ | ||
/build/ | ||
/dist/ | ||
|
||
docs/venv |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
when: | ||
- event: pull_request | ||
- event: push | ||
branch: [main] | ||
|
||
variables: | ||
- &golang_image "golang:1.20.2" | ||
- &when | ||
- path: &when_path # related config files | ||
- ".woodpecker/test.yml" | ||
- ".golangci.yml" | ||
# go source code | ||
- "**/*.go" | ||
- "go.*" | ||
# schema changes | ||
- "pipeline/schema/**" | ||
branch: | ||
exclude: ${CI_REPO_DEFAULT_BRANCH} | ||
event: push | ||
- path: *when_path | ||
event: [pull_request, tag, deployment] | ||
|
||
steps: | ||
lint: | ||
image: *golang_image | ||
group: test | ||
commands: | ||
- make lint | ||
when: *when | ||
|
||
lint-editorconfig: | ||
image: mstruebing/editorconfig-checker | ||
group: test | ||
|
||
test: | ||
image: *golang_image | ||
group: test | ||
commands: | ||
- make test | ||
when: *when |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# docker build --rm -f docker/Dockerfile.make -t woodpecker/make:local . | ||
FROM golang:1.20-alpine as golang_image | ||
FROM node:18-alpine | ||
|
||
RUN apk add --no-cache --update make gcc binutils-gold musl-dev && \ | ||
corepack enable | ||
|
||
# Build packages. | ||
COPY --from=golang_image /usr/local/go /usr/local/go | ||
COPY Makefile / | ||
ENV PATH=$PATH:/usr/local/go/bin | ||
|
||
# Cache tools | ||
RUN make install-tools && \ | ||
mv /root/go/bin/* /usr/local/go/bin/ && \ | ||
chmod 755 /usr/local/go/bin/* | ||
|
||
WORKDIR /build | ||
RUN chmod -R 777 /root | ||
|
||
CMD [ "/bin/sh" ] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
GO_PACKAGES ?= $(shell go list ./... | grep -v /vendor/) | ||
|
||
TARGETOS ?= linux | ||
TARGETARCH ?= amd64 | ||
|
||
LDFLAGS := -s -w -extldflags "-static" | ||
CGO_ENABLED := 0 | ||
|
||
HAS_GO = $(shell hash go > /dev/null 2>&1 && echo "GO" || echo "NOGO" ) | ||
ifeq ($(HAS_GO),GO) | ||
CGO_CFLAGS ?= $(shell go env CGO_CFLAGS) | ||
endif | ||
CGO_CFLAGS ?= | ||
|
||
# If the first argument is "in_docker"... | ||
ifeq (in_docker,$(firstword $(MAKECMDGOALS))) | ||
# use the rest as arguments for "in_docker" | ||
MAKE_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS)) | ||
# Ignore the next args | ||
$(eval $(MAKE_ARGS):;@:) | ||
|
||
in_docker: | ||
@[ "1" -eq "$(shell docker image ls woodpecker/make:local -a | wc -l)" ] && docker buildx build -f ./docker/Dockerfile.make -t woodpecker/make:local --load . || echo reuse existing docker image | ||
@echo run in docker: | ||
@docker run -it \ | ||
--user $(shell id -u):$(shell id -g) \ | ||
-e CI_COMMIT_SHA="$(CI_COMMIT_SHA)" \ | ||
-e TARGETOS="$(TARGETOS)" \ | ||
-e TARGETARCH="$(TARGETARCH)" \ | ||
-e CGO_ENABLED="$(CGO_ENABLED)" \ | ||
-e GOPATH=/tmp/go \ | ||
-e HOME=/tmp/home \ | ||
-v $(PWD):/build --rm woodpecker/make:local make $(MAKE_ARGS) | ||
else | ||
|
||
# Proceed with normal make | ||
|
||
##@ General | ||
|
||
all: help | ||
|
||
# The help target prints out all targets with their descriptions organized | ||
# beneath their categories. The categories are represented by '##@' and the | ||
# target descriptions by '##'. The awk commands is responsible for reading the | ||
# entire set of makefiles included in this invocation, looking for lines of the | ||
# file as xyz: ## something, and then pretty-format the target and help. Then, | ||
# if there's a line with ##@ something, that gets pretty-printed as a category. | ||
# More info on the usage of ANSI control characters for terminal formatting: | ||
# https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters | ||
# More info on the awk command: | ||
# http://linuxcommand.org/lc3_adv_awk.php | ||
|
||
.PHONY: help | ||
help: ## Display this help. | ||
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) | ||
|
||
format: install-tools ## Format source code | ||
@gofumpt -extra -w . | ||
|
||
.PHONY: clean | ||
clean: ## Clean build artifacts | ||
go clean -i ./... | ||
rm -rf build | ||
@[ "1" != "$(shell docker image ls woodpecker/make:local -a | wc -l)" ] && docker image rm woodpecker/make:local || echo no docker image to clean | ||
|
||
|
||
install-tools: ## Install development tools | ||
@hash golangci-lint > /dev/null 2>&1; if [ $$? -ne 0 ]; then \ | ||
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest; \ | ||
fi ; \ | ||
hash lint > /dev/null 2>&1; if [ $$? -ne 0 ]; then \ | ||
go install github.com/rs/zerolog/cmd/lint@latest; \ | ||
fi ; \ | ||
hash gofumpt > /dev/null 2>&1; if [ $$? -ne 0 ]; then \ | ||
go install mvdan.cc/gofumpt@latest; \ | ||
fi ; \ | ||
|
||
##@ Test | ||
|
||
.PHONY: lint | ||
lint: install-tools ## Lint code | ||
@echo "Running golangci-lint" | ||
golangci-lint run --timeout 10m | ||
@echo "Running zerolog linter" | ||
lint github.com/woodpecker-ci/autoscaler/cmd/woodpecker-autoscaler | ||
|
||
test-autoscaler: ## Test autoscaler code | ||
go test -race -cover -coverprofile autoscaler-coverage.out -timeout 30s ${GO_PACKAGES} | ||
|
||
test: test-autoscaler ## Run all tests | ||
|
||
##@ Build | ||
|
||
build: | ||
CGO_ENABLED=${CGO_ENABLED} GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -ldflags '${LDFLAGS}' -o dist/woodpecker-autoscaler github.com/woodpecker-ci/autoscaler/cmd/woodpecker-autoscaler | ||
|
||
endif |