2019-10-22 22:03:22 +08:00
|
|
|
## This is a self-documented Makefile. For usage information, run `make help`:
|
|
|
|
|
##
|
|
|
|
|
## For more information, refer to https://suva.sh/posts/well-documented-makefiles/
|
|
|
|
|
|
2021-08-25 21:11:22 +08:00
|
|
|
WIRE_TAGS = "oss"
|
|
|
|
|
|
2018-05-07 18:32:18 +08:00
|
|
|
-include local/Makefile
|
2021-08-25 21:11:22 +08:00
|
|
|
include .bingo/Variables.mk
|
2025-10-08 20:02:29 +08:00
|
|
|
include .citools/Variables.mk
|
2018-05-07 18:32:18 +08:00
|
|
|
|
2021-06-29 16:01:21 +08:00
|
|
|
GO = go
|
2025-10-14 18:22:15 +08:00
|
|
|
GO_VERSION = 1.25.3
|
2024-08-09 22:05:02 +08:00
|
|
|
GO_LINT_FILES ?= $(shell ./scripts/go-workspace/golangci-lint-includes.sh)
|
2024-08-09 22:25:27 +08:00
|
|
|
GO_TEST_FILES ?= $(shell ./scripts/go-workspace/test-includes.sh)
|
2019-07-23 18:12:33 +08:00
|
|
|
SH_FILES ?= $(shell find ./scripts -name *.sh)
|
2024-06-04 22:02:09 +08:00
|
|
|
GO_RACE := $(shell [ -n "$(GO_RACE)" -o -e ".go-race-enabled-locally" ] && echo 1 )
|
2024-05-31 23:30:51 +08:00
|
|
|
GO_RACE_FLAG := $(if $(GO_RACE),-race)
|
2022-04-02 07:01:05 +08:00
|
|
|
GO_BUILD_FLAGS += $(if $(GO_BUILD_DEV),-dev)
|
|
|
|
|
GO_BUILD_FLAGS += $(if $(GO_BUILD_TAGS),-build-tags=$(GO_BUILD_TAGS))
|
2024-05-31 23:30:51 +08:00
|
|
|
GO_BUILD_FLAGS += $(GO_RACE_FLAG)
|
2025-03-17 17:47:27 +08:00
|
|
|
GO_TEST_FLAGS += $(if $(GO_BUILD_TAGS),-tags=$(GO_BUILD_TAGS))
|
2024-10-10 04:32:23 +08:00
|
|
|
GIT_BASE = remotes/origin/main
|
2019-03-28 00:53:49 +08:00
|
|
|
|
2024-10-08 20:47:33 +08:00
|
|
|
# GNU xargs has flag -r, and BSD xargs (e.g. MacOS) has that behaviour by default
|
|
|
|
|
XARGSR = $(shell xargs --version 2>&1 | grep -q GNU && echo xargs -r || echo xargs)
|
|
|
|
|
|
2025-05-14 19:06:42 +08:00
|
|
|
# Test sharding to replicate CI behaviour locally.
|
|
|
|
|
SHARD ?= 1
|
|
|
|
|
SHARDS ?= 1
|
2023-02-08 09:34:05 +08:00
|
|
|
|
2025-05-14 19:06:42 +08:00
|
|
|
targets := $(shell echo '$(sources)' | tr "," " ")
|
2023-04-18 00:33:43 +08:00
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: all
|
2016-04-26 00:44:26 +08:00
|
|
|
all: deps build
|
|
|
|
|
|
2019-10-22 22:03:22 +08:00
|
|
|
##@ Dependencies
|
|
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: deps-go
|
2019-10-22 22:03:22 +08:00
|
|
|
deps-go: ## Install backend dependencies.
|
2024-05-31 23:30:51 +08:00
|
|
|
$(GO) run $(GO_RACE_FLAG) build.go setup
|
2016-10-11 14:51:44 +08:00
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: deps-js
|
2019-10-22 22:03:22 +08:00
|
|
|
deps-js: node_modules ## Install frontend dependencies.
|
|
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: deps
|
2019-10-22 22:03:22 +08:00
|
|
|
deps: deps-js ## Install all dependencies.
|
|
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: node_modules
|
2019-10-22 22:03:22 +08:00
|
|
|
node_modules: package.json yarn.lock ## Install node modules.
|
|
|
|
|
@echo "install frontend dependencies"
|
2021-10-08 22:19:10 +08:00
|
|
|
YARN_ENABLE_PROGRESS_BARS=false yarn install --immutable
|
2016-04-26 00:44:26 +08:00
|
|
|
|
2022-02-08 20:38:43 +08:00
|
|
|
##@ Swagger
|
|
|
|
|
SPEC_TARGET = public/api-spec.json
|
2023-09-26 03:34:57 +08:00
|
|
|
ENTERPRISE_SPEC_TARGET = public/api-enterprise-spec.json
|
|
|
|
|
MERGED_SPEC_TARGET = public/api-merged.json
|
2022-05-24 03:08:27 +08:00
|
|
|
NGALERT_SPEC_TARGET = pkg/services/ngalert/api/tooling/api.json
|
2022-02-08 20:38:43 +08:00
|
|
|
|
|
|
|
|
$(NGALERT_SPEC_TARGET):
|
2022-05-24 03:08:27 +08:00
|
|
|
+$(MAKE) -C pkg/services/ngalert/api/tooling api.json
|
2022-02-08 20:38:43 +08:00
|
|
|
|
2025-03-20 17:09:00 +08:00
|
|
|
$(MERGED_SPEC_TARGET): swagger-oss-gen swagger-enterprise-gen $(NGALERT_SPEC_TARGET) ## Merge generated and ngalert API specs
|
2022-07-20 21:09:42 +08:00
|
|
|
# known conflicts DsPermissionType, AddApiKeyCommand, Json, Duration (identical models referenced by both specs)
|
2025-10-08 20:02:29 +08:00
|
|
|
GODEBUG=gotypesalias=0 $(swagger) mixin -q $(SPEC_TARGET) $(ENTERPRISE_SPEC_TARGET) $(NGALERT_SPEC_TARGET) --ignore-conflicts -o $(MERGED_SPEC_TARGET)
|
2022-02-08 20:38:43 +08:00
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: swagger-oss-gen
|
2025-03-20 17:09:00 +08:00
|
|
|
swagger-oss-gen: ## Generate API Swagger specification
|
2023-09-26 03:34:57 +08:00
|
|
|
@echo "re-generating swagger for OSS"
|
|
|
|
|
rm -f $(SPEC_TARGET)
|
2025-10-08 20:02:29 +08:00
|
|
|
SWAGGER_GENERATE_EXTENSION=false GODEBUG=gotypesalias=0 $(swagger) generate spec -q -m -w pkg/server -o $(SPEC_TARGET) \
|
2022-02-08 20:38:43 +08:00
|
|
|
-x "github.com/grafana/grafana/pkg/services/ngalert/api/tooling/definitions" \
|
2024-06-13 17:41:35 +08:00
|
|
|
-x "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" \
|
2022-02-08 20:38:43 +08:00
|
|
|
-x "github.com/prometheus/alertmanager" \
|
2022-10-14 21:51:05 +08:00
|
|
|
-i pkg/api/swagger_tags.json \
|
2023-09-26 03:34:57 +08:00
|
|
|
--exclude-tag=alpha \
|
|
|
|
|
--exclude-tag=enterprise
|
|
|
|
|
|
|
|
|
|
# this file only exists if enterprise is enabled
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: swagger-enterprise-gen
|
2023-09-26 03:34:57 +08:00
|
|
|
ENTERPRISE_EXT_FILE = pkg/extensions/ext.go
|
|
|
|
|
ifeq ("$(wildcard $(ENTERPRISE_EXT_FILE))","") ## if enterprise is not enabled
|
|
|
|
|
swagger-enterprise-gen:
|
|
|
|
|
@echo "skipping re-generating swagger for enterprise: not enabled"
|
|
|
|
|
else
|
2025-03-20 17:09:00 +08:00
|
|
|
swagger-enterprise-gen: ## Generate API Swagger specification
|
2023-09-26 03:34:57 +08:00
|
|
|
@echo "re-generating swagger for enterprise"
|
|
|
|
|
rm -f $(ENTERPRISE_SPEC_TARGET)
|
2025-10-08 20:02:29 +08:00
|
|
|
SWAGGER_GENERATE_EXTENSION=false GODEBUG=gotypesalias=0 $(swagger) generate spec -q -m -w pkg/server -o $(ENTERPRISE_SPEC_TARGET) \
|
2023-09-26 03:34:57 +08:00
|
|
|
-x "github.com/grafana/grafana/pkg/services/ngalert/api/tooling/definitions" \
|
2024-06-13 17:41:35 +08:00
|
|
|
-x "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" \
|
2023-09-26 03:34:57 +08:00
|
|
|
-x "github.com/prometheus/alertmanager" \
|
|
|
|
|
-i pkg/api/swagger_tags.json \
|
|
|
|
|
--exclude-tag=alpha \
|
|
|
|
|
--include-tag=enterprise
|
|
|
|
|
endif
|
2022-02-08 20:38:43 +08:00
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: swagger-gen
|
2023-09-26 03:34:57 +08:00
|
|
|
swagger-gen: gen-go $(MERGED_SPEC_TARGET) swagger-validate
|
2022-02-08 20:38:43 +08:00
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: swagger-validate
|
2025-03-20 17:09:00 +08:00
|
|
|
swagger-validate: $(MERGED_SPEC_TARGET) # Validate API spec
|
2025-10-08 20:02:29 +08:00
|
|
|
GODEBUG=gotypesalias=0 $(swagger) validate --skip-warnings $(<)
|
2022-06-14 18:35:22 +08:00
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: swagger-clean
|
2023-09-26 03:34:57 +08:00
|
|
|
swagger-clean:
|
2023-01-31 19:00:45 +08:00
|
|
|
rm -f $(SPEC_TARGET) $(MERGED_SPEC_TARGET) $(OAPI_SPEC_TARGET)
|
2022-02-08 20:38:43 +08:00
|
|
|
|
2023-08-17 17:56:52 +08:00
|
|
|
.PHONY: cleanup-old-git-hooks
|
|
|
|
|
cleanup-old-git-hooks:
|
|
|
|
|
./scripts/cleanup-husky.sh
|
|
|
|
|
|
|
|
|
|
.PHONY: lefthook-install
|
2025-03-17 16:48:41 +08:00
|
|
|
lefthook-install: cleanup-old-git-hooks # install lefthook for pre-commit hooks
|
2025-10-08 20:02:29 +08:00
|
|
|
$(lefthook) install -f
|
2023-08-17 17:56:52 +08:00
|
|
|
|
|
|
|
|
.PHONY: lefthook-uninstall
|
2025-03-17 16:48:41 +08:00
|
|
|
lefthook-uninstall:
|
2025-10-08 20:02:29 +08:00
|
|
|
$(lefthook) uninstall
|
2023-08-17 17:56:52 +08:00
|
|
|
|
2022-08-05 00:51:12 +08:00
|
|
|
##@ OpenAPI 3
|
|
|
|
|
OAPI_SPEC_TARGET = public/openapi3.json
|
|
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: openapi3-gen
|
2023-09-26 03:34:57 +08:00
|
|
|
openapi3-gen: swagger-gen ## Generates OpenApi 3 specs from the Swagger 2 already generated
|
2024-05-31 23:30:51 +08:00
|
|
|
$(GO) run $(GO_RACE_FLAG) scripts/openapi3/openapi3conv.go $(MERGED_SPEC_TARGET) $(OAPI_SPEC_TARGET)
|
2016-10-11 14:51:44 +08:00
|
|
|
|
2024-04-18 23:25:27 +08:00
|
|
|
##@ Internationalisation
|
|
|
|
|
.PHONY: i18n-extract-enterprise
|
|
|
|
|
ENTERPRISE_FE_EXT_FILE = public/app/extensions/index.ts
|
|
|
|
|
ifeq ("$(wildcard $(ENTERPRISE_FE_EXT_FILE))","") ## if enterprise is not enabled
|
|
|
|
|
i18n-extract-enterprise:
|
|
|
|
|
@echo "Skipping i18n extract for Enterprise: not enabled"
|
|
|
|
|
else
|
2024-05-08 21:01:17 +08:00
|
|
|
i18n-extract-enterprise:
|
2024-04-18 23:25:27 +08:00
|
|
|
@echo "Extracting i18n strings for Enterprise"
|
|
|
|
|
yarn run i18next --config public/locales/i18next-parser-enterprise.config.cjs
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
.PHONY: i18n-extract
|
|
|
|
|
i18n-extract: i18n-extract-enterprise
|
|
|
|
|
@echo "Extracting i18n strings for OSS"
|
|
|
|
|
yarn run i18next --config public/locales/i18next-parser.config.cjs
|
|
|
|
|
|
2022-08-05 00:51:12 +08:00
|
|
|
##@ Building
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: gen-cue
|
2022-05-27 09:21:37 +08:00
|
|
|
gen-cue: ## Do all CUE/Thema code generation
|
|
|
|
|
@echo "generate code from .cue files"
|
Reconcile coremodels, entities, objects under new kind framework (#56492)
* Update thema to latest
* Deal with s/Library/*Runtime/
* Commit new, working results of codegen
* We like pointers now
* Always take runtime arg for NewBase()
* Sketchy handwavy pass at entity meta framework
* Little nibbles
* Update pkg/framework/coremodel/entityframework.cue
Co-authored-by: Artur Wierzbicki <wierzbicki.artur.94@gmail.com>
* Move file into new framework location
* Introduce loaders, Go code
* Complete rename to kind
* Flesh out framework, add svg/dashboard examples
* Cruft removal
* Remove generated kind go files from gitignore
* Refine maturity concept, add SlotKind
* Update embed and go deps
* Export PrefixWithGrafanaCUE
* Make the loader actually work, holy crap
* Many small tweaks to type.cue
* Add Apache 2 licensing exceptions for kinds
* Add new kinds dir, start of generator
* Roll back to earlier oapi-codegen
* Introduce new grafana-specific CUE loaders
* Introduce new tidy code generators framework
* Catch up kind framework with tinkering
* Add slices for the generators
* Add write/verify step to main generator
* Many renames
* Split up kind framework cue files
* Use kind.Decl within generated kinds
* Create kind.SomeDecl wrapper type to cache lineages
* Better names again
* Get one generated implemented, hopefully
* Copy dashboard schema into new kind.cue
* Small fixes to make the initial gen work
* Put svg kind in its new home
* Add generated Go dashboard type
* More renames and cleanups
* Add base kind registry and generator
* Stop blacklisting *_gen.go files
This is not the Go best practice, anyway. All we actually want to ignore
for enterprise is generated wire files.
* Change codegen output directories
pkg/kind -> pkg/kinds
pkg/registry/kindreg -> pkg/registry/corekind
* Rename pkg/framework/kind to pkg/kindsys
* Add core structured kind generator
* Add plural and machine names to kind spec
* Copy playlist over to kind system
* Consolidate kindsys files
* Add raw kind generator
* Update CODEOWNERS for kind framework
* Touch up comments a bit
* More docs tweaks
* Remove generated types to reduce noise for review
* Split each generator into its own file
* Rename Slot kind to Composable kind
* Add handwavy types for customkind loading
* Guard against init calls to framework loader
* First pass at doc on extending the kind system
* Improve attribute example in docs
* Fix wire imports
* Add basic TS types generator
* Fix composable kind category def
* No need for a separate file with generate directive
* Catch dashboard schema up
* Rename generator types to something saner and generic
* Make version configurable in ts/go generators
* Add CommonMeta to ease property access
* Add kindsys prop indicating whether lineage is group
* Put all kind categories back in a single file
* Finish with kindsys group props
* Refactor maturity progression per discussion
- Replace "committed" with "merged"
- All kindcats can use all maturity levels, at least for now
* Convert ts veneer index generator to modular system
* Move over to new jennywrites framework
* Strip down old coremodel generator
* Use public version of jennywrites
* Pull latest thema
* Commit generated Go types
* Add header injection postprocessor
* Move sdboyer/jennywrites to grafana/codejen
* Tweak header output
* Remove dashboard and playlist coremodels
* Fix up backend dashboards devenv test
* Fix TS import patterns to new gen filename
* Update internal imports, remove coremodel registry
* Fix compilation errors, wire generation
* Export and replace the prefix dropper
* More Go struct and field name changes
* Last name fixes, hopefully
* Fix lint errors
* Last lint error
Co-authored-by: Artur Wierzbicki <wierzbicki.artur.94@gmail.com>
2022-11-11 04:36:40 +08:00
|
|
|
go generate ./kinds/gen.go
|
2022-12-02 15:22:28 +08:00
|
|
|
go generate ./public/app/plugins/gen.go
|
2025-04-24 02:21:59 +08:00
|
|
|
@echo "// This file is managed by Grafana - DO NOT EDIT MANUALLY" > apps/dashboard/pkg/apis/dashboard/v1beta1/dashboard_kind.cue
|
|
|
|
|
@echo "// Source: kinds/dashboard/dashboard_kind.cue" >> apps/dashboard/pkg/apis/dashboard/v1beta1/dashboard_kind.cue
|
|
|
|
|
@echo "// To sync changes, run: make gen-cue" >> apps/dashboard/pkg/apis/dashboard/v1beta1/dashboard_kind.cue
|
|
|
|
|
@echo "" >> apps/dashboard/pkg/apis/dashboard/v1beta1/dashboard_kind.cue
|
|
|
|
|
@cat kinds/dashboard/dashboard_kind.cue >> apps/dashboard/pkg/apis/dashboard/v1beta1/dashboard_kind.cue
|
|
|
|
|
@cp apps/dashboard/pkg/apis/dashboard/v1beta1/dashboard_kind.cue apps/dashboard/pkg/apis/dashboard/v0alpha1/dashboard_kind.cue
|
2025-04-12 00:52:46 +08:00
|
|
|
|
2022-05-27 09:21:37 +08:00
|
|
|
|
2024-11-19 20:01:40 +08:00
|
|
|
.PHONY: gen-cuev2
|
|
|
|
|
gen-cuev2: ## Do all CUE code generation
|
|
|
|
|
@echo "generate code from .cue files (v2)"
|
2025-01-16 20:18:47 +08:00
|
|
|
@$(MAKE) -C ./kindsv2 all
|
2024-11-19 20:01:40 +08:00
|
|
|
|
2025-03-26 16:49:52 +08:00
|
|
|
# TODO (@radiohead): uncomment once we want to start generating code for all apps.
|
|
|
|
|
# For now, we want to use an explicit list of apps to generate code for.
|
|
|
|
|
#
|
|
|
|
|
# APPS_DIRS=$(shell find ./apps -mindepth 1 -maxdepth 1 -type d | sort)
|
2025-04-15 04:20:10 +08:00
|
|
|
APPS_DIRS := ./apps/dashboard ./apps/folder
|
2025-03-26 16:49:52 +08:00
|
|
|
|
|
|
|
|
.PHONY: gen-apps
|
|
|
|
|
gen-apps: ## Generate code for Grafana App SDK apps
|
|
|
|
|
for dir in $(APPS_DIRS); do \
|
|
|
|
|
$(MAKE) -C $$dir generate; \
|
|
|
|
|
done
|
|
|
|
|
./hack/update-codegen.sh
|
|
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: gen-feature-toggles
|
2024-03-21 19:04:49 +08:00
|
|
|
gen-feature-toggles:
|
|
|
|
|
## First go test run fails because it will re-generate the feature toggles.
|
|
|
|
|
## Second go test run will compare the generated files and pass.
|
|
|
|
|
@echo "generate feature toggles"
|
|
|
|
|
go test -v ./pkg/services/featuremgmt/... > /dev/null 2>&1; \
|
|
|
|
|
if [ $$? -eq 0 ]; then \
|
|
|
|
|
echo "feature toggles already up-to-date"; \
|
|
|
|
|
else \
|
|
|
|
|
go test -v ./pkg/services/featuremgmt/...; \
|
|
|
|
|
fi
|
|
|
|
|
|
CI Migration: Backport pkg/build (daggerbuild) and GHAs to `release-12.0.3` (#107997)
* CI: move grafana-build into pkg/build (#105640)
* move grafana-build into pkg/build
* Update go.mod/go.sum files after cherry-pick build
- Updates from workspace sync after cherry-picking daggerbuild package
- Resolves dependency conflicts from pkg/build integration
- Required for successful build after CI migration backport
* CI Migration: Replace .github with main branch version
- Complete replacement of .github directory from main branch
- Includes updated workflows, actions, and configuration files
- Ensures all CI improvements from main are included
- Next step: fix branch-specific issues in separate commits
* Fix branch triggers: Update workflows to target release branches
- Update 8 workflows to trigger on release-* instead of main
- Ensures workflows run on pull requests to release branches
- Workflows updated: documentation-ci, pr-codeql-analysis-*, pr-dependabot-update-go-workspace, pr-go-workspace-check, pr-k8s-codegen-check, verify-kinds, codeowners-validator
* Fix branch triggers: Update workflows to target both main and release branches
- CORRECTED: Include both main and release-* branch patterns
- Ensures workflows run on both main branch (original functionality) and release branches (needed for backport)
- Previous commit incorrectly removed main branch support
- Workflows updated: documentation-ci, pr-codeql-analysis-*, pr-dependabot-update-go-workspace, pr-go-workspace-check, pr-k8s-codegen-check, verify-kinds, codeowners-validator
* CI Migration: Update .gitignore to allow OSS wire file to be committed
- Remove **/wire_gen.go (allow pkg/server/wire_gen.go to be committed)
- Add /pkg/server/enterprise_wire_gen.go (keep enterprise wire file ignored)
- This enables the new committed wire files architecture for CI
* CI Migration: Add enhanced wire tool with automatic build constraints
- Backport enhanced wire tool from main branch with -gen_tags flag
- This enables automatic regeneration with proper constraints to prevent conflicts
- Wire file contains all required functions: Initialize, InitializeDocumentBuilders, etc.
- Solves the missing wire functions issue causing CI failures
- Enhanced tool ensures build constraints persist on regeneration
* CI Migration: Update Makefile to use enhanced wire tool with build constraints
- Update gen-go target to use -gen_tags flag for automatic build constraints
- Ensures future engineers get proper build constraints when running 'make gen-go'
- Matches main branch approach for consistent wire file generation
- Removes dependency on WIRE_TAGS variable and GO_RACE_FLAG for simplicity
* Add gen-enterprise-go target to Makefile for release-12.0.3
- Backports gen-enterprise-go target from main branch
- Enables enterprise wire file generation in release branches
- Part of CI migration backport wire infrastructure fixes
- Resolves CI issues where enterprise wire functions were missing
* Fix wire tool golden file format for Drone CI compatibility
- Update all 43 golden test files to match main branch format
- Change go:generate command from github.com/google/wire/cmd/wire to ./pkg/build/wire/cmd/wire/main.go
- Remove legacy '// +build !wireinject' constraints
- Fixes Drone CI test failures that were blocking OSS PR merge
- All wire tests now pass successfully
This aligns the backport branch with the golden file format updates
that were made in main branch when the wire tool was enhanced.
* Update swagger specs to include enterprise APIs
- Regenerated api-enterprise-spec.json with enterprise API definitions
- Updated api-merged.json with merged OSS and enterprise specs
- Regenerated openapi3.json with complete API specifications
- Fixes enterprise CI swagger generation validation failures
- Enterprise APIs now properly detected and documented
* Fix OSS integration tests missing enterprise build tags in Drone CI
- Add -tags=enterprise to all integration test steps in lib.star
- Fixes test-backend-integration, postgres-integration-tests, and mysql-integration-tests
- Regenerate .drone.yml with proper enterprise build tags
- Resolves 'server could not find the requested resource' errors for enterprise APIs
- Ensures enterprise APIs (querylibrary, reporting, banners, scim) are registered during tests
- Aligns OSS Drone CI with GitHub Actions behavior and enterprise repository
* Fix CODEOWNERS for release-12.0.3 compatibility
- Remove 21 entries that reference files/directories not present in release branch
- Resolves File Exist Checker failures in codeowners-validator workflow
- Maintains team ownership assignments from main branch for existing files
- Lines removed: .air.toml, apps/secret/, apps/iam/, e2e-playwright/, packages/grafana-alerting/, etc.
* baldm0mma/ update releasefinder
* Add i18n-extract script for release branch compatibility
- Add 'i18n-extract': 'make i18n-extract' to package.json scripts
- Resolves i18n-verify workflow failure that expects this script
- The make target already exists and handles OSS + enterprise i18n extraction
- Maintains i18n verification functionality from main branch workflows
- Simple safe addition that calls existing make infrastructure
* Phase 4: Fix GitHub Actions workflow branch triggers
- Add release-*.*.* pattern to 8 workflows missing it
- Fix duplicate release branch patterns in 3 workflows
- Ensure consistent branch trigger format across all workflows
- Critical workflows now properly trigger on release branches
Fixes workflows: actionlint, backend-code-checks, go-lint, reject-gh-secrets,
run-schema-v2-e2e, shellcheck, swagger-gen, trivy-scan
* Fix: Backport E2E runner infrastructure for Enterprise CI
- Add e2e/main.go and e2e/internal/ directory from main branch
- Add urfave/cli/v3 dependency required by E2E runner
- Fixes Enterprise CI failure: 'Build E2E test runner' and 'Build & package Grafana for e2e tests'
- Root cause: E2E runner infrastructure was added to main after release-12.0.3 branch creation
- Solution: Backport missing E2E runner files to enable Enterprise CI completion
Resolves: no Go files in /opt/actions-runner/_work/grafana-enterprise/grafana-enterprise/grafana/e2e
* Fix: Update go.mod dependency classification for urfave/cli/v3
- Change urfave/cli/v3 from indirect to direct dependency
- Fixes Go Workspace Check failure in CI
- Required after adding E2E runner infrastructure that directly imports urfave/cli/v3
- Resolves: make update-workspace corrects dependency classification
* Fix: Add team ownership for urfave/cli/v3 dependency
- Assign @grafana/grafana-backend-group as owner for github.com/urfave/cli/v3@v3.3.8
- Follows existing pattern: urfave/cli v1 and v2 also owned by grafana-backend-group
- Resolves Backend Code Checks / Validate Backend Configs CI failure
- Required for E2E runner infrastructure dependency ownership compliance
Fixes: modowners check requiring team assignment for newly added dependencies
* Fix: Revert experimental E2E playwright infrastructure to stable version
- Revert pr-e2e-tests.yml to stable Cypress-based E2E testing
- Remove experimental storybook-verification-playwright.yml workflow
- Revert run-dashboard-search-e2e.yml and release-pr.yml to use e2e/test-plugins/
- Keep stable E2E runner infrastructure (e2e/main.go + e2e/internal/)
- Remove experimental playwright features per team recommendation
Team feedback: Playwright tests are experimental and shouldn't be backported to stable release branches
* Fix: Complete cleanup of experimental playwright dependencies
- Revert package.json to stable version (remove e2e-playwright scripts and path references)
- Revert playwright.config.ts to stable plugin-e2e configuration
- Remove all experimental playwright infrastructure dependencies
- Ensure clean stable E2E testing environment
All experimental features removed per team recommendation for stable release branches
* Fix: Restore working package.json configuration
- Revert package.json to version 12.0.3 (working release branch version)
- Fix workspace dependency resolution issues caused by incorrect revert to main branch version
- FE tests, betterer, and linting should now work correctly
Issue was caused by reverting package.json to main branch (12.1.0-pre) instead of keeping
the working release branch configuration (12.0.3)
* CI: mirror some CI dependencies (#106148)
* mirror some CI dependencies
* remove -v from go build
* Fix: Backport missing e2e/run-suite script for daggerbuild E2E system
The daggerbuild E2E system (used by OSS workflows) expects ./e2e/run-suite
to exist, but we only backported the new E2E runner infrastructure.
This script is needed for:
- OSS workflow: 'go run ./pkg/build/e2e --suite=dashboards-suite'
- Legacy Cypress configuration with video support
- Integration between daggerbuild and existing Cypress test suites
Resolves E2E test failures in OSS workflows where videos directory
cannot be found because run-suite script was missing.
* Fix: Resolve daggerbuild E2E path doubling issue
- Extract just suite name from full path using filepath.Base()
- Prevents doubled paths like './e2e/e2e/dashboards-suite/videos'
- Resolves 'no spec files found' and 'no such file or directory' errors
- GitHub Actions passes full paths like 'e2e/dashboards-suite' but run-suite script expects just 'dashboards-suite'
* Infrastructure: Wholesale copy pkg/build/ from main
COMPLETE DAGGERBUILD SYSTEM UPDATE:
- Modern E2E system with CLI framework and --flags support
- New accessibility testing system (a11y/)
- New Playwright E2E testing system (e2e-playwright/)
- External infrastructure improvements (musl.cc → dl.grafana.com/ci)
- Updated daggerbuild core components with latest fixes
- Updated Go dependencies and wire modules
ARCHITECTURAL COMPATIBILITY VERIFIED:
- Modern pkg/build calls: ./e2e-runner cypress --start-grafana=false --cypress-video
- Our e2e runner supports: All required parameters including --suite, --env flags
- GitHub Actions workflows: Pass compatible arguments
- Binary builds: Successfully creates working e2e-runner
RESOLVES ISSUES:
- Fixes --flags parameter compatibility with GitHub Actions
- Includes all follow-up infrastructure improvements
- Provides complete, tested system with modern CLI framework
- Eliminates external dependency failures (musl.cc timeouts)
- Removes need for path doubling workarounds (modern system handles full paths correctly)
Replaces incremental cherry-picking with complete, tested system from main.
* Dependencies: Update Go modules after pkg/build wholesale copy
DEPENDENCY UPDATES:
- Updated go.work.sum with new dependencies from modern pkg/build system
- Updated all workspace module dependencies (go.mod/go.sum files)
- Removed pkg/build/cmd/enterprise.go (enterprise-only file, gets copied during enterprise development)
ENTERPRISE INTEGRATION FIX:
- enterprise.go file doesn't belong in OSS repository
- Gets copied from grafana-enterprise during development mode
- Main branch doesn't have this file, explaining module compatibility
All Go modules now properly resolved and compatible with modern pkg/build architecture.
* Dependencies: Update workspace Go module checksums after pkg/build wholesale copy
- Synchronizes all go.sum files across workspace modules
- Adds missing .mod.h1 entries that were required after infrastructure update
- Resolves Go Workspace Check CI failures
- Updates 22 modules: .citools/, apps/, pkg/ subdirectories plus go.work.sum
Addresses CI error: 'Please run make update-workspace and commit the changes'
* Infrastructure: Revert to pre-Playwright E2E system for release branch compatibility
Strategic combination of modern daggerbuild with stable E2E infrastructure:
**Modern Daggerbuild (from main):**
- Latest CLI framework (github.com/urfave/cli/v3)
- External infrastructure fixes (musl.cc → dl.grafana.com/ci)
- Complete pkg/build/ system with all enhancements
- Updated dependencies and architecture improvements
**Stable E2E Infrastructure (pre-Playwright):**
- pkg/build/e2e/service.go: Reverted to version before commit b6580ccb103942d3ea26c52fac320810aa93fa1e
- pkg/build/a11y/: Reverted to stable version compatible with existing infrastructure
- Removed experimental pkg/build/e2e-playwright/ system
- Removed experimental e2e-playwright/ test infrastructure
**Why This Approach:**
- GitHub Actions workflows call 'go run ./pkg/build/e2e' (modern system)
- Modern system now expects only standard e2e/ directory (compatible)
- Release branches have standard e2e/ infrastructure (dashboards-suite, various-suite, etc.)
- Eliminates dependency on experimental Playwright infrastructure
**Key Dependencies Met:**
- e2e/pa11yci.conf.js: Added for a11y test compatibility
- /src/e2e directory: Standard directory structure (no e2e-playwright needed)
- Existing test plugins: Uses stable e2e/test-plugins/
**Result:**
Best of both worlds - modern, reliable daggerbuild infrastructure with
proven E2E testing that works across all release branches without
requiring experimental dependencies.
* Fix: Remove unused embed.go file causing golangci-lint failure
- Removes pkg/build/daggerbuild/msi/embed.go with unused embed.FS variable
- MSI build process uses directory mounting instead of embedded filesystem
- Resolves 'var resources is unused (unused)' linting error
* Fix: Update Node.js version to match working E2E configuration
- Changes from v22.11.0 to v22.16.0 to match commit 17952d45e4e406ca7c6f5f441e4ce3ca9d20982a
- Working commit had all E2E tests passing with same daggerbuild infrastructure
- Node.js version differences can affect frontend builds and UI rendering
- Ensures consistent environment between working reference and current branch
* Fix: Use conditional container base for E2E compatibility
- Alpine for OSS tests (better old arch dashboardScene=false compatibility)
- Ubuntu for Enterprise tests (when image renderer needed)
- Restores original release-12.0.3 Alpine behavior for OSS
- Should resolve old arch E2E test failures
* Fix: Go fmt formatting for conditional container logic
* Revert: Remove unnecessary Alpine/Ubuntu conditional logic
- Real issue was wrong environment variable name (dashboardScene vs DISABLE_SCENES)
- Keep Ubuntu base (original main branch behavior) for simplicity
- Container base was not the root cause of old arch failures
* Experiment: Copy scripts/ from pre-Playwright commit (ea0ddb3fc95)
- Copied scripts directory from commit ea0ddb3fc95 (just before Playwright migration)
- This overwrites some CI migration fixes but testing if it's actually needed
- Can revert back to b9b4602dbd5 if CI breaks
Test commit to see real impact on GitHub Actions workflows.
* trigger ci 01
* Fix: Copy .drone.star from main to match scripts structure
- Resolves Starlark evaluation error for missing integration_test_pipelines
- Aligns .drone.star with main branch scripts structure
- Same fix applied to both OSS and Enterprise repositories
* make drone
* Fix ARM/v7 Docker build failures by using dagger run for cross-compilation
- Change artifacts_cmd() in scripts/drone/steps/rgm.star to use 'dagger run go run' instead of 'go run'
- Add --max-execution-steps 100000 to make drone target in Makefile to properly regenerate .drone.yml
- This fixes CGO cross-compilation issues with SQLite for ARM/v7 Docker builds
- Matches the approach already used successfully in Enterprise builds
* Fix Docker base image references in rgm build steps
- Change from symbolic names (alpine-base, ubuntu-base) to actual Docker images
- alpine-base → alpine:3.21.3
- ubuntu-base → ubuntu:22.04
- Add ubuntu and alpine parameters to rgm_artifacts_step and rgm_build_docker_step functions
- Fixes Docker pull errors: 'repository does not exist or may require authorization'
- Aligns OSS configuration with Enterprise approach
---------
Co-authored-by: Kevin Minehart <5140827+kminehart@users.noreply.github.com>
2025-07-18 23:14:14 +08:00
|
|
|
.PHONY: gen-go gen-enterprise-go
|
|
|
|
|
ifeq ("$(wildcard $(ENTERPRISE_EXT_FILE))","") ## if enterprise is not enabled
|
|
|
|
|
gen-enterprise-go:
|
|
|
|
|
@echo "skipping re-generating Wire graph for enterprise: not enabled"
|
|
|
|
|
else
|
|
|
|
|
gen-enterprise-go: ## Generate Wire graph (Enterprise)
|
|
|
|
|
@echo "re-generating Wire graph for enterprise"
|
|
|
|
|
$(GO) run ./pkg/build/wire/cmd/wire/main.go gen -tags "enterprise" -gen_tags "(enterprise || pro)" -output_file_prefix="enterprise_" ./pkg/server
|
|
|
|
|
endif
|
|
|
|
|
gen-go: gen-enterprise-go ## Generate Wire graph
|
|
|
|
|
@echo "generating Wire graph"
|
|
|
|
|
$(GO) run ./pkg/build/wire/cmd/wire/main.go gen -tags "oss" -gen_tags "(!enterprise && !pro)" ./pkg/server
|
2021-08-25 21:11:22 +08:00
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: fix-cue
|
2025-03-17 16:48:41 +08:00
|
|
|
fix-cue:
|
2023-01-24 09:36:46 +08:00
|
|
|
@echo "formatting cue files"
|
2025-10-08 20:02:29 +08:00
|
|
|
$(cue) fix kinds/**/*.cue
|
|
|
|
|
$(cue) fix public/app/plugins/**/**/*.cue
|
2023-01-24 09:36:46 +08:00
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: gen-jsonnet
|
2022-11-03 23:04:39 +08:00
|
|
|
gen-jsonnet:
|
2022-11-11 17:19:29 +08:00
|
|
|
go generate ./devenv/jsonnet
|
2022-11-03 23:04:39 +08:00
|
|
|
|
2024-07-04 00:49:03 +08:00
|
|
|
.PHONY: update-workspace
|
2024-10-16 00:27:27 +08:00
|
|
|
update-workspace: gen-go
|
2024-07-04 00:49:03 +08:00
|
|
|
@echo "updating workspace"
|
2024-08-09 04:51:17 +08:00
|
|
|
bash scripts/go-workspace/update-workspace.sh
|
2024-07-04 00:49:03 +08:00
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: build-go
|
2024-09-17 17:47:00 +08:00
|
|
|
build-go: gen-go update-workspace ## Build all Go binaries.
|
2024-10-15 21:40:51 +08:00
|
|
|
@echo "build go files with updated workspace"
|
|
|
|
|
$(GO) run build.go $(GO_BUILD_FLAGS) build
|
|
|
|
|
|
|
|
|
|
build-go-fast: gen-go ## Build all Go binaries.
|
2019-03-28 00:53:49 +08:00
|
|
|
@echo "build go files"
|
2022-04-02 07:01:05 +08:00
|
|
|
$(GO) run build.go $(GO_BUILD_FLAGS) build
|
2016-10-11 14:51:44 +08:00
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: build-backend
|
2022-11-23 00:53:43 +08:00
|
|
|
build-backend: ## Build Grafana backend.
|
|
|
|
|
@echo "build backend"
|
|
|
|
|
$(GO) run build.go $(GO_BUILD_FLAGS) build-backend
|
|
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: build-server
|
2019-10-22 22:03:22 +08:00
|
|
|
build-server: ## Build Grafana server.
|
2019-03-28 00:53:49 +08:00
|
|
|
@echo "build server"
|
2022-04-02 07:01:05 +08:00
|
|
|
$(GO) run build.go $(GO_BUILD_FLAGS) build-server
|
2018-03-07 06:59:45 +08:00
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: build-cli
|
2019-10-22 22:03:22 +08:00
|
|
|
build-cli: ## Build Grafana CLI application.
|
2021-08-17 18:06:33 +08:00
|
|
|
@echo "build grafana-cli"
|
2022-04-02 07:01:05 +08:00
|
|
|
$(GO) run build.go $(GO_BUILD_FLAGS) build-cli
|
2018-03-07 06:59:45 +08:00
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: build-js
|
2019-10-22 22:03:22 +08:00
|
|
|
build-js: ## Build frontend assets.
|
2019-03-28 00:53:49 +08:00
|
|
|
@echo "build frontend"
|
2018-03-07 06:59:45 +08:00
|
|
|
yarn run build
|
2016-04-26 00:44:26 +08:00
|
|
|
|
2023-10-23 16:44:38 +08:00
|
|
|
PLUGIN_ID ?=
|
|
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: build-plugin-go
|
2023-10-23 16:44:38 +08:00
|
|
|
build-plugin-go: ## Build decoupled plugins
|
|
|
|
|
@echo "build plugin $(PLUGIN_ID)"
|
|
|
|
|
@cd pkg/tsdb; \
|
|
|
|
|
if [ -z "$(PLUGIN_ID)" ]; then \
|
|
|
|
|
echo "PLUGIN_ID is not set"; \
|
|
|
|
|
exit 1; \
|
|
|
|
|
fi; \
|
|
|
|
|
mage -v buildplugin $(PLUGIN_ID)
|
|
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: build
|
2019-10-22 22:03:22 +08:00
|
|
|
build: build-go build-js ## Build backend and frontend.
|
2016-10-11 14:51:44 +08:00
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: run
|
2025-03-17 16:48:41 +08:00
|
|
|
run: ## Build and run web server on filesystem changes. See /.bra.toml for configuration.
|
2025-10-08 20:02:29 +08:00
|
|
|
$(bra) run
|
2018-04-21 02:28:52 +08:00
|
|
|
|
2024-05-30 07:34:16 +08:00
|
|
|
.PHONY: run-go
|
|
|
|
|
run-go: ## Build and run web server immediately.
|
|
|
|
|
$(GO) run -race $(if $(GO_BUILD_TAGS),-build-tags=$(GO_BUILD_TAGS)) \
|
2024-07-04 05:30:41 +08:00
|
|
|
./pkg/cmd/grafana -- server -profile -profile-addr=127.0.0.1 -profile-port=6000 -packaging=dev cfg:app_mode=development
|
2024-05-30 07:34:16 +08:00
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: run-frontend
|
2019-11-12 18:08:40 +08:00
|
|
|
run-frontend: deps-js ## Fetch js dependencies and watch frontend for rebuild
|
|
|
|
|
yarn start
|
|
|
|
|
|
2019-10-22 22:03:22 +08:00
|
|
|
##@ Testing
|
|
|
|
|
|
2022-07-19 16:04:38 +08:00
|
|
|
.PHONY: test-go
|
|
|
|
|
test-go: test-go-unit test-go-integration
|
|
|
|
|
|
|
|
|
|
.PHONY: test-go-unit
|
|
|
|
|
test-go-unit: ## Run unit tests for backend with flags.
|
2025-05-14 19:06:42 +08:00
|
|
|
@echo "backend unit tests ($(SHARD)/$(SHARDS))"
|
|
|
|
|
$(GO) test $(GO_RACE_FLAG) $(GO_TEST_FLAGS) -v -short -timeout=30m \
|
|
|
|
|
$(shell ./scripts/ci/backend-tests/shard.sh -n$(SHARD) -m$(SHARDS) -s)
|
2022-07-19 16:04:38 +08:00
|
|
|
|
2024-08-26 21:32:42 +08:00
|
|
|
.PHONY: test-go-unit-pretty
|
|
|
|
|
test-go-unit-pretty: check-tparse
|
|
|
|
|
@if [ -z "$(FILES)" ]; then \
|
|
|
|
|
echo "Notice: FILES variable is not set. Try \"make test-go-unit-pretty FILES=./pkg/services/mysvc\""; \
|
|
|
|
|
exit 1; \
|
|
|
|
|
fi
|
2025-03-17 17:47:27 +08:00
|
|
|
$(GO) test $(GO_RACE_FLAG) $(GO_TEST_FLAGS) -timeout=10s $(FILES) -json | tparse -all
|
2024-08-26 21:32:42 +08:00
|
|
|
|
2022-07-19 16:04:38 +08:00
|
|
|
.PHONY: test-go-integration
|
|
|
|
|
test-go-integration: ## Run integration tests for backend with flags.
|
|
|
|
|
@echo "test backend integration tests"
|
2025-05-14 19:06:42 +08:00
|
|
|
$(GO) test $(GO_RACE_FLAG) $(GO_TEST_FLAGS) -count=1 -run "^TestIntegration" -covermode=atomic -coverprofile=$(GO_INTEGRATION_COVER_PROFILE) -timeout=5m \
|
|
|
|
|
$(shell ./scripts/ci/backend-tests/pkgs-with-tests-named.sh -b TestIntegration | ./scripts/ci/backend-tests/shard.sh -n$(SHARD) -m$(SHARDS) -s)
|
2022-07-19 16:04:38 +08:00
|
|
|
|
2023-10-17 18:21:45 +08:00
|
|
|
.PHONY: test-go-integration-alertmanager
|
|
|
|
|
test-go-integration-alertmanager: ## Run integration tests for the remote alertmanager (config taken from the mimir_backend block).
|
|
|
|
|
@echo "test remote alertmanager integration tests"
|
|
|
|
|
$(GO) clean -testcache
|
2023-11-24 00:59:36 +08:00
|
|
|
AM_URL=http://localhost:8080 AM_TENANT_ID=test \
|
2024-05-31 23:30:51 +08:00
|
|
|
$(GO) test $(GO_RACE_FLAG) -count=1 -run "^TestIntegrationRemoteAlertmanager" -covermode=atomic -timeout=5m ./pkg/services/ngalert/...
|
2023-10-17 18:21:45 +08:00
|
|
|
|
2025-02-13 18:36:45 +08:00
|
|
|
.PHONY: test-go-integration-grafana-alertmanager
|
|
|
|
|
test-go-integration-grafana-alertmanager: ## Run integration tests for the grafana alertmanager
|
|
|
|
|
@echo "test grafana alertmanager integration tests"
|
|
|
|
|
@export GRAFANA_VERSION=11.5.0-81938; \
|
|
|
|
|
$(GO) run tools/setup_grafana_alertmanager_integration_test_images.go; \
|
|
|
|
|
$(GO) clean -testcache; \
|
|
|
|
|
$(GO) test $(GO_RACE_FLAG) -count=1 -run "^TestAlertmanagerIntegration" -covermode=atomic -timeout=10m ./pkg/tests/alertmanager/...
|
|
|
|
|
|
2022-07-19 16:04:38 +08:00
|
|
|
.PHONY: test-go-integration-postgres
|
|
|
|
|
test-go-integration-postgres: devenv-postgres ## Run integration tests for postgres backend with flags.
|
|
|
|
|
@echo "test backend integration postgres tests"
|
|
|
|
|
$(GO) clean -testcache
|
2023-04-18 00:33:43 +08:00
|
|
|
GRAFANA_TEST_DB=postgres \
|
2025-05-14 19:06:42 +08:00
|
|
|
$(GO) test $(GO_RACE_FLAG) $(GO_TEST_FLAGS) -p=1 -count=1 -run "^TestIntegration" -covermode=atomic -timeout=10m \
|
|
|
|
|
$(shell ./scripts/ci/backend-tests/pkgs-with-tests-named.sh -b TestIntegration | ./scripts/ci/backend-tests/shard.sh -n$(SHARD) -m$(SHARDS) -s)
|
2022-07-19 16:04:38 +08:00
|
|
|
|
|
|
|
|
.PHONY: test-go-integration-mysql
|
|
|
|
|
test-go-integration-mysql: devenv-mysql ## Run integration tests for mysql backend with flags.
|
|
|
|
|
@echo "test backend integration mysql tests"
|
2023-04-18 00:33:43 +08:00
|
|
|
GRAFANA_TEST_DB=mysql \
|
2025-05-14 19:06:42 +08:00
|
|
|
$(GO) test $(GO_RACE_FLAG) $(GO_TEST_FLAGS) -p=1 -count=1 -run "^TestIntegration" -covermode=atomic -timeout=10m \
|
|
|
|
|
$(shell ./scripts/ci/backend-tests/pkgs-with-tests-named.sh -b TestIntegration | ./scripts/ci/backend-tests/shard.sh -n$(SHARD) -m$(SHARDS) -s)
|
2016-10-11 14:51:44 +08:00
|
|
|
|
2023-04-05 16:55:55 +08:00
|
|
|
.PHONY: test-go-integration-redis
|
|
|
|
|
test-go-integration-redis: ## Run integration tests for redis cache.
|
|
|
|
|
@echo "test backend integration redis tests"
|
|
|
|
|
$(GO) clean -testcache
|
2025-05-14 19:06:42 +08:00
|
|
|
REDIS_URL=localhost:6379 $(GO) test $(GO_TEST_FLAGS) -run IntegrationRedis -covermode=atomic -timeout=2m \
|
|
|
|
|
$(shell ./scripts/ci/backend-tests/pkgs-with-tests-named.sh -b TestIntegration | ./scripts/ci/backend-tests/shard.sh -n$(SHARD) -m$(SHARDS) -s)
|
2023-04-05 16:55:55 +08:00
|
|
|
|
|
|
|
|
.PHONY: test-go-integration-memcached
|
|
|
|
|
test-go-integration-memcached: ## Run integration tests for memcached cache.
|
|
|
|
|
@echo "test backend integration memcached tests"
|
|
|
|
|
$(GO) clean -testcache
|
2025-05-14 19:06:42 +08:00
|
|
|
MEMCACHED_HOSTS=localhost:11211 $(GO) test $(GO_RACE_FLAG) $(GO_TEST_FLAGS) -run IntegrationMemcached -covermode=atomic -timeout=2m \
|
|
|
|
|
$(shell ./scripts/ci/backend-tests/pkgs-with-tests-named.sh -b TestIntegration | ./scripts/ci/backend-tests/shard.sh -n$(SHARD) -m$(SHARDS) -s)
|
2025-03-19 19:34:44 +08:00
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: test-js
|
2019-10-22 22:03:22 +08:00
|
|
|
test-js: ## Run tests for frontend.
|
2019-03-28 00:53:49 +08:00
|
|
|
@echo "test frontend"
|
2018-03-07 06:59:45 +08:00
|
|
|
yarn test
|
2016-04-26 00:44:26 +08:00
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: test
|
2019-10-22 22:03:22 +08:00
|
|
|
test: test-go test-js ## Run all tests.
|
2016-10-11 14:51:44 +08:00
|
|
|
|
2019-10-22 22:03:22 +08:00
|
|
|
##@ Linting
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: golangci-lint
|
2025-03-17 16:48:41 +08:00
|
|
|
golangci-lint:
|
2019-10-22 22:03:22 +08:00
|
|
|
@echo "lint via golangci-lint"
|
2025-10-08 20:02:29 +08:00
|
|
|
$(golangci-lint) run \
|
2024-11-26 16:19:53 +08:00
|
|
|
--config .golangci.yml \
|
2025-03-17 17:47:27 +08:00
|
|
|
$(if $(GO_BUILD_TAGS),--build-tags $(GO_BUILD_TAGS)) \
|
2024-08-09 22:05:02 +08:00
|
|
|
$(GO_LINT_FILES)
|
2019-10-22 22:03:22 +08:00
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: lint-go
|
2024-08-09 22:05:02 +08:00
|
|
|
lint-go: golangci-lint ## Run all code checks for backend. You can use GO_LINT_FILES to specify exact files to check
|
2019-07-02 21:06:59 +08:00
|
|
|
|
2024-10-08 20:47:33 +08:00
|
|
|
.PHONY: lint-go-diff
|
2025-03-17 16:48:41 +08:00
|
|
|
lint-go-diff:
|
2024-10-10 04:32:23 +08:00
|
|
|
git diff --name-only $(GIT_BASE) | \
|
2024-10-08 20:47:33 +08:00
|
|
|
grep '\.go$$' | \
|
|
|
|
|
$(XARGSR) dirname | \
|
|
|
|
|
sort -u | \
|
|
|
|
|
sed 's,^,./,' | \
|
2025-10-08 20:02:29 +08:00
|
|
|
$(XARGSR) $(golangci-lint) run --config .golangci.yml
|
2024-10-08 20:47:33 +08:00
|
|
|
|
2019-07-23 18:12:33 +08:00
|
|
|
# with disabled SC1071 we are ignored some TCL,Expect `/usr/bin/env expect` scripts
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: shellcheck
|
2019-10-22 22:03:22 +08:00
|
|
|
shellcheck: $(SH_FILES) ## Run checks for shell scripts.
|
2019-07-23 18:12:33 +08:00
|
|
|
@docker run --rm -v "$$PWD:/mnt" koalaman/shellcheck:stable \
|
2019-10-02 16:11:15 +08:00
|
|
|
$(SH_FILES) -e SC1071 -e SC2162
|
2019-07-23 18:12:33 +08:00
|
|
|
|
2019-10-22 22:03:22 +08:00
|
|
|
##@ Docker
|
|
|
|
|
|
2023-03-01 04:18:00 +08:00
|
|
|
TAG_SUFFIX=$(if $(WIRE_TAGS)!=oss,-$(WIRE_TAGS))
|
|
|
|
|
PLATFORM=linux/amd64
|
|
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: build-docker-full
|
2019-10-22 22:03:22 +08:00
|
|
|
build-docker-full: ## Build Docker image for development.
|
|
|
|
|
@echo "build docker container"
|
2023-03-23 23:03:25 +08:00
|
|
|
tar -ch . | \
|
|
|
|
|
docker buildx build - \
|
2023-03-01 04:18:00 +08:00
|
|
|
--platform $(PLATFORM) \
|
|
|
|
|
--build-arg BINGO=false \
|
|
|
|
|
--build-arg GO_BUILD_TAGS=$(GO_BUILD_TAGS) \
|
|
|
|
|
--build-arg WIRE_TAGS=$(WIRE_TAGS) \
|
2023-09-27 03:15:39 +08:00
|
|
|
--build-arg COMMIT_SHA=$$(git rev-parse HEAD) \
|
2023-04-18 21:03:27 +08:00
|
|
|
--build-arg BUILD_BRANCH=$$(git rev-parse --abbrev-ref HEAD) \
|
2023-03-01 04:18:00 +08:00
|
|
|
--tag grafana/grafana$(TAG_SUFFIX):dev \
|
|
|
|
|
$(DOCKER_BUILD_ARGS)
|
2019-10-22 22:03:22 +08:00
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: build-docker-full-ubuntu
|
2022-02-08 20:38:43 +08:00
|
|
|
build-docker-full-ubuntu: ## Build Docker image based on Ubuntu for development.
|
|
|
|
|
@echo "build docker container"
|
2023-03-23 23:03:25 +08:00
|
|
|
tar -ch . | \
|
|
|
|
|
docker buildx build - \
|
2023-03-01 04:18:00 +08:00
|
|
|
--platform $(PLATFORM) \
|
|
|
|
|
--build-arg BINGO=false \
|
|
|
|
|
--build-arg GO_BUILD_TAGS=$(GO_BUILD_TAGS) \
|
|
|
|
|
--build-arg WIRE_TAGS=$(WIRE_TAGS) \
|
2023-09-27 03:15:39 +08:00
|
|
|
--build-arg COMMIT_SHA=$$(git rev-parse HEAD) \
|
2023-04-18 21:03:27 +08:00
|
|
|
--build-arg BUILD_BRANCH=$$(git rev-parse --abbrev-ref HEAD) \
|
2023-09-28 21:48:41 +08:00
|
|
|
--build-arg BASE_IMAGE=ubuntu:22.04 \
|
2024-04-25 02:26:14 +08:00
|
|
|
--build-arg GO_IMAGE=golang:$(GO_VERSION) \
|
2023-03-01 04:18:00 +08:00
|
|
|
--tag grafana/grafana$(TAG_SUFFIX):dev-ubuntu \
|
|
|
|
|
$(DOCKER_BUILD_ARGS)
|
2022-02-08 20:38:43 +08:00
|
|
|
|
2019-10-22 22:03:22 +08:00
|
|
|
##@ Services
|
2019-07-02 21:06:59 +08:00
|
|
|
|
2024-09-10 14:36:41 +08:00
|
|
|
COMPOSE := $(shell if docker compose --help >/dev/null 2>&1; then echo docker compose; else echo docker-compose; fi)
|
|
|
|
|
ifeq ($(COMPOSE),docker-compose)
|
|
|
|
|
$(warning From July 2023 Compose V1 (docker-compose) stopped receiving updates. Migrate to Compose V2 (docker compose). https://docs.docker.com/compose/migrate/)
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
# Create a Docker Compose file with provided sources and start them.
|
|
|
|
|
# For example, `make devenv sources=postgres,auth/openldap`
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: devenv
|
2019-05-29 00:32:14 +08:00
|
|
|
ifeq ($(sources),)
|
|
|
|
|
devenv:
|
2024-09-10 14:36:41 +08:00
|
|
|
@printf 'You have to define sources for this command \nexample: make devenv sources=postgres,auth/openldap\n'
|
2019-05-29 00:32:14 +08:00
|
|
|
else
|
2024-09-10 14:36:41 +08:00
|
|
|
devenv: devenv-down ## Start optional services like Postgresql, Prometheus, or Elasticsearch.
|
2019-05-25 09:38:01 +08:00
|
|
|
@cd devenv; \
|
2019-05-29 00:32:14 +08:00
|
|
|
./create_docker_compose.sh $(targets) || \
|
2019-07-16 14:16:11 +08:00
|
|
|
(rm -rf {docker-compose.yaml,conf.tmp,.env}; exit 1)
|
2019-05-29 00:32:14 +08:00
|
|
|
|
|
|
|
|
@cd devenv; \
|
2024-09-10 14:36:41 +08:00
|
|
|
$(COMPOSE) up -d --build
|
2019-05-29 00:32:14 +08:00
|
|
|
endif
|
2019-05-25 09:38:01 +08:00
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: devenv-down
|
2019-10-22 22:03:22 +08:00
|
|
|
devenv-down: ## Stop optional services.
|
2019-05-29 00:32:14 +08:00
|
|
|
@cd devenv; \
|
2019-05-29 01:08:27 +08:00
|
|
|
test -f docker-compose.yaml && \
|
2024-09-10 14:36:41 +08:00
|
|
|
$(COMPOSE) down || exit 0;
|
2019-10-22 22:03:22 +08:00
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: devenv-postgres
|
2022-07-19 16:04:38 +08:00
|
|
|
devenv-postgres:
|
|
|
|
|
@cd devenv; \
|
|
|
|
|
sources=postgres_tests
|
|
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: devenv-mysql
|
2022-07-19 16:04:38 +08:00
|
|
|
devenv-mysql:
|
|
|
|
|
@cd devenv; \
|
|
|
|
|
sources=mysql_tests
|
|
|
|
|
|
2019-10-22 22:03:22 +08:00
|
|
|
##@ Helpers
|
|
|
|
|
|
2020-04-21 22:16:41 +08:00
|
|
|
# We separate the protobuf generation because most development tasks on
|
|
|
|
|
# Grafana do not involve changing protobuf files and protoc is not a
|
|
|
|
|
# go-gettable dependency and so getting it installed can be inconvenient.
|
|
|
|
|
#
|
|
|
|
|
# If you are working on changes to protobuf interfaces you may either use
|
2024-04-01 23:09:17 +08:00
|
|
|
# this target or run the individual scripts below directly
|
|
|
|
|
.PHONY: protobuf
|
2020-04-21 22:16:41 +08:00
|
|
|
protobuf: ## Compile protobuf definitions
|
|
|
|
|
bash scripts/protobuf-check.sh
|
2024-05-08 21:42:40 +08:00
|
|
|
go install google.golang.org/protobuf/cmd/protoc-gen-go
|
2024-07-30 18:16:16 +08:00
|
|
|
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.4.0
|
2024-05-08 21:42:40 +08:00
|
|
|
buf generate pkg/plugins/backendplugin/pluginextensionv2 --template pkg/plugins/backendplugin/pluginextensionv2/buf.gen.yaml
|
2025-03-14 17:38:19 +08:00
|
|
|
buf generate pkg/apis/secret/v0alpha1/decrypt --template pkg/apis/secret/v0alpha1/decrypt/buf.gen.yaml
|
2024-07-10 06:08:13 +08:00
|
|
|
buf generate pkg/storage/unified/resource --template pkg/storage/unified/resource/buf.gen.yaml
|
2024-11-12 17:19:12 +08:00
|
|
|
buf generate pkg/services/authz/proto/v1 --template pkg/services/authz/proto/v1/buf.gen.yaml
|
2025-01-28 01:47:33 +08:00
|
|
|
buf generate pkg/services/ngalert/store/proto/v1 --template pkg/services/ngalert/store/proto/v1/buf.gen.yaml
|
2020-04-21 22:16:41 +08:00
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: clean
|
2019-10-22 22:03:22 +08:00
|
|
|
clean: ## Clean up intermediate build artifacts.
|
|
|
|
|
@echo "cleaning"
|
|
|
|
|
rm -rf node_modules
|
|
|
|
|
rm -rf public/build
|
|
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: gen-ts
|
2021-11-16 03:45:35 +08:00
|
|
|
gen-ts:
|
|
|
|
|
@echo "generating TypeScript definitions"
|
|
|
|
|
go get github.com/tkrajina/typescriptify-golang-structs/typescriptify@v0.1.7
|
|
|
|
|
tscriptify -interface -package=github.com/grafana/grafana/pkg/services/live/pipeline -import="import { FieldConfig } from '@grafana/data'" -target=public/app/features/live/pipeline/models.gen.ts pkg/services/live/pipeline/config.go
|
|
|
|
|
go mod tidy
|
|
|
|
|
|
2021-07-14 20:40:28 +08:00
|
|
|
# This repository's configuration is protected (https://readme.drone.io/signature/).
|
2021-08-12 16:39:09 +08:00
|
|
|
# Use this make target to regenerate the configuration YAML files when
|
2021-07-14 20:40:28 +08:00
|
|
|
# you modify starlark files.
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: drone
|
2021-10-22 04:28:57 +08:00
|
|
|
drone: $(DRONE)
|
2024-02-24 03:28:30 +08:00
|
|
|
bash scripts/drone/env-var-check.sh
|
CI Migration: Backport pkg/build (daggerbuild) and GHAs to `release-12.0.3` (#107997)
* CI: move grafana-build into pkg/build (#105640)
* move grafana-build into pkg/build
* Update go.mod/go.sum files after cherry-pick build
- Updates from workspace sync after cherry-picking daggerbuild package
- Resolves dependency conflicts from pkg/build integration
- Required for successful build after CI migration backport
* CI Migration: Replace .github with main branch version
- Complete replacement of .github directory from main branch
- Includes updated workflows, actions, and configuration files
- Ensures all CI improvements from main are included
- Next step: fix branch-specific issues in separate commits
* Fix branch triggers: Update workflows to target release branches
- Update 8 workflows to trigger on release-* instead of main
- Ensures workflows run on pull requests to release branches
- Workflows updated: documentation-ci, pr-codeql-analysis-*, pr-dependabot-update-go-workspace, pr-go-workspace-check, pr-k8s-codegen-check, verify-kinds, codeowners-validator
* Fix branch triggers: Update workflows to target both main and release branches
- CORRECTED: Include both main and release-* branch patterns
- Ensures workflows run on both main branch (original functionality) and release branches (needed for backport)
- Previous commit incorrectly removed main branch support
- Workflows updated: documentation-ci, pr-codeql-analysis-*, pr-dependabot-update-go-workspace, pr-go-workspace-check, pr-k8s-codegen-check, verify-kinds, codeowners-validator
* CI Migration: Update .gitignore to allow OSS wire file to be committed
- Remove **/wire_gen.go (allow pkg/server/wire_gen.go to be committed)
- Add /pkg/server/enterprise_wire_gen.go (keep enterprise wire file ignored)
- This enables the new committed wire files architecture for CI
* CI Migration: Add enhanced wire tool with automatic build constraints
- Backport enhanced wire tool from main branch with -gen_tags flag
- This enables automatic regeneration with proper constraints to prevent conflicts
- Wire file contains all required functions: Initialize, InitializeDocumentBuilders, etc.
- Solves the missing wire functions issue causing CI failures
- Enhanced tool ensures build constraints persist on regeneration
* CI Migration: Update Makefile to use enhanced wire tool with build constraints
- Update gen-go target to use -gen_tags flag for automatic build constraints
- Ensures future engineers get proper build constraints when running 'make gen-go'
- Matches main branch approach for consistent wire file generation
- Removes dependency on WIRE_TAGS variable and GO_RACE_FLAG for simplicity
* Add gen-enterprise-go target to Makefile for release-12.0.3
- Backports gen-enterprise-go target from main branch
- Enables enterprise wire file generation in release branches
- Part of CI migration backport wire infrastructure fixes
- Resolves CI issues where enterprise wire functions were missing
* Fix wire tool golden file format for Drone CI compatibility
- Update all 43 golden test files to match main branch format
- Change go:generate command from github.com/google/wire/cmd/wire to ./pkg/build/wire/cmd/wire/main.go
- Remove legacy '// +build !wireinject' constraints
- Fixes Drone CI test failures that were blocking OSS PR merge
- All wire tests now pass successfully
This aligns the backport branch with the golden file format updates
that were made in main branch when the wire tool was enhanced.
* Update swagger specs to include enterprise APIs
- Regenerated api-enterprise-spec.json with enterprise API definitions
- Updated api-merged.json with merged OSS and enterprise specs
- Regenerated openapi3.json with complete API specifications
- Fixes enterprise CI swagger generation validation failures
- Enterprise APIs now properly detected and documented
* Fix OSS integration tests missing enterprise build tags in Drone CI
- Add -tags=enterprise to all integration test steps in lib.star
- Fixes test-backend-integration, postgres-integration-tests, and mysql-integration-tests
- Regenerate .drone.yml with proper enterprise build tags
- Resolves 'server could not find the requested resource' errors for enterprise APIs
- Ensures enterprise APIs (querylibrary, reporting, banners, scim) are registered during tests
- Aligns OSS Drone CI with GitHub Actions behavior and enterprise repository
* Fix CODEOWNERS for release-12.0.3 compatibility
- Remove 21 entries that reference files/directories not present in release branch
- Resolves File Exist Checker failures in codeowners-validator workflow
- Maintains team ownership assignments from main branch for existing files
- Lines removed: .air.toml, apps/secret/, apps/iam/, e2e-playwright/, packages/grafana-alerting/, etc.
* baldm0mma/ update releasefinder
* Add i18n-extract script for release branch compatibility
- Add 'i18n-extract': 'make i18n-extract' to package.json scripts
- Resolves i18n-verify workflow failure that expects this script
- The make target already exists and handles OSS + enterprise i18n extraction
- Maintains i18n verification functionality from main branch workflows
- Simple safe addition that calls existing make infrastructure
* Phase 4: Fix GitHub Actions workflow branch triggers
- Add release-*.*.* pattern to 8 workflows missing it
- Fix duplicate release branch patterns in 3 workflows
- Ensure consistent branch trigger format across all workflows
- Critical workflows now properly trigger on release branches
Fixes workflows: actionlint, backend-code-checks, go-lint, reject-gh-secrets,
run-schema-v2-e2e, shellcheck, swagger-gen, trivy-scan
* Fix: Backport E2E runner infrastructure for Enterprise CI
- Add e2e/main.go and e2e/internal/ directory from main branch
- Add urfave/cli/v3 dependency required by E2E runner
- Fixes Enterprise CI failure: 'Build E2E test runner' and 'Build & package Grafana for e2e tests'
- Root cause: E2E runner infrastructure was added to main after release-12.0.3 branch creation
- Solution: Backport missing E2E runner files to enable Enterprise CI completion
Resolves: no Go files in /opt/actions-runner/_work/grafana-enterprise/grafana-enterprise/grafana/e2e
* Fix: Update go.mod dependency classification for urfave/cli/v3
- Change urfave/cli/v3 from indirect to direct dependency
- Fixes Go Workspace Check failure in CI
- Required after adding E2E runner infrastructure that directly imports urfave/cli/v3
- Resolves: make update-workspace corrects dependency classification
* Fix: Add team ownership for urfave/cli/v3 dependency
- Assign @grafana/grafana-backend-group as owner for github.com/urfave/cli/v3@v3.3.8
- Follows existing pattern: urfave/cli v1 and v2 also owned by grafana-backend-group
- Resolves Backend Code Checks / Validate Backend Configs CI failure
- Required for E2E runner infrastructure dependency ownership compliance
Fixes: modowners check requiring team assignment for newly added dependencies
* Fix: Revert experimental E2E playwright infrastructure to stable version
- Revert pr-e2e-tests.yml to stable Cypress-based E2E testing
- Remove experimental storybook-verification-playwright.yml workflow
- Revert run-dashboard-search-e2e.yml and release-pr.yml to use e2e/test-plugins/
- Keep stable E2E runner infrastructure (e2e/main.go + e2e/internal/)
- Remove experimental playwright features per team recommendation
Team feedback: Playwright tests are experimental and shouldn't be backported to stable release branches
* Fix: Complete cleanup of experimental playwright dependencies
- Revert package.json to stable version (remove e2e-playwright scripts and path references)
- Revert playwright.config.ts to stable plugin-e2e configuration
- Remove all experimental playwright infrastructure dependencies
- Ensure clean stable E2E testing environment
All experimental features removed per team recommendation for stable release branches
* Fix: Restore working package.json configuration
- Revert package.json to version 12.0.3 (working release branch version)
- Fix workspace dependency resolution issues caused by incorrect revert to main branch version
- FE tests, betterer, and linting should now work correctly
Issue was caused by reverting package.json to main branch (12.1.0-pre) instead of keeping
the working release branch configuration (12.0.3)
* CI: mirror some CI dependencies (#106148)
* mirror some CI dependencies
* remove -v from go build
* Fix: Backport missing e2e/run-suite script for daggerbuild E2E system
The daggerbuild E2E system (used by OSS workflows) expects ./e2e/run-suite
to exist, but we only backported the new E2E runner infrastructure.
This script is needed for:
- OSS workflow: 'go run ./pkg/build/e2e --suite=dashboards-suite'
- Legacy Cypress configuration with video support
- Integration between daggerbuild and existing Cypress test suites
Resolves E2E test failures in OSS workflows where videos directory
cannot be found because run-suite script was missing.
* Fix: Resolve daggerbuild E2E path doubling issue
- Extract just suite name from full path using filepath.Base()
- Prevents doubled paths like './e2e/e2e/dashboards-suite/videos'
- Resolves 'no spec files found' and 'no such file or directory' errors
- GitHub Actions passes full paths like 'e2e/dashboards-suite' but run-suite script expects just 'dashboards-suite'
* Infrastructure: Wholesale copy pkg/build/ from main
COMPLETE DAGGERBUILD SYSTEM UPDATE:
- Modern E2E system with CLI framework and --flags support
- New accessibility testing system (a11y/)
- New Playwright E2E testing system (e2e-playwright/)
- External infrastructure improvements (musl.cc → dl.grafana.com/ci)
- Updated daggerbuild core components with latest fixes
- Updated Go dependencies and wire modules
ARCHITECTURAL COMPATIBILITY VERIFIED:
- Modern pkg/build calls: ./e2e-runner cypress --start-grafana=false --cypress-video
- Our e2e runner supports: All required parameters including --suite, --env flags
- GitHub Actions workflows: Pass compatible arguments
- Binary builds: Successfully creates working e2e-runner
RESOLVES ISSUES:
- Fixes --flags parameter compatibility with GitHub Actions
- Includes all follow-up infrastructure improvements
- Provides complete, tested system with modern CLI framework
- Eliminates external dependency failures (musl.cc timeouts)
- Removes need for path doubling workarounds (modern system handles full paths correctly)
Replaces incremental cherry-picking with complete, tested system from main.
* Dependencies: Update Go modules after pkg/build wholesale copy
DEPENDENCY UPDATES:
- Updated go.work.sum with new dependencies from modern pkg/build system
- Updated all workspace module dependencies (go.mod/go.sum files)
- Removed pkg/build/cmd/enterprise.go (enterprise-only file, gets copied during enterprise development)
ENTERPRISE INTEGRATION FIX:
- enterprise.go file doesn't belong in OSS repository
- Gets copied from grafana-enterprise during development mode
- Main branch doesn't have this file, explaining module compatibility
All Go modules now properly resolved and compatible with modern pkg/build architecture.
* Dependencies: Update workspace Go module checksums after pkg/build wholesale copy
- Synchronizes all go.sum files across workspace modules
- Adds missing .mod.h1 entries that were required after infrastructure update
- Resolves Go Workspace Check CI failures
- Updates 22 modules: .citools/, apps/, pkg/ subdirectories plus go.work.sum
Addresses CI error: 'Please run make update-workspace and commit the changes'
* Infrastructure: Revert to pre-Playwright E2E system for release branch compatibility
Strategic combination of modern daggerbuild with stable E2E infrastructure:
**Modern Daggerbuild (from main):**
- Latest CLI framework (github.com/urfave/cli/v3)
- External infrastructure fixes (musl.cc → dl.grafana.com/ci)
- Complete pkg/build/ system with all enhancements
- Updated dependencies and architecture improvements
**Stable E2E Infrastructure (pre-Playwright):**
- pkg/build/e2e/service.go: Reverted to version before commit b6580ccb103942d3ea26c52fac320810aa93fa1e
- pkg/build/a11y/: Reverted to stable version compatible with existing infrastructure
- Removed experimental pkg/build/e2e-playwright/ system
- Removed experimental e2e-playwright/ test infrastructure
**Why This Approach:**
- GitHub Actions workflows call 'go run ./pkg/build/e2e' (modern system)
- Modern system now expects only standard e2e/ directory (compatible)
- Release branches have standard e2e/ infrastructure (dashboards-suite, various-suite, etc.)
- Eliminates dependency on experimental Playwright infrastructure
**Key Dependencies Met:**
- e2e/pa11yci.conf.js: Added for a11y test compatibility
- /src/e2e directory: Standard directory structure (no e2e-playwright needed)
- Existing test plugins: Uses stable e2e/test-plugins/
**Result:**
Best of both worlds - modern, reliable daggerbuild infrastructure with
proven E2E testing that works across all release branches without
requiring experimental dependencies.
* Fix: Remove unused embed.go file causing golangci-lint failure
- Removes pkg/build/daggerbuild/msi/embed.go with unused embed.FS variable
- MSI build process uses directory mounting instead of embedded filesystem
- Resolves 'var resources is unused (unused)' linting error
* Fix: Update Node.js version to match working E2E configuration
- Changes from v22.11.0 to v22.16.0 to match commit 17952d45e4e406ca7c6f5f441e4ce3ca9d20982a
- Working commit had all E2E tests passing with same daggerbuild infrastructure
- Node.js version differences can affect frontend builds and UI rendering
- Ensures consistent environment between working reference and current branch
* Fix: Use conditional container base for E2E compatibility
- Alpine for OSS tests (better old arch dashboardScene=false compatibility)
- Ubuntu for Enterprise tests (when image renderer needed)
- Restores original release-12.0.3 Alpine behavior for OSS
- Should resolve old arch E2E test failures
* Fix: Go fmt formatting for conditional container logic
* Revert: Remove unnecessary Alpine/Ubuntu conditional logic
- Real issue was wrong environment variable name (dashboardScene vs DISABLE_SCENES)
- Keep Ubuntu base (original main branch behavior) for simplicity
- Container base was not the root cause of old arch failures
* Experiment: Copy scripts/ from pre-Playwright commit (ea0ddb3fc95)
- Copied scripts directory from commit ea0ddb3fc95 (just before Playwright migration)
- This overwrites some CI migration fixes but testing if it's actually needed
- Can revert back to b9b4602dbd5 if CI breaks
Test commit to see real impact on GitHub Actions workflows.
* trigger ci 01
* Fix: Copy .drone.star from main to match scripts structure
- Resolves Starlark evaluation error for missing integration_test_pipelines
- Aligns .drone.star with main branch scripts structure
- Same fix applied to both OSS and Enterprise repositories
* make drone
* Fix ARM/v7 Docker build failures by using dagger run for cross-compilation
- Change artifacts_cmd() in scripts/drone/steps/rgm.star to use 'dagger run go run' instead of 'go run'
- Add --max-execution-steps 100000 to make drone target in Makefile to properly regenerate .drone.yml
- This fixes CGO cross-compilation issues with SQLite for ARM/v7 Docker builds
- Matches the approach already used successfully in Enterprise builds
* Fix Docker base image references in rgm build steps
- Change from symbolic names (alpine-base, ubuntu-base) to actual Docker images
- alpine-base → alpine:3.21.3
- ubuntu-base → ubuntu:22.04
- Add ubuntu and alpine parameters to rgm_artifacts_step and rgm_build_docker_step functions
- Fixes Docker pull errors: 'repository does not exist or may require authorization'
- Aligns OSS configuration with Enterprise approach
---------
Co-authored-by: Kevin Minehart <5140827+kminehart@users.noreply.github.com>
2025-07-18 23:14:14 +08:00
|
|
|
$(DRONE) starlark --format --max-execution-steps 100000
|
2021-11-30 18:53:07 +08:00
|
|
|
$(DRONE) lint .drone.yml --trusted
|
2021-10-14 22:02:45 +08:00
|
|
|
$(DRONE) --server https://drone.grafana.net sign --save grafana/grafana
|
2021-07-14 20:40:28 +08:00
|
|
|
|
2023-01-30 17:27:11 +08:00
|
|
|
# Generate an Emacs tags table (https://www.gnu.org/software/emacs/manual/html_node/emacs/Tags-Tables.html) for Starlark files.
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: scripts/drone/TAGS
|
2023-01-30 17:27:11 +08:00
|
|
|
scripts/drone/TAGS: $(shell find scripts/drone -name '*.star')
|
|
|
|
|
etags --lang none --regex="/def \(\w+\)[^:]+:/\1/" --regex="/\s*\(\w+\) =/\1/" $^ -o $@
|
|
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: format-drone
|
2022-12-07 15:13:57 +08:00
|
|
|
format-drone:
|
2023-09-12 23:19:06 +08:00
|
|
|
buildifier --lint=fix -r scripts/drone
|
2022-12-07 15:13:57 +08:00
|
|
|
|
2024-05-30 07:34:16 +08:00
|
|
|
.PHONY: go-race-is-enabled
|
|
|
|
|
go-race-is-enabled:
|
|
|
|
|
@if [ -n "$(GO_RACE)" ]; then \
|
|
|
|
|
echo "The Go race detector is enabled locally, yey!"; \
|
|
|
|
|
else \
|
|
|
|
|
echo "The Go race detector is NOT enabled locally, boo!"; \
|
|
|
|
|
fi;
|
|
|
|
|
|
|
|
|
|
.PHONY: enable-go-race
|
|
|
|
|
enable-go-race:
|
|
|
|
|
@touch .go-race-enabled-locally
|
|
|
|
|
|
2024-08-26 21:32:42 +08:00
|
|
|
check-tparse:
|
|
|
|
|
@command -v tparse >/dev/null 2>&1 || { \
|
|
|
|
|
echo >&2 "Error: tparse is not installed. Refer to https://github.com/mfridman/tparse"; \
|
|
|
|
|
exit 1; \
|
|
|
|
|
}
|
|
|
|
|
|
2024-04-01 23:09:17 +08:00
|
|
|
.PHONY: help
|
2019-10-22 22:03:22 +08:00
|
|
|
help: ## Display this help.
|
|
|
|
|
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
|