| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- commonenv := "CGO_ENABLED=0"
- version := `./tools/image-tag`
- commit := `git rev-parse --short HEAD`
- default:
- just --list
- # format all Go code
- fmt:
- go fmt ./...
- # check if code is formatted
- fmt-check:
- #!/bin/sh
- echo "Checking code formatting..."
- unformatted="$(gofmt -l .)"
- if [ -n "$unformatted" ]; then \
- echo "The following files are not formatted:"; \
- echo "$unformatted"; \
- echo ""; \
- echo "Run 'just fmt' to format your code"; \
- exit 1; \
- fi
- echo "All files are properly formatted"
- # run core unit tests
- test-core:
- {{commonenv}} cd ./core && go test ./... -coverprofile=coverage.out
- {{commonenv}} cd ./core && go vet ./...
- # run prometheus-source unit tests
- test-prometheus-source:
- {{commonenv}} cd ./modules/prometheus-source && go test ./... -coverprofile=coverage.out
- {{commonenv}} cd ./modules/prometheus-source && go vet ./...
- # run collector-source unit tests
- test-collector-source:
- {{commonenv}} cd ./modules/collector-source && go test ./... -coverprofile=coverage.out
- {{commonenv}} cd ./modules/collector-source && go vet ./...
- # run the opencost unit tests
- test-opencost:
- {{commonenv}} go test ./... -coverprofile=coverage.out
- {{commonenv}} go tool cover -html=coverage.out -o coverage.html
- {{commonenv}} go vet ./...
- # Run unit tests, merge coverage reports, remove old reports
- test: test-core test-prometheus-source test-collector-source test-opencost
- find . -name "coverage.out" -print0 | xargs -0 cat > coverage.new
- find . -name "coverage.out" -delete
- mv coverage.new coverage.out
- # Run unit tests and integration tests
- test-integration:
- {{commonenv}} INTEGRATION=true go test ./... -coverprofile=coverage.out
- # Compile a local binary
- build-local:
- cd ./cmd/costmodel && \
- {{commonenv}} go build \
- -ldflags \
- "-X github.com/opencost/opencost/core/pkg/version.Version={{version}} \
- -X github.com/opencost/opencost/core/pkg/version.GitCommit={{commit}}" \
- -o ./costmodel
- # Build multiarch binaries
- build-binary VERSION=version:
- cd ./cmd/costmodel && \
- {{commonenv}} GOOS=linux GOARCH=amd64 go build \
- -ldflags \
- "-X github.com/opencost/opencost/core/pkg/version.Version={{VERSION}} \
- -X github.com/opencost/opencost/core/pkg/version.GitCommit={{commit}}" \
- -o ./costmodel-amd64
- cd ./cmd/costmodel && \
- {{commonenv}} GOOS=linux GOARCH=arm64 go build \
- -ldflags \
- "-X github.com/opencost/opencost/core/pkg/version.Version={{VERSION}} \
- -X github.com/opencost/opencost/core/pkg/version.GitCommit={{commit}}" \
- -o ./costmodel-arm64
- # Build and push a multi-arch Docker image
- build IMAGE_TAG RELEASE_VERSION: (build-binary RELEASE_VERSION)
- docker buildx build \
- --rm \
- --platform "linux/amd64" \
- -f 'Dockerfile.cross' \
- --build-arg binarypath=./cmd/costmodel/costmodel-amd64 \
- --build-arg version={{RELEASE_VERSION}} \
- --build-arg commit={{commit}} \
- --provenance=false \
- -t {{IMAGE_TAG}}-amd64 \
- --push \
- .
- docker buildx build \
- --rm \
- --platform "linux/arm64" \
- -f 'Dockerfile.cross' \
- --build-arg binarypath=./cmd/costmodel/costmodel-arm64 \
- --build-arg version={{RELEASE_VERSION}} \
- --build-arg commit={{commit}} \
- --provenance=false \
- -t {{IMAGE_TAG}}-arm64 \
- --push \
- .
- manifest-tool push from-args \
- --platforms "linux/amd64,linux/arm64" \
- --template {{IMAGE_TAG}}-ARCH \
- --target {{IMAGE_TAG}}
- validate-protobuf:
- ./generate.sh
- git diff --exit-code
|