mirror of
https://github.com/grafana/grafana.git
synced 2025-12-21 20:24:41 +08:00
Compare commits
165 Commits
docs/add-t
...
release-12
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c26d181c5a | ||
|
|
5bedee0ed6 | ||
|
|
151d301472 | ||
|
|
9cb685b5b3 | ||
|
|
7b200250e4 | ||
|
|
fc8ae6a7ed | ||
|
|
06e338138e | ||
|
|
9b58acfa21 | ||
|
|
d2f7a7efc0 | ||
|
|
291b9a0a95 | ||
|
|
80f07ef6ee | ||
|
|
39e1ff7507 | ||
|
|
d01ddba07c | ||
|
|
9c5dd1b6ce | ||
|
|
960ab72507 | ||
|
|
c45b704a2a | ||
|
|
5057562e45 | ||
|
|
02461eb29c | ||
|
|
90b5877b80 | ||
|
|
6f27935715 | ||
|
|
3bcccff3c1 | ||
|
|
a9fda9c242 | ||
|
|
b74d0a8432 | ||
|
|
9ed230bd75 | ||
|
|
5c588b5561 | ||
|
|
5284fec9e6 | ||
|
|
a618299d84 | ||
|
|
7af254f25b | ||
|
|
7f901e06be | ||
|
|
444e7f42a8 | ||
|
|
9aaa364229 | ||
|
|
19a5e2b357 | ||
|
|
cc71fafc89 | ||
|
|
2d70033aeb | ||
|
|
21ba1e19fd | ||
|
|
fce1b2b6cf | ||
|
|
f46af3fe88 | ||
|
|
c62cfd57b4 | ||
|
|
dc5eaa55a2 | ||
|
|
4575774bbf | ||
|
|
6c513d0d43 | ||
|
|
1f851fbfff | ||
|
|
285c855c39 | ||
|
|
70fcd166fe | ||
|
|
673e0684ff | ||
|
|
583d177789 | ||
|
|
e5087650c9 | ||
|
|
21300a0502 | ||
|
|
bb980d6fd7 | ||
|
|
c760f97bc4 | ||
|
|
bf33b3e067 | ||
|
|
99f1af1779 | ||
|
|
a90f47ef46 | ||
|
|
3696cbb481 | ||
|
|
c4886436ae | ||
|
|
5386cb9666 | ||
|
|
e429aea3b6 | ||
|
|
2c55900b9c | ||
|
|
d3003d1978 | ||
|
|
081a4ce56a | ||
|
|
599911b414 | ||
|
|
9f1ad2f357 | ||
|
|
bfd714e657 | ||
|
|
a4edabe99c | ||
|
|
a6e6c019cc | ||
|
|
a2be46a154 | ||
|
|
b2f2cda3db | ||
|
|
b3bdbb4bf6 | ||
|
|
ee5bc90830 | ||
|
|
cf2ff7cc4b | ||
|
|
bc460406ea | ||
|
|
15c92827ae | ||
|
|
b09796f50c | ||
|
|
93c1372530 | ||
|
|
0755c91e9c | ||
|
|
4bd77ff7bb | ||
|
|
8b83e016ec | ||
|
|
f8fcd6b2fb | ||
|
|
20c14c48f4 | ||
|
|
231224f017 | ||
|
|
4c0f4d4255 | ||
|
|
1684e10789 | ||
|
|
74ead49ccb | ||
|
|
52ecba092c | ||
|
|
fb80e2d4bf | ||
|
|
d6e4707bf3 | ||
|
|
007b734596 | ||
|
|
38958ee7b7 | ||
|
|
845f7efd02 | ||
|
|
9614267c47 | ||
|
|
104a98b98d | ||
|
|
e8b765f8c7 | ||
|
|
8dc525a4f5 | ||
|
|
e5b4036d49 | ||
|
|
1dc715cf81 | ||
|
|
0428ec33f3 | ||
|
|
3dd9a04b1b | ||
|
|
02651fbf4a | ||
|
|
5a27449bd1 | ||
|
|
0a2cda1a4e | ||
|
|
4f90459ce8 | ||
|
|
3e4ec66706 | ||
|
|
173f09ce0c | ||
|
|
0296c41a9d | ||
|
|
af62210f7d | ||
|
|
2ab8fdb0df | ||
|
|
467392cde3 | ||
|
|
34907a5453 | ||
|
|
26a7187dcd | ||
|
|
6e03c4649e | ||
|
|
1e6f0d5af2 | ||
|
|
5389f19fbb | ||
|
|
3ae140cc19 | ||
|
|
df5de8219b | ||
|
|
3b64a0b431 | ||
|
|
5130b3c704 | ||
|
|
1c3628f3c6 | ||
|
|
add798f9be | ||
|
|
2966c2b41f | ||
|
|
8c70b0b4eb | ||
|
|
a844040faf | ||
|
|
93605ed4ee | ||
|
|
15d4d230cb | ||
|
|
cd3523db68 | ||
|
|
566460f4fe | ||
|
|
b582b64026 | ||
|
|
5ba62c974d | ||
|
|
83d11f0a57 | ||
|
|
207a7c81c3 | ||
|
|
5d5fa03cf6 | ||
|
|
7ff801727c | ||
|
|
6211301d09 | ||
|
|
a3ac4c50c9 | ||
|
|
e0f1535806 | ||
|
|
4d9705cb04 | ||
|
|
87e16f2266 | ||
|
|
60990ea070 | ||
|
|
38b5ba191c | ||
|
|
302e95684d | ||
|
|
9c3ae92722 | ||
|
|
0e2194e4b8 | ||
|
|
31c9ac9e3e | ||
|
|
527925ece5 | ||
|
|
bdeda62175 | ||
|
|
0944b9eab8 | ||
|
|
b60d5d502c | ||
|
|
7c8d3f7e51 | ||
|
|
0f159d1541 | ||
|
|
99f4aabbc5 | ||
|
|
1a3525781f | ||
|
|
2a87c627ad | ||
|
|
ee5cc5a271 | ||
|
|
ccd7b6ce7e | ||
|
|
1fdeca1015 | ||
|
|
6be2d4128f | ||
|
|
1194671ac0 | ||
|
|
bd602fd6d9 | ||
|
|
f1c1311961 | ||
|
|
ea7eb59bac | ||
|
|
0b985cfd8d | ||
|
|
7d65c5c2a6 | ||
|
|
df07305465 | ||
|
|
f25d2fe7e2 | ||
|
|
0417533b61 | ||
|
|
6d4a443aaf |
@@ -1,12 +1,13 @@
|
|||||||
[build]
|
[build]
|
||||||
bin = "./bin/grafana-air"
|
bin = "./bin/grafana"
|
||||||
args_bin = ["server", "-profile", "-profile-addr=127.0.0.1", "-profile-port=6000", "-profile-block-rate=1", "-profile-mutex-rate=5", "-packaging=dev", "cfg:app_mode=development"]
|
args_bin = ["server", "-profile", "-profile-addr=127.0.0.1", "-profile-port=6000", "-profile-block-rate=1", "-profile-mutex-rate=5", "-packaging=dev", "cfg:app_mode=development"]
|
||||||
cmd = "make GO_BUILD_DEV=1 build-air"
|
cmd = "make GO_BUILD_DEV=1 build-backend"
|
||||||
exclude_regex = ["_test.go", "_gen.go"]
|
exclude_regex = ["_test.go", "_gen.go"]
|
||||||
exclude_unchanged = true
|
exclude_unchanged = true
|
||||||
follow_symlink = true
|
follow_symlink = true
|
||||||
include_dir = ["apps", "conf", "pkg", "public/views"]
|
include_dir = ["apps", "conf", "devenv/dev-dashboards", "pkg", "public/views"]
|
||||||
include_ext = ["go", "ini", "toml", "html", "json"]
|
include_ext = ["go", "ini", "toml", "html", "json"]
|
||||||
|
pre_cmd = ["make gen-go"]
|
||||||
stop_on_error = true
|
stop_on_error = true
|
||||||
send_interrupt = true
|
send_interrupt = true
|
||||||
kill_delay = 500
|
kill_delay = 500
|
||||||
|
|||||||
155
.betterer.eslint.config.js
Normal file
155
.betterer.eslint.config.js
Normal file
@@ -0,0 +1,155 @@
|
|||||||
|
// @ts-check
|
||||||
|
const emotionPlugin = require('@emotion/eslint-plugin');
|
||||||
|
const importPlugin = require('eslint-plugin-import');
|
||||||
|
const jestPlugin = require('eslint-plugin-jest');
|
||||||
|
const jsxA11yPlugin = require('eslint-plugin-jsx-a11y');
|
||||||
|
const lodashPlugin = require('eslint-plugin-lodash');
|
||||||
|
const barrelPlugin = require('eslint-plugin-no-barrel-files');
|
||||||
|
const reactPlugin = require('eslint-plugin-react');
|
||||||
|
const testingLibraryPlugin = require('eslint-plugin-testing-library');
|
||||||
|
|
||||||
|
const grafanaConfig = require('@grafana/eslint-config/flat');
|
||||||
|
const grafanaPlugin = require('@grafana/eslint-plugin');
|
||||||
|
const grafanaI18nPlugin = require('@grafana/i18n/eslint-plugin');
|
||||||
|
|
||||||
|
// Include the Grafana config and remove the rules,
|
||||||
|
// as we just want to pull in all of the necessary configuration but not run the rules
|
||||||
|
// (this should only be concerned with checking rules that we want to improve,
|
||||||
|
// so there's no need to try and run the rules that will be linted properly anyway)
|
||||||
|
const { rules, ...baseConfig } = grafanaConfig;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {Array<import('eslint').Linter.Config>}
|
||||||
|
*/
|
||||||
|
module.exports = [
|
||||||
|
{
|
||||||
|
name: 'grafana/betterer-ignores',
|
||||||
|
ignores: [
|
||||||
|
'.github',
|
||||||
|
'.yarn',
|
||||||
|
'**/.*',
|
||||||
|
'**/*.gen.ts',
|
||||||
|
'**/build/',
|
||||||
|
'**/compiled/',
|
||||||
|
'**/dist/',
|
||||||
|
'data/',
|
||||||
|
'deployment_tools_config.json',
|
||||||
|
'devenv',
|
||||||
|
'e2e/test-plugins',
|
||||||
|
'e2e/tmp',
|
||||||
|
'packages/grafana-ui/src/components/Icon/iconBundle.ts',
|
||||||
|
'pkg',
|
||||||
|
'playwright-report',
|
||||||
|
'public/lib/monaco/',
|
||||||
|
'public/locales/_build',
|
||||||
|
'public/locales/**/*.js',
|
||||||
|
'public/vendor/',
|
||||||
|
'scripts/grafana-server/tmp',
|
||||||
|
'!.betterer.eslint.config.js',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'react/jsx-runtime',
|
||||||
|
// @ts-ignore - not sure why but flat config is typed as a maybe?
|
||||||
|
...reactPlugin.configs.flat['jsx-runtime'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: ['**/*.{ts,tsx,js}'],
|
||||||
|
...baseConfig,
|
||||||
|
plugins: {
|
||||||
|
...baseConfig.plugins,
|
||||||
|
'@emotion': emotionPlugin,
|
||||||
|
lodash: lodashPlugin,
|
||||||
|
jest: jestPlugin,
|
||||||
|
import: importPlugin,
|
||||||
|
'jsx-a11y': jsxA11yPlugin,
|
||||||
|
'no-barrel-files': barrelPlugin,
|
||||||
|
'@grafana': grafanaPlugin,
|
||||||
|
'testing-library': testingLibraryPlugin,
|
||||||
|
'@grafana/i18n': grafanaI18nPlugin,
|
||||||
|
},
|
||||||
|
linterOptions: {
|
||||||
|
// This reports unused disable directives that we can clean up but
|
||||||
|
// it also conflicts with the betterer eslint rules so disabled
|
||||||
|
reportUnusedDisableDirectives: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: ['**/*.{js,jsx,ts,tsx}'],
|
||||||
|
rules: {
|
||||||
|
'@typescript-eslint/no-explicit-any': 'error',
|
||||||
|
'@grafana/no-aria-label-selectors': 'error',
|
||||||
|
'no-restricted-imports': [
|
||||||
|
'error',
|
||||||
|
{
|
||||||
|
patterns: [
|
||||||
|
{
|
||||||
|
group: ['@grafana/ui*', '*/Layout/*'],
|
||||||
|
importNames: ['Layout', 'HorizontalGroup', 'VerticalGroup'],
|
||||||
|
message: 'Use Stack component instead.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
group: ['@grafana/ui/src/*', '@grafana/runtime/src/*', '@grafana/data/src/*'],
|
||||||
|
message: 'Import from the public export instead.',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: ['**/*.{js,jsx,ts,tsx}'],
|
||||||
|
ignores: [
|
||||||
|
'**/*.{test,spec}.{ts,tsx}',
|
||||||
|
'**/__mocks__/**',
|
||||||
|
'**/public/test/**',
|
||||||
|
'**/mocks.{ts,tsx}',
|
||||||
|
'**/mocks/**/*.{ts,tsx}',
|
||||||
|
'**/spec/**/*.{ts,tsx}',
|
||||||
|
],
|
||||||
|
rules: {
|
||||||
|
'@typescript-eslint/consistent-type-assertions': ['error', { assertionStyle: 'never' }],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: ['**/*.{js,jsx,ts,tsx}'],
|
||||||
|
ignores: [
|
||||||
|
'**/*.{test,spec}.{ts,tsx}',
|
||||||
|
'**/__mocks__/**',
|
||||||
|
'**/public/test/**',
|
||||||
|
'**/mocks.{ts,tsx}',
|
||||||
|
'**/spec/**/*.{ts,tsx}',
|
||||||
|
],
|
||||||
|
rules: {
|
||||||
|
'no-restricted-syntax': [
|
||||||
|
'error',
|
||||||
|
{
|
||||||
|
selector: 'Identifier[name=localStorage]',
|
||||||
|
message: 'Direct usage of localStorage is not allowed. import store from @grafana/data instead',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
selector: 'MemberExpression[object.name=localStorage]',
|
||||||
|
message: 'Direct usage of localStorage is not allowed. import store from @grafana/data instead',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
selector:
|
||||||
|
'Program:has(ImportDeclaration[source.value="@grafana/ui"] ImportSpecifier[imported.name="Card"]) JSXOpeningElement[name.name="Card"]:not(:has(JSXAttribute[name.name="noMargin"]))',
|
||||||
|
message:
|
||||||
|
'Add noMargin prop to Card components to remove built-in margins. Use layout components like Stack or Grid with the gap prop instead for consistent spacing.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
selector:
|
||||||
|
'Program:has(ImportDeclaration[source.value="@grafana/ui"] ImportSpecifier[imported.name="Field"]) JSXOpeningElement[name.name="Field"]:not(:has(JSXAttribute[name.name="noMargin"]))',
|
||||||
|
message:
|
||||||
|
'Add noMargin prop to Field components to remove built-in margins. Use layout components like Stack or Grid with the gap prop instead for consistent spacing.',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: ['public/app/**/*.{ts,tsx}'],
|
||||||
|
rules: {
|
||||||
|
'no-barrel-files/no-barrel-files': 'error',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
4634
.betterer.results
Normal file
4634
.betterer.results
Normal file
File diff suppressed because it is too large
Load Diff
97
.betterer.ts
Normal file
97
.betterer.ts
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
import { BettererFileTest } from '@betterer/betterer';
|
||||||
|
import { ESLint } from 'eslint';
|
||||||
|
import { promises as fs } from 'fs';
|
||||||
|
|
||||||
|
// Why are we ignoring these?
|
||||||
|
// They're all deprecated/being removed so doesn't make sense to fix types
|
||||||
|
const eslintPathsToIgnore = [
|
||||||
|
'packages/grafana-ui/src/graveyard', // will be removed alongside angular in Grafana 12
|
||||||
|
'public/app/angular', // will be removed in Grafana 12
|
||||||
|
'public/app/plugins/panel/graph', // will be removed alongside angular in Grafana 12
|
||||||
|
'public/app/plugins/panel/table-old', // will be removed alongside angular in Grafana 12
|
||||||
|
];
|
||||||
|
|
||||||
|
// Avoid using functions that report the position of the issues, as this causes a lot of merge conflicts
|
||||||
|
export default {
|
||||||
|
'better eslint': () =>
|
||||||
|
countEslintErrors()
|
||||||
|
.include('**/*.{ts,tsx}')
|
||||||
|
.exclude(new RegExp(eslintPathsToIgnore.join('|'))),
|
||||||
|
'no undocumented stories': () => countUndocumentedStories().include('**/!(*.internal).story.tsx'),
|
||||||
|
'no gf-form usage': () =>
|
||||||
|
regexp(/gf-form/gm, 'gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.')
|
||||||
|
.include('**/*.{ts,tsx,html}')
|
||||||
|
.exclude(new RegExp('packages/grafana-ui/src/themes/GlobalStyles')),
|
||||||
|
};
|
||||||
|
|
||||||
|
function countUndocumentedStories() {
|
||||||
|
return new BettererFileTest(async (filePaths, fileTestResult) => {
|
||||||
|
await Promise.all(
|
||||||
|
filePaths.map(async (filePath) => {
|
||||||
|
// look for .mdx import in the story file
|
||||||
|
const mdxImportRegex = new RegExp("^import.*\\.mdx';$", 'gm');
|
||||||
|
// Looks for the "autodocs" string in the file
|
||||||
|
const autodocsStringRegex = /autodocs/;
|
||||||
|
|
||||||
|
const fileText = await fs.readFile(filePath, 'utf8');
|
||||||
|
|
||||||
|
const hasMdxImport = mdxImportRegex.test(fileText);
|
||||||
|
const hasAutodocsString = autodocsStringRegex.test(fileText);
|
||||||
|
// If both .mdx import and autodocs string are missing, add an issue
|
||||||
|
if (!hasMdxImport && !hasAutodocsString) {
|
||||||
|
// In this case the file contents don't matter:
|
||||||
|
const file = fileTestResult.addFile(filePath, '');
|
||||||
|
// Add the issue to the first character of the file:
|
||||||
|
file.addIssue(0, 0, 'No undocumented stories are allowed, please add an .mdx file with some documentation');
|
||||||
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generic regexp pattern matcher, similar to @betterer/regexp.
|
||||||
|
* The only difference is that the positions of the errors are not reported, as this may cause a lot of merge conflicts.
|
||||||
|
*/
|
||||||
|
function regexp(pattern: RegExp, issueMessage: string) {
|
||||||
|
return new BettererFileTest(async (filePaths, fileTestResult) => {
|
||||||
|
await Promise.all(
|
||||||
|
filePaths.map(async (filePath) => {
|
||||||
|
const fileText = await fs.readFile(filePath, 'utf8');
|
||||||
|
const matches = fileText.match(pattern);
|
||||||
|
if (matches) {
|
||||||
|
// File contents doesn't matter, since we're not reporting the position
|
||||||
|
const file = fileTestResult.addFile(filePath, '');
|
||||||
|
matches.forEach(() => {
|
||||||
|
file.addIssue(0, 0, issueMessage);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function countEslintErrors() {
|
||||||
|
return new BettererFileTest(async (filePaths, fileTestResult) => {
|
||||||
|
// Just bail early if there's no files to test. Prevents trying to get the base config from failing
|
||||||
|
if (filePaths.length === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const runner = new ESLint({
|
||||||
|
overrideConfigFile: './.betterer.eslint.config.js',
|
||||||
|
warnIgnored: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
const lintResults = await runner.lintFiles(Array.from(filePaths));
|
||||||
|
|
||||||
|
lintResults.forEach(({ messages, filePath }) => {
|
||||||
|
const file = fileTestResult.addFile(filePath, '');
|
||||||
|
messages
|
||||||
|
.sort((a, b) => (a.message > b.message ? 1 : -1))
|
||||||
|
.forEach((message, index) => {
|
||||||
|
file.addIssue(0, 0, message.message, `${index}`);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
13
.bingo/.gitignore
vendored
Normal file
13
.bingo/.gitignore
vendored
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
|
||||||
|
# Ignore everything
|
||||||
|
*
|
||||||
|
|
||||||
|
# But not these files:
|
||||||
|
!.gitignore
|
||||||
|
!*.mod
|
||||||
|
!*.sum
|
||||||
|
!README.md
|
||||||
|
!Variables.mk
|
||||||
|
!variables.env
|
||||||
|
|
||||||
|
*tmp.mod
|
||||||
14
.bingo/README.md
Normal file
14
.bingo/README.md
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# Project Development Dependencies.
|
||||||
|
|
||||||
|
This is directory which stores Go modules with pinned buildable package that is used within this repository, managed by https://github.com/bwplotka/bingo.
|
||||||
|
|
||||||
|
- Run `bingo get` to install all tools having each own module file in this directory.
|
||||||
|
- Run `bingo get <tool>` to install <tool> that have own module file in this directory.
|
||||||
|
- For Makefile: Make sure to put `include .bingo/Variables.mk` in your Makefile, then use $(<upper case tool name>) variable where <tool> is the .bingo/<tool>.mod.
|
||||||
|
- For shell: Run `source .bingo/variables.env` to source all environment variable for each tool.
|
||||||
|
- For go: Import `.bingo/variables.go` to for variable names.
|
||||||
|
- See https://github.com/bwplotka/bingo or -h on how to add, remove or change binaries dependencies.
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
- Go 1.14+
|
||||||
25
.bingo/Variables.mk
Normal file
25
.bingo/Variables.mk
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# Auto generated binary variables helper managed by https://github.com/bwplotka/bingo v0.9. DO NOT EDIT.
|
||||||
|
# All tools are designed to be build inside $GOBIN.
|
||||||
|
BINGO_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
|
||||||
|
GOPATH ?= $(shell go env GOPATH)
|
||||||
|
GOBIN ?= $(firstword $(subst :, ,${GOPATH}))/bin
|
||||||
|
GO ?= $(shell which go)
|
||||||
|
|
||||||
|
# Below generated variables ensure that every time a tool under each variable is invoked, the correct version
|
||||||
|
# will be used; reinstalling only if needed.
|
||||||
|
# For example for drone variable:
|
||||||
|
#
|
||||||
|
# In your main Makefile (for non array binaries):
|
||||||
|
#
|
||||||
|
#include .bingo/Variables.mk # Assuming -dir was set to .bingo .
|
||||||
|
#
|
||||||
|
#command: $(DRONE)
|
||||||
|
# @echo "Running drone"
|
||||||
|
# @$(DRONE) <flags/args..>
|
||||||
|
#
|
||||||
|
DRONE := $(GOBIN)/drone-v1.5.0
|
||||||
|
$(DRONE): $(BINGO_DIR)/drone.mod
|
||||||
|
@# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies.
|
||||||
|
@echo "(re)installing $(GOBIN)/drone-v1.5.0"
|
||||||
|
@cd $(BINGO_DIR) && GOWORK=off CGO_ENABLED=0 $(GO) build -mod=mod -modfile=drone.mod -o=$(GOBIN)/drone-v1.5.0 "github.com/drone/drone-cli/drone"
|
||||||
|
|
||||||
7
.bingo/drone.mod
Normal file
7
.bingo/drone.mod
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT
|
||||||
|
|
||||||
|
go 1.17
|
||||||
|
|
||||||
|
replace github.com/docker/docker => github.com/docker/engine v17.12.0-ce-rc1.0.20200309214505-aa6a9891b09c+incompatible
|
||||||
|
|
||||||
|
require github.com/drone/drone-cli v1.5.0 // drone CGO_ENABLED=0
|
||||||
1010
.bingo/drone.sum
Normal file
1010
.bingo/drone.sum
Normal file
File diff suppressed because it is too large
Load Diff
1
.bingo/go.mod
Normal file
1
.bingo/go.mod
Normal file
@@ -0,0 +1 @@
|
|||||||
|
module _ // Fake go.mod auto-created by 'bingo' for go -moddir compatibility with non-Go projects. Commit this file, together with other .mod files.
|
||||||
12
.bingo/variables.env
Normal file
12
.bingo/variables.env
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# Auto generated binary variables helper managed by https://github.com/bwplotka/bingo v0.9. DO NOT EDIT.
|
||||||
|
# All tools are designed to be build inside $GOBIN.
|
||||||
|
# Those variables will work only until 'bingo get' was invoked, or if tools were installed via Makefile's Variables.mk.
|
||||||
|
GOBIN=${GOBIN:=$(go env GOBIN)}
|
||||||
|
|
||||||
|
if [ -z "$GOBIN" ]; then
|
||||||
|
GOBIN="$(go env GOPATH)/bin"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
DRONE="${GOBIN}/drone-v1.5.0"
|
||||||
|
|
||||||
@@ -17,7 +17,7 @@ watch_exts = [".go", ".ini", ".toml", ".template.html"]
|
|||||||
ignore_files = [".*_gen.go"]
|
ignore_files = [".*_gen.go"]
|
||||||
build_delay = 1500
|
build_delay = 1500
|
||||||
cmds = [
|
cmds = [
|
||||||
["make", "GO_BUILD_DEV=1", "build-go"],
|
["make", "GO_BUILD_DEV=1", "build-go-fast"],
|
||||||
["make", "gen-jsonnet"],
|
["make", "gen-jsonnet"],
|
||||||
["./bin/grafana", "server", "-profile", "-profile-addr=127.0.0.1", "-profile-port=6000", "-profile-block-rate=1", "-profile-mutex-rate=5", "-packaging=dev", "cfg:app_mode=development"]
|
["./bin/grafana", "server", "-profile", "-profile-addr=127.0.0.1", "-profile-port=6000", "-profile-block-rate=1", "-profile-mutex-rate=5", "-packaging=dev", "cfg:app_mode=development"]
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -234,6 +234,7 @@ Grunt & Watch tasks:
|
|||||||
- binary to `/usr/sbin/grafana-server`
|
- binary to `/usr/sbin/grafana-server`
|
||||||
- init.d script improvements, renamed to `/etc/init.d/grafana-server`
|
- init.d script improvements, renamed to `/etc/init.d/grafana-server`
|
||||||
- added default file with environment variables,
|
- added default file with environment variables,
|
||||||
|
|
||||||
- `/etc/default/grafana-server` (deb/ubuntu)
|
- `/etc/default/grafana-server` (deb/ubuntu)
|
||||||
- `/etc/sysconfig/grafana-server` (centos/redhat)
|
- `/etc/sysconfig/grafana-server` (centos/redhat)
|
||||||
|
|
||||||
|
|||||||
@@ -12,9 +12,6 @@ $(shell \
|
|||||||
endef
|
endef
|
||||||
|
|
||||||
|
|
||||||
# Tool: "air"
|
|
||||||
air = "$(call compile_tool,air,github.com/air-verse/air)"
|
|
||||||
|
|
||||||
# Tool: "bra"
|
# Tool: "bra"
|
||||||
bra = "$(call compile_tool,bra,github.com/unknwon/bra)"
|
bra = "$(call compile_tool,bra,github.com/unknwon/bra)"
|
||||||
|
|
||||||
|
|||||||
@@ -1,28 +0,0 @@
|
|||||||
module air
|
|
||||||
|
|
||||||
go 1.25.5
|
|
||||||
|
|
||||||
tool github.com/air-verse/air
|
|
||||||
|
|
||||||
require (
|
|
||||||
dario.cat/mergo v1.0.2 // indirect
|
|
||||||
github.com/air-verse/air v1.62.0 // indirect
|
|
||||||
github.com/bep/godartsass/v2 v2.5.0 // indirect
|
|
||||||
github.com/bep/golibsass v1.2.0 // indirect
|
|
||||||
github.com/creack/pty v1.1.24 // indirect
|
|
||||||
github.com/fatih/color v1.18.0 // indirect
|
|
||||||
github.com/fsnotify/fsnotify v1.9.0 // indirect
|
|
||||||
github.com/gobwas/glob v0.2.3 // indirect
|
|
||||||
github.com/gohugoio/hugo v0.147.6 // indirect
|
|
||||||
github.com/mattn/go-colorable v0.1.14 // indirect
|
|
||||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
|
||||||
github.com/pelletier/go-toml v1.9.5 // indirect
|
|
||||||
github.com/pelletier/go-toml/v2 v2.2.4 // indirect
|
|
||||||
github.com/spf13/afero v1.14.0 // indirect
|
|
||||||
github.com/spf13/cast v1.8.0 // indirect
|
|
||||||
github.com/tdewolff/parse/v2 v2.8.1 // indirect
|
|
||||||
golang.org/x/net v0.47.0 // indirect
|
|
||||||
golang.org/x/sys v0.38.0 // indirect
|
|
||||||
golang.org/x/text v0.31.0 // indirect
|
|
||||||
google.golang.org/protobuf v1.36.6 // indirect
|
|
||||||
)
|
|
||||||
@@ -1,190 +0,0 @@
|
|||||||
dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8=
|
|
||||||
dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA=
|
|
||||||
github.com/BurntSushi/locker v0.0.0-20171006230638-a6e239ea1c69 h1:+tu3HOoMXB7RXEINRVIpxJCT+KdYiI7LAEAUrOw3dIU=
|
|
||||||
github.com/BurntSushi/locker v0.0.0-20171006230638-a6e239ea1c69/go.mod h1:L1AbZdiDllfyYH5l5OkAaZtk7VkWe89bPJFmnDBNHxg=
|
|
||||||
github.com/air-verse/air v1.62.0 h1:6CoXL4MAX9dc4xAzLfjMcDfbBoGmW5VjuuTV/1+bI+M=
|
|
||||||
github.com/air-verse/air v1.62.0/go.mod h1:EO+jWuetL10tS9raffwg8WEV0t0KUeucRRaf9ii86dA=
|
|
||||||
github.com/alecthomas/chroma/v2 v2.17.2 h1:Rm81SCZ2mPoH+Q8ZCc/9YvzPUN/E7HgPiPJD8SLV6GI=
|
|
||||||
github.com/alecthomas/chroma/v2 v2.17.2/go.mod h1:RVX6AvYm4VfYe/zsk7mjHueLDZor3aWCNE14TFlepBk=
|
|
||||||
github.com/armon/go-radix v1.0.1-0.20221118154546-54df44f2176c h1:651/eoCRnQ7YtSjAnSzRucrJz+3iGEFt+ysraELS81M=
|
|
||||||
github.com/armon/go-radix v1.0.1-0.20221118154546-54df44f2176c/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
|
|
||||||
github.com/bep/clocks v0.5.0 h1:hhvKVGLPQWRVsBP/UB7ErrHYIO42gINVbvqxvYTPVps=
|
|
||||||
github.com/bep/clocks v0.5.0/go.mod h1:SUq3q+OOq41y2lRQqH5fsOoxN8GbxSiT6jvoVVLCVhU=
|
|
||||||
github.com/bep/debounce v1.2.1 h1:v67fRdBA9UQu2NhLFXrSg0Brw7CexQekrBwDMM8bzeY=
|
|
||||||
github.com/bep/debounce v1.2.1/go.mod h1:H8yggRPQKLUhUoqrJC1bO2xNya7vanpDl7xR3ISbCJ0=
|
|
||||||
github.com/bep/gitmap v1.6.0 h1:sDuQMm9HoTL0LtlrfxjbjgAg2wHQd4nkMup2FInYzhA=
|
|
||||||
github.com/bep/gitmap v1.6.0/go.mod h1:n+3W1f/rot2hynsqEGxGMErPRgT41n9CkGuzPvz9cIw=
|
|
||||||
github.com/bep/goat v0.5.0 h1:S8jLXHCVy/EHIoCY+btKkmcxcXFd34a0Q63/0D4TKeA=
|
|
||||||
github.com/bep/goat v0.5.0/go.mod h1:Md9x7gRxiWKs85yHlVTvHQw9rg86Bm+Y4SuYE8CTH7c=
|
|
||||||
github.com/bep/godartsass/v2 v2.5.0 h1:tKRvwVdyjCIr48qgtLa4gHEdtRkPF8H1OeEhJAEv7xg=
|
|
||||||
github.com/bep/godartsass/v2 v2.5.0/go.mod h1:rjsi1YSXAl/UbsGL85RLDEjRKdIKUlMQHr6ChUNYOFU=
|
|
||||||
github.com/bep/golibsass v1.2.0 h1:nyZUkKP/0psr8nT6GR2cnmt99xS93Ji82ZD9AgOK6VI=
|
|
||||||
github.com/bep/golibsass v1.2.0/go.mod h1:DL87K8Un/+pWUS75ggYv41bliGiolxzDKWJAq3eJ1MA=
|
|
||||||
github.com/bep/goportabletext v0.1.0 h1:8dqym2So1cEqVZiBa4ZnMM1R9l/DnC1h4ONg4J5kujw=
|
|
||||||
github.com/bep/goportabletext v0.1.0/go.mod h1:6lzSTsSue75bbcyvVc0zqd1CdApuT+xkZQ6Re5DzZFg=
|
|
||||||
github.com/bep/gowebp v0.4.0 h1:QihuVnvIKbRoeBNQkN0JPMM8ClLmD6V2jMftTFwSK3Q=
|
|
||||||
github.com/bep/gowebp v0.4.0/go.mod h1:95gtYkAA8iIn1t3HkAPurRCVGV/6NhgaHJ1urz0iIwc=
|
|
||||||
github.com/bep/imagemeta v0.12.0 h1:ARf+igs5B7pf079LrqRnwzQ/wEB8Q9v4NSDRZO1/F5k=
|
|
||||||
github.com/bep/imagemeta v0.12.0/go.mod h1:23AF6O+4fUi9avjiydpKLStUNtJr5hJB4rarG18JpN8=
|
|
||||||
github.com/bep/lazycache v0.8.0 h1:lE5frnRjxaOFbkPZ1YL6nijzOPPz6zeXasJq8WpG4L8=
|
|
||||||
github.com/bep/lazycache v0.8.0/go.mod h1:BQ5WZepss7Ko91CGdWz8GQZi/fFnCcyWupv8gyTeKwk=
|
|
||||||
github.com/bep/logg v0.4.0 h1:luAo5mO4ZkhA5M1iDVDqDqnBBnlHjmtZF6VAyTp+nCQ=
|
|
||||||
github.com/bep/logg v0.4.0/go.mod h1:Ccp9yP3wbR1mm++Kpxet91hAZBEQgmWgFgnXX3GkIV0=
|
|
||||||
github.com/bep/overlayfs v0.10.0 h1:wS3eQ6bRsLX+4AAmwGjvoFSAQoeheamxofFiJ2SthSE=
|
|
||||||
github.com/bep/overlayfs v0.10.0/go.mod h1:ouu4nu6fFJaL0sPzNICzxYsBeWwrjiTdFZdK4lI3tro=
|
|
||||||
github.com/bep/tmc v0.5.1 h1:CsQnSC6MsomH64gw0cT5f+EwQDcvZz4AazKunFwTpuI=
|
|
||||||
github.com/bep/tmc v0.5.1/go.mod h1:tGYHN8fS85aJPhDLgXETVKp+PR382OvFi2+q2GkGsq0=
|
|
||||||
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
|
|
||||||
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
|
||||||
github.com/clbanning/mxj/v2 v2.7.0 h1:WA/La7UGCanFe5NpHF0Q3DNtnCsVoxbPKuyBNHWRyME=
|
|
||||||
github.com/clbanning/mxj/v2 v2.7.0/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s=
|
|
||||||
github.com/creack/pty v1.1.24 h1:bJrF4RRfyJnbTJqzRLHzcGaZK1NeM5kTC9jGgovnR1s=
|
|
||||||
github.com/creack/pty v1.1.24/go.mod h1:08sCNb52WyoAwi2QDyzUCTgcvVFhUzewun7wtTfvcwE=
|
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
|
||||||
github.com/disintegration/gift v1.2.1 h1:Y005a1X4Z7Uc+0gLpSAsKhWi4qLtsdEcMIbbdvdZ6pc=
|
|
||||||
github.com/disintegration/gift v1.2.1/go.mod h1:Jh2i7f7Q2BM7Ezno3PhfezbR1xpUg9dUg3/RlKGr4HI=
|
|
||||||
github.com/dlclark/regexp2 v1.11.5 h1:Q/sSnsKerHeCkc/jSTNq1oCm7KiVgUMZRDUoRu0JQZQ=
|
|
||||||
github.com/dlclark/regexp2 v1.11.5/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
|
|
||||||
github.com/evanw/esbuild v0.25.3 h1:4JKyUsm/nHDhpxis4IyWXAi8GiyTwG1WdEp6OhGVE8U=
|
|
||||||
github.com/evanw/esbuild v0.25.3/go.mod h1:D2vIQZqV/vIf/VRHtViaUtViZmG7o+kKmlBfVQuRi48=
|
|
||||||
github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
|
|
||||||
github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
|
|
||||||
github.com/frankban/quicktest v1.7.2/go.mod h1:jaStnuzAqU1AJdCO0l53JDCJrVDKcS03DbaAcR7Ks/o=
|
|
||||||
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
|
|
||||||
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
|
|
||||||
github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
|
|
||||||
github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
|
|
||||||
github.com/getkin/kin-openapi v0.132.0 h1:3ISeLMsQzcb5v26yeJrBcdTCEQTag36ZjaGk7MIRUwk=
|
|
||||||
github.com/getkin/kin-openapi v0.132.0/go.mod h1:3OlG51PCYNsPByuiMB0t4fjnNlIDnaEDsjiKUV8nL58=
|
|
||||||
github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
|
|
||||||
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
|
||||||
github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=
|
|
||||||
github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY=
|
|
||||||
github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE=
|
|
||||||
github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=
|
|
||||||
github.com/gobuffalo/flect v1.0.3 h1:xeWBM2nui+qnVvNM4S3foBhCAL2XgPU+a7FdpelbTq4=
|
|
||||||
github.com/gobuffalo/flect v1.0.3/go.mod h1:A5msMlrHtLqh9umBSnvabjsMrCcCpAyzglnDvkbYKHs=
|
|
||||||
github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
|
|
||||||
github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
|
|
||||||
github.com/gohugoio/go-i18n/v2 v2.1.3-0.20230805085216-e63c13218d0e h1:QArsSubW7eDh8APMXkByjQWvuljwPGAGQpJEFn0F0wY=
|
|
||||||
github.com/gohugoio/go-i18n/v2 v2.1.3-0.20230805085216-e63c13218d0e/go.mod h1:3Ltoo9Banwq0gOtcOwxuHG6omk+AwsQPADyw2vQYOJQ=
|
|
||||||
github.com/gohugoio/hashstructure v0.5.0 h1:G2fjSBU36RdwEJBWJ+919ERvOVqAg9tfcYp47K9swqg=
|
|
||||||
github.com/gohugoio/hashstructure v0.5.0/go.mod h1:Ser0TniXuu/eauYmrwM4o64EBvySxNzITEOLlm4igec=
|
|
||||||
github.com/gohugoio/httpcache v0.7.0 h1:ukPnn04Rgvx48JIinZvZetBfHaWE7I01JR2Q2RrQ3Vs=
|
|
||||||
github.com/gohugoio/httpcache v0.7.0/go.mod h1:fMlPrdY/vVJhAriLZnrF5QpN3BNAcoBClgAyQd+lGFI=
|
|
||||||
github.com/gohugoio/hugo v0.147.6 h1:rL4rnus/5qzj4+FoA+JMzsVvFJ2YZdVIH6pbuCB2P84=
|
|
||||||
github.com/gohugoio/hugo v0.147.6/go.mod h1:Sb2COQPDPYG+tRSpePtzKytiuVDqkBivEhgIew1QbNo=
|
|
||||||
github.com/gohugoio/hugo-goldmark-extensions/extras v0.3.0 h1:gj49kTR5Z4Hnm0ZaQrgPVazL3DUkppw+x6XhHCmh+Wk=
|
|
||||||
github.com/gohugoio/hugo-goldmark-extensions/extras v0.3.0/go.mod h1:IMMj7xiUbLt1YNJ6m7AM4cnsX4cFnnfkleO/lBHGzUg=
|
|
||||||
github.com/gohugoio/hugo-goldmark-extensions/passthrough v0.3.1 h1:nUzXfRTszLliZuN0JTKeunXTRaiFX6ksaWP0puLLYAY=
|
|
||||||
github.com/gohugoio/hugo-goldmark-extensions/passthrough v0.3.1/go.mod h1:Wy8ThAA8p2/w1DY05vEzq6EIeI2mzDjvHsu7ULBVwog=
|
|
||||||
github.com/gohugoio/locales v0.14.0 h1:Q0gpsZwfv7ATHMbcTNepFd59H7GoykzWJIxi113XGDc=
|
|
||||||
github.com/gohugoio/locales v0.14.0/go.mod h1:ip8cCAv/cnmVLzzXtiTpPwgJ4xhKZranqNqtoIu0b/4=
|
|
||||||
github.com/gohugoio/localescompressed v1.0.1 h1:KTYMi8fCWYLswFyJAeOtuk/EkXR/KPTHHNN9OS+RTxo=
|
|
||||||
github.com/gohugoio/localescompressed v1.0.1/go.mod h1:jBF6q8D7a0vaEmcWPNcAjUZLJaIVNiwvM3WlmTvooB0=
|
|
||||||
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
|
||||||
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
|
|
||||||
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
|
|
||||||
github.com/hairyhenderson/go-codeowners v0.7.0 h1:s0W4wF8bdsBEjTWzwzSlsatSthWtTAF2xLgo4a4RwAo=
|
|
||||||
github.com/hairyhenderson/go-codeowners v0.7.0/go.mod h1:wUlNgQ3QjqC4z8DnM5nnCYVq/icpqXJyJOukKx5U8/Q=
|
|
||||||
github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
|
|
||||||
github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
|
|
||||||
github.com/jdkato/prose v1.2.1 h1:Fp3UnJmLVISmlc57BgKUzdjr0lOtjqTZicL3PaYy6cU=
|
|
||||||
github.com/jdkato/prose v1.2.1/go.mod h1:AiRHgVagnEx2JbQRQowVBKjG0bcs/vtkGCH1dYAL1rA=
|
|
||||||
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
|
|
||||||
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
|
|
||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
|
||||||
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
|
|
||||||
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
|
|
||||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
|
||||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
|
||||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
|
||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
|
||||||
github.com/kyokomi/emoji/v2 v2.2.13 h1:GhTfQa67venUUvmleTNFnb+bi7S3aocF7ZCXU9fSO7U=
|
|
||||||
github.com/kyokomi/emoji/v2 v2.2.13/go.mod h1:JUcn42DTdsXJo1SWanHh4HKDEyPaR5CqkmoirZZP9qE=
|
|
||||||
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
|
|
||||||
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
|
|
||||||
github.com/makeworld-the-better-one/dither/v2 v2.4.0 h1:Az/dYXiTcwcRSe59Hzw4RI1rSnAZns+1msaCXetrMFE=
|
|
||||||
github.com/makeworld-the-better-one/dither/v2 v2.4.0/go.mod h1:VBtN8DXO7SNtyGmLiGA7IsFeKrBkQPze1/iAeM95arc=
|
|
||||||
github.com/marekm4/color-extractor v1.2.1 h1:3Zb2tQsn6bITZ8MBVhc33Qn1k5/SEuZ18mrXGUqIwn0=
|
|
||||||
github.com/marekm4/color-extractor v1.2.1/go.mod h1:90VjmiHI6M8ez9eYUaXLdcKnS+BAOp7w+NpwBdkJmpA=
|
|
||||||
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
|
|
||||||
github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
|
|
||||||
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
|
||||||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
|
||||||
github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
|
|
||||||
github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
|
|
||||||
github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c h1:cqn374mizHuIWj+OSJCajGr/phAmuMug9qIX3l9CflE=
|
|
||||||
github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
|
|
||||||
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
|
|
||||||
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
|
|
||||||
github.com/muesli/smartcrop v0.3.0 h1:JTlSkmxWg/oQ1TcLDoypuirdE8Y/jzNirQeLkxpA6Oc=
|
|
||||||
github.com/muesli/smartcrop v0.3.0/go.mod h1:i2fCI/UorTfgEpPPLWiFBv4pye+YAG78RwcQLUkocpI=
|
|
||||||
github.com/niklasfasching/go-org v1.7.0 h1:vyMdcMWWTe/XmANk19F4k8XGBYg0GQ/gJGMimOjGMek=
|
|
||||||
github.com/niklasfasching/go-org v1.7.0/go.mod h1:WuVm4d45oePiE0eX25GqTDQIt/qPW1T9DGkRscqLW5o=
|
|
||||||
github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037 h1:G7ERwszslrBzRxj//JalHPu/3yz+De2J+4aLtSRlHiY=
|
|
||||||
github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037/go.mod h1:2bpvgLBZEtENV5scfDFEtB/5+1M4hkQhDQrccEJ/qGw=
|
|
||||||
github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90 h1:bQx3WeLcUWy+RletIKwUIt4x3t8n2SxavmoclizMb8c=
|
|
||||||
github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90/go.mod h1:y5+oSEHCPT/DGrS++Wc/479ERge0zTFxaF8PbGKcg2o=
|
|
||||||
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
|
|
||||||
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
|
|
||||||
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0=
|
|
||||||
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y=
|
|
||||||
github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8=
|
|
||||||
github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
|
|
||||||
github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
|
|
||||||
github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
|
|
||||||
github.com/perimeterx/marshmallow v1.1.5 h1:a2LALqQ1BlHM8PZblsDdidgv1mWi1DgC2UmX50IvK2s=
|
|
||||||
github.com/perimeterx/marshmallow v1.1.5/go.mod h1:dsXbUu8CRzfYP5a87xpp0xq9S3u0Vchtcl8we9tYaXw=
|
|
||||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
|
||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
|
||||||
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
|
|
||||||
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
|
|
||||||
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
|
|
||||||
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
|
|
||||||
github.com/spf13/afero v1.14.0 h1:9tH6MapGnn/j0eb0yIXiLjERO8RB6xIVZRDCX7PtqWA=
|
|
||||||
github.com/spf13/afero v1.14.0/go.mod h1:acJQ8t0ohCGuMN3O+Pv0V0hgMxNYDlvdk+VTfyZmbYo=
|
|
||||||
github.com/spf13/cast v1.8.0 h1:gEN9K4b8Xws4EX0+a0reLmhq8moKn7ntRlQYgjPeCDk=
|
|
||||||
github.com/spf13/cast v1.8.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
|
|
||||||
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
|
|
||||||
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
|
||||||
github.com/tdewolff/minify/v2 v2.23.5 h1:/P548KcpTkIOUvNg22zN83/GiaYSOIrbqtoue4I7kYM=
|
|
||||||
github.com/tdewolff/minify/v2 v2.23.5/go.mod h1:2RI9tiIrzJU1Z5EasXEPaI1MqobRyxKHOOgrRkq5oEw=
|
|
||||||
github.com/tdewolff/parse/v2 v2.8.1 h1:J5GSHru6o3jF1uLlEKVXkDxxcVx6yzOlIVIotK4w2po=
|
|
||||||
github.com/tdewolff/parse/v2 v2.8.1/go.mod h1:Hwlni2tiVNKyzR1o6nUs4FOF07URA+JLBLd6dlIXYqo=
|
|
||||||
github.com/tdewolff/test v1.0.11 h1:FdLbwQVHxqG16SlkGveC0JVyrJN62COWTRyUFzfbtBE=
|
|
||||||
github.com/tdewolff/test v1.0.11/go.mod h1:XPuWBzvdUzhCuxWO1ojpXsyzsA5bFoS3tO/Q3kFuTG8=
|
|
||||||
github.com/tetratelabs/wazero v1.9.0 h1:IcZ56OuxrtaEz8UYNRHBrUa9bYeX9oVY93KspZZBf/I=
|
|
||||||
github.com/tetratelabs/wazero v1.9.0/go.mod h1:TSbcXCfFP0L2FGkRPxHphadXPjo1T6W+CseNNY7EkjM=
|
|
||||||
github.com/yuin/goldmark v1.7.11 h1:ZCxLyDMtz0nT2HFfsYG8WZ47Trip2+JyLysKcMYE5bo=
|
|
||||||
github.com/yuin/goldmark v1.7.11/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg=
|
|
||||||
github.com/yuin/goldmark-emoji v1.0.6 h1:QWfF2FYaXwL74tfGOW5izeiZepUDroDJfWubQI9HTHs=
|
|
||||||
github.com/yuin/goldmark-emoji v1.0.6/go.mod h1:ukxJDKFpdFb5x0a5HqbdlcKtebh086iJpI31LTKmWuA=
|
|
||||||
golang.org/x/exp v0.0.0-20250531010427-b6e5de432a8b h1:QoALfVG9rhQ/M7vYDScfPdWjGL9dlsVVM5VGh7aKoAA=
|
|
||||||
golang.org/x/exp v0.0.0-20250531010427-b6e5de432a8b/go.mod h1:U6Lno4MTRCDY+Ba7aCcauB9T60gsv5s4ralQzP72ZoQ=
|
|
||||||
golang.org/x/image v0.27.0 h1:C8gA4oWU/tKkdCfYT6T2u4faJu3MeNS5O8UPWlPF61w=
|
|
||||||
golang.org/x/image v0.27.0/go.mod h1:xbdrClrAUway1MUTEZDq9mz/UpRwYAkFFNUslZtcB+g=
|
|
||||||
golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA=
|
|
||||||
golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w=
|
|
||||||
golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY=
|
|
||||||
golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU=
|
|
||||||
golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I=
|
|
||||||
golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
|
|
||||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=
|
|
||||||
golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
|
|
||||||
golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM=
|
|
||||||
golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM=
|
|
||||||
golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ=
|
|
||||||
golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs=
|
|
||||||
google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
|
|
||||||
google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
|
|
||||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
|
||||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
|
||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
|
||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
|
||||||
rsc.io/qr v0.2.0 h1:6vBLea5/NRMVTz8V66gipeLycZMl/+UlFmk8DvqQ6WY=
|
|
||||||
rsc.io/qr v0.2.0/go.mod h1:IF+uZjkb9fqyeF/4tlBoynqmQxUoPfWEKh921coOuXs=
|
|
||||||
@@ -42,7 +42,7 @@ require (
|
|||||||
github.com/yalue/merged_fs v1.3.0 // indirect
|
github.com/yalue/merged_fs v1.3.0 // indirect
|
||||||
golang.org/x/mod v0.29.0 // indirect
|
golang.org/x/mod v0.29.0 // indirect
|
||||||
golang.org/x/net v0.47.0 // indirect
|
golang.org/x/net v0.47.0 // indirect
|
||||||
golang.org/x/oauth2 v0.30.0 // indirect
|
golang.org/x/oauth2 v0.27.0 // indirect
|
||||||
golang.org/x/sync v0.18.0 // indirect
|
golang.org/x/sync v0.18.0 // indirect
|
||||||
golang.org/x/text v0.31.0 // indirect
|
golang.org/x/text v0.31.0 // indirect
|
||||||
golang.org/x/tools v0.38.0 // indirect
|
golang.org/x/tools v0.38.0 // indirect
|
||||||
|
|||||||
@@ -89,8 +89,8 @@ golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA=
|
|||||||
golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w=
|
golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w=
|
||||||
golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY=
|
golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY=
|
||||||
golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU=
|
golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU=
|
||||||
golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI=
|
golang.org/x/oauth2 v0.27.0 h1:da9Vo7/tDv5RH/7nZDz1eMGS/q1Vv1N/7FCrBhI9I3M=
|
||||||
golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU=
|
golang.org/x/oauth2 v0.27.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
|
||||||
golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I=
|
golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I=
|
||||||
golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
|
golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
|
||||||
golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=
|
golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ require (
|
|||||||
github.com/tetratelabs/wazero v1.6.0 // indirect
|
github.com/tetratelabs/wazero v1.6.0 // indirect
|
||||||
golang.org/x/mod v0.29.0 // indirect
|
golang.org/x/mod v0.29.0 // indirect
|
||||||
golang.org/x/net v0.47.0 // indirect
|
golang.org/x/net v0.47.0 // indirect
|
||||||
golang.org/x/oauth2 v0.30.0 // indirect
|
golang.org/x/oauth2 v0.27.0 // indirect
|
||||||
golang.org/x/sync v0.18.0 // indirect
|
golang.org/x/sync v0.18.0 // indirect
|
||||||
golang.org/x/sys v0.38.0 // indirect
|
golang.org/x/sys v0.38.0 // indirect
|
||||||
golang.org/x/text v0.31.0 // indirect
|
golang.org/x/text v0.31.0 // indirect
|
||||||
|
|||||||
@@ -57,8 +57,8 @@ golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA=
|
|||||||
golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w=
|
golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w=
|
||||||
golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY=
|
golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY=
|
||||||
golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU=
|
golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU=
|
||||||
golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI=
|
golang.org/x/oauth2 v0.27.0 h1:da9Vo7/tDv5RH/7nZDz1eMGS/q1Vv1N/7FCrBhI9I3M=
|
||||||
golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU=
|
golang.org/x/oauth2 v0.27.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
|
||||||
golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I=
|
golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I=
|
||||||
golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
|
golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
|
||||||
golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=
|
golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
.gitignore
|
.gitignore
|
||||||
.vscode
|
.vscode
|
||||||
bin
|
bin
|
||||||
!bin/grafana-linux-k8s
|
|
||||||
data*
|
data*
|
||||||
dist
|
dist
|
||||||
docker
|
docker
|
||||||
|
|||||||
42
.drone.star
Normal file
42
.drone.star
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
# To generate the .drone.yml file:
|
||||||
|
# 1. Modify the *.star definitions
|
||||||
|
# 2. Login to drone and export the env variables (token and server) shown here: https://drone.grafana.net/account
|
||||||
|
# 3. Run `make drone`
|
||||||
|
# More information about this process here: https://github.com/grafana/deployment_tools/blob/master/docs/infrastructure/drone/signing.md
|
||||||
|
"""
|
||||||
|
This module returns a Drone configuration including pipelines and secrets.
|
||||||
|
"""
|
||||||
|
|
||||||
|
load("scripts/drone/events/cron.star", "cronjobs")
|
||||||
|
load("scripts/drone/events/main.star", "main_pipelines")
|
||||||
|
load("scripts/drone/events/pr.star", "pr_pipelines")
|
||||||
|
load(
|
||||||
|
"scripts/drone/events/release.star",
|
||||||
|
"publish_artifacts_pipelines",
|
||||||
|
"publish_npm_pipelines",
|
||||||
|
"publish_packages_pipeline",
|
||||||
|
)
|
||||||
|
load("scripts/drone/events/rrc-patch.star", "rrc_patch_pipelines")
|
||||||
|
load(
|
||||||
|
"scripts/drone/pipelines/publish_images.star",
|
||||||
|
"publish_image_pipelines_public",
|
||||||
|
)
|
||||||
|
load(
|
||||||
|
"scripts/drone/rgm.star",
|
||||||
|
"rgm",
|
||||||
|
)
|
||||||
|
load("scripts/drone/vault.star", "secrets")
|
||||||
|
|
||||||
|
def main(_ctx):
|
||||||
|
return (
|
||||||
|
pr_pipelines() +
|
||||||
|
main_pipelines() +
|
||||||
|
rrc_patch_pipelines() +
|
||||||
|
publish_image_pipelines_public() +
|
||||||
|
publish_artifacts_pipelines("public") +
|
||||||
|
publish_npm_pipelines() +
|
||||||
|
publish_packages_pipeline() +
|
||||||
|
rgm() +
|
||||||
|
cronjobs() +
|
||||||
|
secrets()
|
||||||
|
)
|
||||||
3012
.drone.yml
Normal file
3012
.drone.yml
Normal file
File diff suppressed because it is too large
Load Diff
10
.gitattributes
vendored
10
.gitattributes
vendored
@@ -1,11 +1 @@
|
|||||||
* text=auto eol=lf
|
* text=auto eol=lf
|
||||||
*.gen.ts linguist-generated
|
|
||||||
*_gen.ts linguist-generated
|
|
||||||
*_gen.go linguist-generated
|
|
||||||
*_gen.csv linguist-generated
|
|
||||||
*_gen.json linguist-generated
|
|
||||||
**/openapi_snapshots/*.json linguist-generated
|
|
||||||
apps/**/pkg/apis/*_manifest.go linguist-generated
|
|
||||||
public/openapi3.json linguist-generated
|
|
||||||
public/api-merged.json linguist-generated
|
|
||||||
public/api-enterprise-spec.json linguist-generated
|
|
||||||
|
|||||||
603
.github/CODEOWNERS
vendored
603
.github/CODEOWNERS
vendored
@@ -33,30 +33,25 @@
|
|||||||
|
|
||||||
# START Technical documentation
|
# START Technical documentation
|
||||||
/.vale.ini @grafana/docs-tooling
|
/.vale.ini @grafana/docs-tooling
|
||||||
/AGENTS.md @grafana/docs-tooling
|
|
||||||
|
|
||||||
# `make docs` procedure and related workflows are owned @grafana/docs-tooling. Slack #docs.
|
# `make docs` procedure and related workflows are owned @grafana/docs-tooling. Slack #docs.
|
||||||
/docs/ @grafana/docs-tooling
|
/docs/ @grafana/docs-tooling
|
||||||
|
|
||||||
/docs/sources/ @irenerl24
|
/docs/sources/ @irenerl24
|
||||||
|
|
||||||
/docs/sources/alerting/ @JohnnyK-Grafana
|
/docs/sources/alerting/ @JohnnyK-Grafana
|
||||||
/docs/sources/as-code/ @urbiz-grafana
|
/docs/sources/dashboards/ @imatwawana
|
||||||
/docs/sources/developer-resources/ @urbiz-grafana
|
|
||||||
/docs/sources/datasources/ @lwandz13
|
/docs/sources/datasources/ @lwandz13
|
||||||
/docs/sources/upgrade-guide/ @jtvdez
|
/docs/sources/panels-visualizations/ @imatwawana
|
||||||
/docs/sources/whatsnew/ @jtvdez
|
/docs/sources/release-notes/ @irenerl24 @GrafanaWriter
|
||||||
|
/docs/sources/upgrade-guide/ @imatwawana
|
||||||
|
/docs/sources/whatsnew/ @imatwawana
|
||||||
|
|
||||||
/docs/sources/developers/plugins/ @grafana/plugins-platform-frontend @grafana/plugins-platform-backend
|
/docs/sources/developers/plugins/ @grafana/plugins-platform-frontend @grafana/plugins-platform-backend
|
||||||
/docs/sources/visualizations/dashboards/ @imatwawana
|
|
||||||
/docs/sources/visualizations/panels-visualizations/ @imatwawana
|
|
||||||
|
|
||||||
|
/docs/sources/dashboards/share-dashboards-panels/_index.md @imatwawana @jtvdez
|
||||||
/docs/sources/visualizations/dashboards/share-dashboards-panels/_index.md @imatwawana @jtvdez
|
/docs/sources/dashboards/share-dashboards-panels/shared-dashboards/index.md @jtvdez
|
||||||
/docs/sources/visualizations/dashboards/share-dashboards-panels/shared-dashboards/index.md @jtvdez
|
/docs/sources/panels-visualizations/query-transform-data/transform-data/index.md @imatwawana @baldm0mma
|
||||||
/docs/sources/visualizations/panels-visualizations/query-transform-data/transform-data/index.md @imatwawana @baldm0mma
|
/docs/sources/panels-visualizations/query-transform-data/sql-expressions/index.md @lwandz13 @irenerl24
|
||||||
/docs/sources/visualizations/panels-visualizations/query-transform-data/sql-expressions/index.md @lwandz13 @irenerl24
|
|
||||||
# END Technical documentation
|
# END Technical documentation
|
||||||
|
|
||||||
# Backend code
|
# Backend code
|
||||||
@@ -64,6 +59,7 @@
|
|||||||
/go.sum @grafana/grafana-backend-group
|
/go.sum @grafana/grafana-backend-group
|
||||||
/go.work @grafana/grafana-app-platform-squad
|
/go.work @grafana/grafana-app-platform-squad
|
||||||
/go.work.sum @grafana/grafana-app-platform-squad
|
/go.work.sum @grafana/grafana-app-platform-squad
|
||||||
|
/.bingo/ @grafana/grafana-backend-group
|
||||||
/.citools @grafana/grafana-developer-enablement-squad
|
/.citools @grafana/grafana-developer-enablement-squad
|
||||||
/pkg/README.md @grafana/grafana-backend-group
|
/pkg/README.md @grafana/grafana-backend-group
|
||||||
/pkg/ruleguard.rules.go @grafana/grafana-backend-group
|
/pkg/ruleguard.rules.go @grafana/grafana-backend-group
|
||||||
@@ -76,39 +72,23 @@
|
|||||||
/hack/ @grafana/grafana-app-platform-squad
|
/hack/ @grafana/grafana-app-platform-squad
|
||||||
/.air.toml @macabu
|
/.air.toml @macabu
|
||||||
|
|
||||||
# Git Sync / App Platform Provisioning
|
/pkg/apis/provisioning @grafana/grafana-git-ui-sync-team
|
||||||
/apps/provisioning/ @grafana/grafana-git-ui-sync-team
|
|
||||||
/pkg/operators @grafana/grafana-git-ui-sync-team
|
|
||||||
/public/app/features/provisioning @grafana/grafana-git-ui-sync-team
|
/public/app/features/provisioning @grafana/grafana-git-ui-sync-team
|
||||||
/pkg/registry/apis/provisioning @grafana/grafana-git-ui-sync-team
|
/pkg/registry/apis/provisioning @grafana/grafana-git-ui-sync-team
|
||||||
/pkg/tests/apis/provisioning @grafana/grafana-git-ui-sync-team
|
|
||||||
# Git Sync frontend owned by frontend team as a whole.
|
|
||||||
|
|
||||||
/apps/alerting/ @grafana/alerting-backend
|
/apps/alerting/ @grafana/alerting-backend
|
||||||
/apps/quotas/ @grafana/grafana-search-and-storage
|
|
||||||
/apps/dashboard/ @grafana/grafana-app-platform-squad @grafana/dashboards-squad
|
/apps/dashboard/ @grafana/grafana-app-platform-squad @grafana/dashboards-squad
|
||||||
/apps/folder/ @grafana/grafana-app-platform-squad
|
/apps/folder/ @grafana/grafana-app-platform-squad
|
||||||
/apps/playlist/ @grafana/grafana-app-platform-squad
|
/apps/playlist/ @grafana/grafana-app-platform-squad
|
||||||
/apps/plugins/ @grafana/plugins-platform-backend
|
|
||||||
/apps/collections/ @grafana/grafana-app-platform-squad @grafana/grafana-frontend-platform
|
|
||||||
/apps/preferences/ @grafana/grafana-app-platform-squad @grafana/grafana-frontend-platform
|
|
||||||
/apps/shorturl/ @grafana/sharing-squad
|
|
||||||
/apps/secret/ @grafana/grafana-operator-experience-squad
|
|
||||||
/apps/scope/ @grafana/grafana-operator-experience-squad
|
|
||||||
/apps/investigations/ @fcjack @matryer @svennergr
|
/apps/investigations/ @fcjack @matryer @svennergr
|
||||||
/apps/advisor/ @grafana/plugins-platform-backend
|
/apps/advisor/ @grafana/plugins-platform-backend
|
||||||
/apps/iam/ @grafana/access-squad
|
/apps/iam/ @grafana/access-squad
|
||||||
/apps/sdk.mk @grafana/grafana-app-platform-squad
|
|
||||||
/apps/correlations @grafana/datapro
|
|
||||||
/apps/example/ @grafana/grafana-app-platform-squad
|
|
||||||
/apps/logsdrilldown/ @grafana/observability-logs
|
|
||||||
/apps/annotation/ @grafana/grafana-backend-services-squad
|
|
||||||
/pkg/api/ @grafana/grafana-backend-group
|
/pkg/api/ @grafana/grafana-backend-group
|
||||||
/pkg/apis/ @grafana/grafana-app-platform-squad
|
/pkg/apis/ @grafana/grafana-app-platform-squad
|
||||||
/pkg/apis/query @grafana/grafana-datasources-core-services
|
/pkg/apis/query @grafana/grafana-datasources-core-services
|
||||||
/pkg/apis/userstorage @grafana/grafana-app-platform-squad @grafana/plugins-platform-backend
|
/pkg/apis/userstorage @grafana/grafana-app-platform-squad @grafana/plugins-platform-backend
|
||||||
|
/pkg/apis/secret @grafana/grafana-operator-experience-squad
|
||||||
/pkg/bus/ @grafana/grafana-search-and-storage
|
/pkg/bus/ @grafana/grafana-search-and-storage
|
||||||
/pkg/clientauth/ @grafana/grafana-app-platform-squad
|
|
||||||
/pkg/cmd/ @grafana/grafana-backend-group
|
/pkg/cmd/ @grafana/grafana-backend-group
|
||||||
/pkg/cmd/grafana-cli/commands/install_command.go @grafana/plugins-platform-backend
|
/pkg/cmd/grafana-cli/commands/install_command.go @grafana/plugins-platform-backend
|
||||||
/pkg/cmd/grafana-cli/commands/install_command_test.go @grafana/plugins-platform-backend
|
/pkg/cmd/grafana-cli/commands/install_command_test.go @grafana/plugins-platform-backend
|
||||||
@@ -127,7 +107,6 @@
|
|||||||
/pkg/components/loki/ @grafana/grafana-backend-group
|
/pkg/components/loki/ @grafana/grafana-backend-group
|
||||||
/pkg/components/null/ @grafana/grafana-backend-group
|
/pkg/components/null/ @grafana/grafana-backend-group
|
||||||
/pkg/components/simplejson/ @grafana/grafana-backend-group
|
/pkg/components/simplejson/ @grafana/grafana-backend-group
|
||||||
/pkg/configprovider/ @grafana/grafana-backend-services-squad
|
|
||||||
/pkg/events/ @grafana/grafana-backend-group
|
/pkg/events/ @grafana/grafana-backend-group
|
||||||
/pkg/extensions/ @grafana/grafana-backend-group
|
/pkg/extensions/ @grafana/grafana-backend-group
|
||||||
/pkg/ifaces/ @grafana/grafana-backend-group
|
/pkg/ifaces/ @grafana/grafana-backend-group
|
||||||
@@ -152,11 +131,10 @@
|
|||||||
/pkg/apimachinery @grafana/grafana-app-platform-squad
|
/pkg/apimachinery @grafana/grafana-app-platform-squad
|
||||||
/pkg/apimachinery/identity/ @grafana/identity-squad
|
/pkg/apimachinery/identity/ @grafana/identity-squad
|
||||||
/pkg/apimachinery/errutil/ @grafana/grafana-backend-group
|
/pkg/apimachinery/errutil/ @grafana/grafana-backend-group
|
||||||
/pkg/operators/iam @grafana/access-squad
|
|
||||||
/pkg/promlib @grafana/oss-big-tent
|
/pkg/promlib @grafana/oss-big-tent
|
||||||
/pkg/storage/ @grafana/grafana-search-and-storage
|
/pkg/storage/ @grafana/grafana-search-and-storage
|
||||||
/pkg/storage/secret/ @grafana/grafana-operator-experience-squad
|
/pkg/storage/secret/ @grafana/grafana-operator-experience-squad
|
||||||
/pkg/services/annotations/ @grafana/grafana-backend-services-squad
|
/pkg/services/annotations/ @grafana/grafana-search-and-storage
|
||||||
/pkg/services/apikey/ @grafana/identity-squad
|
/pkg/services/apikey/ @grafana/identity-squad
|
||||||
/pkg/services/cleanup/ @grafana/grafana-backend-group
|
/pkg/services/cleanup/ @grafana/grafana-backend-group
|
||||||
/pkg/services/contexthandler/ @grafana/grafana-backend-group @grafana/grafana-app-platform-squad
|
/pkg/services/contexthandler/ @grafana/grafana-backend-group @grafana/grafana-app-platform-squad
|
||||||
@@ -171,23 +149,21 @@
|
|||||||
/pkg/services/hooks/ @grafana/grafana-backend-group
|
/pkg/services/hooks/ @grafana/grafana-backend-group
|
||||||
/pkg/services/kmsproviders/ @grafana/grafana-operator-experience-squad
|
/pkg/services/kmsproviders/ @grafana/grafana-operator-experience-squad
|
||||||
/pkg/services/licensing/ @grafana/grafana-operator-experience-squad
|
/pkg/services/licensing/ @grafana/grafana-operator-experience-squad
|
||||||
/pkg/services/dsquerierclient/ @grafana/grafana-datasources-core-services
|
/pkg/services/navtree/ @grafana/grafana-backend-group
|
||||||
/pkg/services/navtree/ @grafana/grafana-backend-group @grafana/grafana-search-navigate-organise
|
|
||||||
/pkg/services/notifications/ @grafana/grafana-backend-group
|
/pkg/services/notifications/ @grafana/grafana-backend-group
|
||||||
/pkg/services/org/ @grafana/grafana-backend-group
|
/pkg/services/org/ @grafana/grafana-backend-group
|
||||||
/pkg/services/playlist/ @grafana/grafana-app-platform-squad
|
/pkg/services/playlist/ @grafana/grafana-app-platform-squad
|
||||||
/pkg/services/preference/ @grafana/grafana-backend-group
|
/pkg/services/preference/ @grafana/grafana-backend-group
|
||||||
/pkg/services/provisioning/ @grafana/grafana-search-and-storage
|
/pkg/services/provisioning/ @grafana/grafana-search-and-storage
|
||||||
/pkg/services/provisioning/alerting/ @grafana/alerting-backend
|
/pkg/services/provisioning/alerting/ @grafana/alerting-backend
|
||||||
/pkg/services/query/ @grafana/grafana-datasources-core-services
|
/pkg/services/query/ @grafana/grafana-app-platform-squad
|
||||||
/pkg/services/queryhistory/ @grafana/observability-traces-and-profiling
|
/pkg/services/queryhistory/ @grafana/observability-traces-and-profiling
|
||||||
/pkg/services/quota/ @grafana/grafana-search-and-storage
|
/pkg/services/quota/ @grafana/grafana-search-and-storage
|
||||||
/pkg/services/screenshot/ @grafana/grafana-backend-group
|
/pkg/services/screenshot/ @grafana/grafana-backend-group
|
||||||
/pkg/services/search/ @grafana/grafana-search-and-storage
|
/pkg/services/search/ @grafana/grafana-search-and-storage
|
||||||
/pkg/services/searchusers/ @grafana/grafana-search-and-storage
|
/pkg/services/searchusers/ @grafana/grafana-search-and-storage
|
||||||
/pkg/services/secrets/ @grafana/grafana-operator-experience-squad
|
/pkg/services/secrets/ @grafana/grafana-operator-experience-squad
|
||||||
/pkg/services/setting/ @grafana/grafana-backend-services-squad
|
/pkg/services/shorturls/ @grafana/grafana-backend-group
|
||||||
/pkg/services/shorturls/ @grafana/sharing-squad
|
|
||||||
/pkg/services/sqlstore/ @grafana/grafana-search-and-storage
|
/pkg/services/sqlstore/ @grafana/grafana-search-and-storage
|
||||||
/pkg/services/ssosettings/ @grafana/identity-squad
|
/pkg/services/ssosettings/ @grafana/identity-squad
|
||||||
/pkg/services/star/ @grafana/grafana-search-and-storage
|
/pkg/services/star/ @grafana/grafana-search-and-storage
|
||||||
@@ -201,11 +177,8 @@
|
|||||||
/pkg/setting/ @grafana/grafana-backend-services-squad
|
/pkg/setting/ @grafana/grafana-backend-services-squad
|
||||||
/pkg/tests/ @grafana/grafana-backend-services-squad
|
/pkg/tests/ @grafana/grafana-backend-services-squad
|
||||||
/pkg/tests/apis/ @grafana/grafana-app-platform-squad
|
/pkg/tests/apis/ @grafana/grafana-app-platform-squad
|
||||||
/pkg/tests/apis/alerting @grafana/alerting-backend
|
/pkg/tests/apis/query @grafana/grafana-datasources-core-services
|
||||||
/pkg/tests/apis/features @grafana/grafana-backend-services-squad
|
/pkg/tests/apis/alerting @grafana/grafana-app-platform-squad @grafana/alerting-backend
|
||||||
/pkg/tests/apis/folder @grafana/grafana-search-and-storage
|
|
||||||
/pkg/tests/apis/iam @grafana/identity-access-team
|
|
||||||
/pkg/tests/apis/shorturl @grafana/sharing-squad
|
|
||||||
/pkg/tests/api/correlations/ @grafana/datapro
|
/pkg/tests/api/correlations/ @grafana/datapro
|
||||||
/pkg/tsdb/grafanads/ @grafana/grafana-backend-group
|
/pkg/tsdb/grafanads/ @grafana/grafana-backend-group
|
||||||
/pkg/tsdb/opentsdb/ @grafana/partner-datasources
|
/pkg/tsdb/opentsdb/ @grafana/partner-datasources
|
||||||
@@ -232,7 +205,6 @@
|
|||||||
/devenv/datasources.yaml @grafana/grafana-backend-group
|
/devenv/datasources.yaml @grafana/grafana-backend-group
|
||||||
/devenv/datasources_docker.yaml @grafana/grafana-backend-group
|
/devenv/datasources_docker.yaml @grafana/grafana-backend-group
|
||||||
/devenv/dev-dashboards-without-uid/ @grafana/dashboards-squad
|
/devenv/dev-dashboards-without-uid/ @grafana/dashboards-squad
|
||||||
/devenv/scopes/ @grafana/grafana-operator-experience-squad
|
|
||||||
|
|
||||||
/devenv/dev-dashboards/annotations @grafana/dataviz-squad
|
/devenv/dev-dashboards/annotations @grafana/dataviz-squad
|
||||||
/devenv/dev-dashboards/migrations @grafana/dataviz-squad
|
/devenv/dev-dashboards/migrations @grafana/dataviz-squad
|
||||||
@@ -249,7 +221,6 @@
|
|||||||
/devenv/dev-dashboards/panel-library @grafana/dataviz-squad
|
/devenv/dev-dashboards/panel-library @grafana/dataviz-squad
|
||||||
/devenv/dev-dashboards/panel-piechart @grafana/dataviz-squad
|
/devenv/dev-dashboards/panel-piechart @grafana/dataviz-squad
|
||||||
/devenv/dev-dashboards/panel-stat @grafana/dataviz-squad
|
/devenv/dev-dashboards/panel-stat @grafana/dataviz-squad
|
||||||
/devenv/dev-dashboards/panel-status-history @grafana/dataviz-squad
|
|
||||||
/devenv/dev-dashboards/panel-table @grafana/dataviz-squad
|
/devenv/dev-dashboards/panel-table @grafana/dataviz-squad
|
||||||
/devenv/dev-dashboards/panel-timeline @grafana/dataviz-squad
|
/devenv/dev-dashboards/panel-timeline @grafana/dataviz-squad
|
||||||
/devenv/dev-dashboards/panel-timeseries @grafana/dataviz-squad
|
/devenv/dev-dashboards/panel-timeseries @grafana/dataviz-squad
|
||||||
@@ -259,6 +230,7 @@
|
|||||||
/devenv/dev-dashboards/all-panels.json @grafana/dataviz-squad
|
/devenv/dev-dashboards/all-panels.json @grafana/dataviz-squad
|
||||||
/devenv/dev-dashboards/dashboards.go @grafana/dataviz-squad
|
/devenv/dev-dashboards/dashboards.go @grafana/dataviz-squad
|
||||||
/devenv/dev-dashboards/home.json @grafana/dataviz-squad
|
/devenv/dev-dashboards/home.json @grafana/dataviz-squad
|
||||||
|
|
||||||
/devenv/dev-dashboards/datasource-elasticsearch/ @grafana/partner-datasources
|
/devenv/dev-dashboards/datasource-elasticsearch/ @grafana/partner-datasources
|
||||||
/devenv/dev-dashboards/datasource-opentsdb/ @grafana/partner-datasources
|
/devenv/dev-dashboards/datasource-opentsdb/ @grafana/partner-datasources
|
||||||
/devenv/dev-dashboards/datasource-influxdb/ @grafana/partner-datasources
|
/devenv/dev-dashboards/datasource-influxdb/ @grafana/partner-datasources
|
||||||
@@ -314,18 +286,17 @@
|
|||||||
/devenv/docker/blocks/prometheus_random_data/ @grafana/oss-big-tent
|
/devenv/docker/blocks/prometheus_random_data/ @grafana/oss-big-tent
|
||||||
/devenv/docker/blocks/prometheus_high_card/ @grafana/oss-big-tent
|
/devenv/docker/blocks/prometheus_high_card/ @grafana/oss-big-tent
|
||||||
/devenv/docker/blocks/prometheus_utf8/ @grafana/oss-big-tent
|
/devenv/docker/blocks/prometheus_utf8/ @grafana/oss-big-tent
|
||||||
/devenv/docker/blocks/pyroscope/ @grafana/oss-big-tent
|
/devenv/docker/blocks/pyroscope/ @grafana/observability-traces-and-profiling
|
||||||
/devenv/docker/blocks/redis/ @bergquist
|
/devenv/docker/blocks/redis/ @bergquist
|
||||||
/devenv/docker/blocks/sensugo/ @grafana/grafana-backend-group
|
/devenv/docker/blocks/sensugo/ @grafana/grafana-backend-group
|
||||||
/devenv/docker/blocks/slow_proxy/ @bergquist
|
/devenv/docker/blocks/slow_proxy/ @bergquist
|
||||||
/devenv/docker/blocks/smtp/ @bergquist
|
/devenv/docker/blocks/smtp/ @bergquist
|
||||||
/devenv/docker/blocks/tempo/ @grafana/oss-big-tent @grafana/observability-traces-and-profiling
|
/devenv/docker/blocks/tempo/ @grafana/observability-traces-and-profiling
|
||||||
/devenv/docker/blocks/traefik/ @mckn
|
/devenv/docker/blocks/traefik/ @mckn
|
||||||
/devenv/docker/blocks/zipkin/ @grafana/oss-big-tent
|
/devenv/docker/blocks/zipkin/ @grafana/oss-big-tent
|
||||||
/devenv/docker/blocks/webdav/ @grafana/alerting-backend
|
/devenv/docker/blocks/webdav/ @grafana/alerting-backend
|
||||||
/devenv/docker/buildcontainer/ @bergquist
|
/devenv/docker/buildcontainer/ @bergquist
|
||||||
/devenv/docker/compose_header.yml @grafana/grafana-backend-services-squad
|
/devenv/docker/compose_header.yml @grafana/grafana-backend-services-squad
|
||||||
/devenv/docker/compose_volume_section.yml @grafana/grafana-backend-services-squad
|
|
||||||
/devenv/docker/debtest/ @bergquist
|
/devenv/docker/debtest/ @bergquist
|
||||||
/devenv/docker/ha-test-unified-alerting/ @grafana/alerting-backend
|
/devenv/docker/ha-test-unified-alerting/ @grafana/alerting-backend
|
||||||
/devenv/docker/ha_test/ @grafana/grafana-backend-services-squad
|
/devenv/docker/ha_test/ @grafana/grafana-backend-services-squad
|
||||||
@@ -334,7 +305,6 @@
|
|||||||
/devenv/jsonnet/ @grafana/dataviz-squad
|
/devenv/jsonnet/ @grafana/dataviz-squad
|
||||||
/devenv/local_cdn/ @grafana/frontend-ops
|
/devenv/local_cdn/ @grafana/frontend-ops
|
||||||
/devenv/local-npm/ @grafana/frontend-ops
|
/devenv/local-npm/ @grafana/frontend-ops
|
||||||
/devenv/frontend-service/ @grafana/grafana-frontend-platform
|
|
||||||
/devenv/setup.sh @grafana/grafana-backend-services-squad
|
/devenv/setup.sh @grafana/grafana-backend-services-squad
|
||||||
/devenv/plugins.yaml @grafana/plugins-platform-frontend
|
/devenv/plugins.yaml @grafana/plugins-platform-frontend
|
||||||
|
|
||||||
@@ -346,6 +316,9 @@
|
|||||||
|
|
||||||
|
|
||||||
# Continuous Integration
|
# Continuous Integration
|
||||||
|
.drone.yml @grafana/grafana-developer-enablement-squad
|
||||||
|
.drone.star @grafana/grafana-developer-enablement-squad
|
||||||
|
/scripts/drone/ @grafana/grafana-developer-enablement-squad
|
||||||
/pkg/build/ @grafana/grafana-developer-enablement-squad
|
/pkg/build/ @grafana/grafana-developer-enablement-squad
|
||||||
/.dockerignore @grafana/grafana-developer-enablement-squad
|
/.dockerignore @grafana/grafana-developer-enablement-squad
|
||||||
/Dockerfile @grafana/grafana-developer-enablement-squad
|
/Dockerfile @grafana/grafana-developer-enablement-squad
|
||||||
@@ -364,8 +337,8 @@
|
|||||||
/pkg/tsdb/prometheus/ @grafana/oss-big-tent
|
/pkg/tsdb/prometheus/ @grafana/oss-big-tent
|
||||||
/pkg/tsdb/elasticsearch/ @grafana/partner-datasources
|
/pkg/tsdb/elasticsearch/ @grafana/partner-datasources
|
||||||
/pkg/tsdb/loki/ @grafana/oss-big-tent
|
/pkg/tsdb/loki/ @grafana/oss-big-tent
|
||||||
/pkg/tsdb/tempo/ @grafana/oss-big-tent
|
/pkg/tsdb/tempo/ @grafana/observability-traces-and-profiling
|
||||||
/pkg/tsdb/grafana-pyroscope-datasource/ @grafana/oss-big-tent
|
/pkg/tsdb/grafana-pyroscope-datasource/ @grafana/observability-traces-and-profiling
|
||||||
/pkg/tsdb/parca/ @grafana/oss-big-tent
|
/pkg/tsdb/parca/ @grafana/oss-big-tent
|
||||||
|
|
||||||
# OSS Big Tent backend code
|
# OSS Big Tent backend code
|
||||||
@@ -422,310 +395,43 @@
|
|||||||
|
|
||||||
/crowdin.yml @grafana/grafana-frontend-platform
|
/crowdin.yml @grafana/grafana-frontend-platform
|
||||||
/public/locales/ @grafanabot
|
/public/locales/ @grafanabot
|
||||||
i18next.config.ts @grafana/grafana-frontend-platform
|
/public/locales/i18next-parser.config.cjs @grafana/grafana-frontend-platform
|
||||||
/public/locales/enterprise/i18next.config.ts @grafana/grafana-frontend-platform
|
/public/locales/i18next-parser-enterprise.config.cjs @grafana/grafana-frontend-platform
|
||||||
/public/app/core/internationalization/ @grafana/grafana-frontend-platform
|
/public/app/core/internationalization/ @grafana/grafana-frontend-platform
|
||||||
/e2e/ @grafana/grafana-frontend-platform
|
/e2e/ @grafana/grafana-frontend-platform
|
||||||
/e2e-playwright/cloud-plugins-suite/ @grafana/partner-datasources
|
/e2e/cloud-plugins-suite/ @grafana/partner-datasources
|
||||||
/e2e-playwright/dashboard-new-layouts/ @grafana/dashboards-squad
|
/e2e/plugin-e2e/plugin-e2e-api-tests/ @grafana/plugins-platform-frontend
|
||||||
/e2e-playwright/dashboard-cujs/ @grafana/dashboards-squad
|
/e2e/test-plugins/grafana-extensionstest-app/ @grafana/plugins-platform-frontend
|
||||||
/e2e-playwright/dashboards-search-suite/ @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards/cujs/ @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards/DashboardForConditionalRendering.json @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards/DashboardWithAllConditionalRendering.json @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards/README.md @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards/AdHocFilterTest.json @grafana/datapro
|
|
||||||
/e2e-playwright/dashboards/DashboardLiveTest.json @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards/DataLinkWithoutSlugTest.json @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards/PanelSandboxDashboard.json @grafana/plugins-platform-frontend
|
|
||||||
/e2e-playwright/dashboards/TestDashboard.json @grafana/dashboards-squad @grafana/grafana-search-navigate-organise
|
|
||||||
/e2e-playwright/dashboards/TestV2Dashboard.json @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards/V2DashWithRepeats.json @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards/V2DashWithTabRepeats.json @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards-suite/adhoc-filter-from-panel.spec.ts @grafana/datapro
|
|
||||||
/e2e-playwright/dashboards-suite/dashboard-browse-nested.spec.ts @grafana/grafana-search-navigate-organise
|
|
||||||
/e2e-playwright/dashboards-suite/dashboard-browse.spec.ts @grafana/grafana-search-navigate-organise
|
|
||||||
/e2e-playwright/dashboards-suite/dashboard-export-image.spec.ts @grafana/sharing-squad
|
|
||||||
/e2e-playwright/dashboards-suite/dashboard-export-json.spec.ts @grafana/sharing-squad
|
|
||||||
/e2e-playwright/dashboards-suite/dashboard-keybindings.spec.ts @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards-suite/dashboard-links-without-slug.spec.ts @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards-suite/dashboard-live-streaming.spec.ts @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards-suite/dashboard-public-create.spec.ts @grafana/grafana-operator-experience-squad
|
|
||||||
/e2e-playwright/dashboards-suite/dashboard-public-templating.spec.ts @grafana/grafana-operator-experience-squad
|
|
||||||
/e2e-playwright/dashboards-suite/dashboard-share-externally-create.spec.ts @grafana/sharing-squad
|
|
||||||
/e2e-playwright/dashboards-suite/dashboard-share-internally.spec.ts @grafana/sharing-squad
|
|
||||||
/e2e-playwright/dashboards-suite/dashboard-share-snapshot-create.spec.ts @grafana/sharing-squad
|
|
||||||
/e2e-playwright/dashboards-suite/dashboard-templating.spec.ts @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards-suite/dashboard-time-zone.spec.ts @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards-suite/dashboard-timepicker.spec.ts @grafana/grafana-frontend-platform
|
|
||||||
/e2e-playwright/dashboards-suite/embedded-dashboard.spec.ts @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards-suite/general-dashboards.spec.ts @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards-suite/import-dashboard.spec.ts @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards-suite/load-options-from-url.spec.ts @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards-suite/new-constant-variable.spec.ts @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards-suite/new-custom-variable.spec.ts @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards-suite/new-datasource-variable.spec.ts @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards-suite/new-interval-variable.spec.ts @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards-suite/new-query-variable.spec.ts @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards-suite/new-text-box-variable.spec.ts @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards-suite/repeating-a-panel-horizontally.spec.ts @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards-suite/repeating-a-panel-vertically.spec.ts @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards-suite/repeating-an-empty-row.spec.ts @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards-suite/set-options-from-ui.spec.ts @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards-suite/snapshot-create.spec.ts @grafana/sharing-squad
|
|
||||||
/e2e-playwright/dashboards-suite/templating-dashboard-links-and-variables.spec.ts @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards-suite/textbox-variables.spec.ts @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/dashboards-suite/utils/makeDashboard.ts @grafana/grafana-search-navigate-organise
|
|
||||||
/e2e-playwright/fixtures/exemplars-query-response.json @grafana/observability-traces-and-profiling
|
|
||||||
/e2e-playwright/fixtures/long-trace-response.json @grafana/observability-traces-and-profiling
|
|
||||||
/e2e-playwright/fixtures/tempo-response.json @grafana/oss-big-tent
|
|
||||||
/e2e-playwright/fixtures/prometheus-response.json @grafana/datapro
|
|
||||||
/e2e-playwright/panels-suite/ @grafana/dataviz-squad
|
|
||||||
/e2e-playwright/panels-suite/dashlist.spec.ts @grafana/grafana-search-navigate-organise
|
|
||||||
/e2e-playwright/panels-suite/frontend-sandbox-panel.spec.ts @grafana/plugins-platform-frontend
|
|
||||||
/e2e-playwright/panels-suite/panelEdit_base.spec.ts @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/panels-suite/panelEdit_queries.spec.ts @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/panels-suite/panelEdit_transforms.spec.ts @grafana/datapro
|
|
||||||
/e2e-playwright/plugin-e2e/ @grafana/oss-big-tent @grafana/partner-datasources
|
|
||||||
/e2e-playwright/plugin-e2e/plugin-e2e-api-tests/ @grafana/plugins-platform-frontend
|
|
||||||
/e2e-playwright/smoke-tests-suite/ @grafana/grafana-frontend-platform
|
|
||||||
/e2e-playwright/start-server @grafana/grafana-frontend-platform
|
|
||||||
/e2e-playwright/storybook/ @grafana/grafana-frontend-platform
|
|
||||||
/e2e-playwright/test-plugins/ @grafana/plugins-platform-frontend
|
|
||||||
/e2e-playwright/unauthenticated/login.spec.ts @grafana/grafana-frontend-platform
|
|
||||||
/e2e-playwright/utils/ @grafana/grafana-frontend-platform
|
|
||||||
/e2e-playwright/various-suite/bar-gauge.spec.ts @grafana/dataviz-squad
|
|
||||||
/e2e-playwright/various-suite/bookmarks.spec.ts @grafana/grafana-search-navigate-organise
|
|
||||||
/e2e-playwright/various-suite/exemplars.spec.ts @grafana/observability-traces-and-profiling
|
|
||||||
/e2e-playwright/various-suite/explore.spec.ts @grafana/observability-traces-and-profiling
|
|
||||||
/e2e-playwright/various-suite/filter-annotations.spec.ts @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/various-suite/frontend-sandbox-app.spec.ts @grafana/plugins-platform-frontend
|
|
||||||
/e2e-playwright/various-suite/frontend-sandbox-datasource.spec.ts @grafana/plugins-platform-frontend
|
|
||||||
/e2e-playwright/various-suite/gauge.spec.ts @grafana/dataviz-squad
|
|
||||||
/e2e-playwright/various-suite/grafana-datasource-random-walk.spec.ts @grafana/grafana-frontend-platform
|
|
||||||
/e2e-playwright/various-suite/graph-auto-migrate.spec.ts @grafana/dataviz-squad
|
|
||||||
/e2e-playwright/various-suite/inspect-drawer.spec.ts @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/various-suite/keybinds.spec.ts @grafana/grafana-frontend-platform
|
|
||||||
/e2e-playwright/various-suite/loki-query-builder.spec.ts @grafana/oss-big-tent
|
|
||||||
/e2e-playwright/various-suite/loki-table-explore-to-dash.spec.ts @grafana/oss-big-tent
|
|
||||||
/e2e-playwright/various-suite/migrate-to-cloud.spec.ts @grafana/grafana-operator-experience-squad
|
|
||||||
/e2e-playwright/various-suite/navigation.spec.ts @grafana/grafana-search-navigate-organise
|
|
||||||
/e2e-playwright/various-suite/pie-chart.spec.ts @grafana/dataviz-squad
|
|
||||||
/e2e-playwright/various-suite/prometheus-annotations.spec.ts @grafana/oss-big-tent
|
|
||||||
/e2e-playwright/various-suite/prometheus-config.spec.ts @grafana/oss-big-tent
|
|
||||||
/e2e-playwright/various-suite/prometheus-editor.spec.ts @grafana/oss-big-tent
|
|
||||||
/e2e-playwright/various-suite/prometheus-variable-editor.spec.ts @grafana/oss-big-tent
|
|
||||||
/e2e-playwright/various-suite/query-editor.spec.ts @grafana/observability-traces-and-profiling
|
|
||||||
/e2e-playwright/various-suite/return-to-previous.spec.ts @grafana/grafana-search-navigate-organise
|
|
||||||
/e2e-playwright/various-suite/solo-route.spec.ts @grafana/dashboards-squad
|
|
||||||
/e2e-playwright/various-suite/trace-view-scrolling.spec.ts @grafana/observability-traces-and-profiling
|
|
||||||
/e2e-playwright/various-suite/verify-i18n.spec.ts @grafana/grafana-frontend-platform
|
|
||||||
/e2e-playwright/various-suite/visualization-suggestions.spec.ts @grafana/dataviz-squad
|
|
||||||
/e2e-playwright/various-suite/perf-test.spec.ts @grafana/grafana-frontend-platform
|
|
||||||
|
|
||||||
# Packages
|
# Packages
|
||||||
/packages/README.md @grafana/grafana-frontend-platform
|
/packages/ @grafana/grafana-frontend-platform @grafana/plugins-platform-frontend
|
||||||
/packages/rollup.config.parts.ts @grafana/frontend-ops
|
|
||||||
|
|
||||||
# @grafana/alerting
|
|
||||||
/packages/grafana-alerting/ @grafana/alerting-frontend
|
|
||||||
|
|
||||||
# @grafana/data
|
|
||||||
/packages/grafana-data/CHANGELOG.md @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-data/LICENSE_APACHE2 @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-data/README.md @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-data/package.json @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-data/project.json @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-data/rollup.config.ts @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-data/src/index.ts @grafana/grafana-frontend-platform @grafana/plugins-platform-frontend
|
|
||||||
/packages/grafana-data/src/internal/index.ts @grafana/grafana-frontend-platform @grafana/plugins-platform-frontend
|
|
||||||
/packages/grafana-data/src/unstable.ts @grafana/grafana-frontend-platform @grafana/plugins-platform-frontend
|
|
||||||
/packages/grafana-data/tsconfig.build.json @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-data/tsconfig.json @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-data/test/ @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-data/typings/ @grafana/grafana-frontend-platform
|
|
||||||
|
|
||||||
/packages/grafana-data/src/**/*logs* @grafana/observability-logs
|
/packages/grafana-data/src/**/*logs* @grafana/observability-logs
|
||||||
/packages/grafana-data/src/context/plugins/ @grafana/plugins-platform-frontend
|
|
||||||
/packages/grafana-data/src/dataframe/ @grafana/dataviz-squad
|
|
||||||
/packages/grafana-data/src/datetime/ @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-data/src/events/ @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-data/src/field/ @grafana/dashboards-squad
|
|
||||||
/packages/grafana-data/src/geo/ @grafana/dataviz-squad
|
|
||||||
/packages/grafana-data/src/monaco/ @grafana/partner-datasources
|
|
||||||
/packages/grafana-data/src/panel/ @grafana/dashboards-squad
|
|
||||||
/packages/grafana-data/src/panel/suggestions/ @grafana/dataviz-squad
|
|
||||||
/packages/grafana-data/src/query/ @grafana/grafana-datasources-core-services
|
|
||||||
/packages/grafana-data/src/rbac/ @grafana/access-squad
|
|
||||||
/packages/grafana-data/src/table/ @grafana/dataviz-squad
|
|
||||||
/packages/grafana-data/src/text/ @grafana/dataviz-squad
|
|
||||||
/packages/grafana-data/src/themes/ @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-data/src/transformations/ @grafana/datapro
|
/packages/grafana-data/src/transformations/ @grafana/datapro
|
||||||
/packages/grafana-data/src/types/ @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-data/src/types/scopes.ts @grafana/grafana-operator-experience-squad
|
|
||||||
/packages/grafana-data/src/types/suggestions.ts @grafana/dataviz-squad
|
|
||||||
/packages/grafana-data/src/utils/__snapshots__/ @grafanabot
|
|
||||||
/packages/grafana-data/src/utils/anyToNumber.ts @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-data/src/utils/arrayUtils* @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-data/src/utils/binaryOperators.ts @grafana/datapro
|
|
||||||
/packages/grafana-data/src/utils/csv* @grafana/dataviz-squad
|
|
||||||
/packages/grafana-data/src/utils/dataLinks* @grafana/dashboards-squad
|
|
||||||
/packages/grafana-data/src/utils/datasource* @grafana/grafana-datasources-core-services
|
|
||||||
/packages/grafana-data/src/utils/docs.ts @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-data/src/utils/deprecationWarning* @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-data/src/utils/featureToggles.ts @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-data/src/utils/fieldParser.ts @grafana/dataviz-squad
|
|
||||||
/packages/grafana-data/src/utils/flotPairs* @grafana/dataviz-squad
|
|
||||||
/packages/grafana-data/src/utils/fuzzySearch* @grafana/grafana-search-navigate-organise
|
|
||||||
/packages/grafana-data/src/utils/labels* @grafana/observability-logs
|
|
||||||
/packages/grafana-data/src/utils/legend* @grafana/oss-big-tent
|
|
||||||
/packages/grafana-data/src/utils/location* @grafana/grafana-search-navigate-organise
|
|
||||||
/packages/grafana-data/src/utils/LocalStorageValueProvider.tsx @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-data/src/utils/makeClassES5Compatible.ts @grafana/plugins-platform-frontend
|
|
||||||
/packages/grafana-data/src/utils/matchPluginId* @grafana/plugins-platform-frontend
|
|
||||||
/packages/grafana-data/src/utils/namedColorsPalette* @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-data/src/utils/nodeGraph.ts @grafana/observability-traces-and-profiling
|
|
||||||
/packages/grafana-data/src/utils/numbers.ts @grafana/dataviz-squad
|
|
||||||
/packages/grafana-data/src/utils/object.ts @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-data/src/utils/OptionsUIBuilders.ts @grafana/dashboards-squad
|
|
||||||
/packages/grafana-data/src/utils/Registry* @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-data/src/utils/selectUtils.ts @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-data/src/utils/series* @grafana/dataviz-squad
|
|
||||||
/packages/grafana-data/src/utils/store* @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-data/src/utils/testdata/ @grafana/dataviz-squad
|
|
||||||
/packages/grafana-data/src/utils/tests/ @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-data/src/utils/throwIfAngular* @grafana/plugins-platform-frontend
|
|
||||||
/packages/grafana-data/src/utils/unaryOperators.ts @grafana/datapro
|
|
||||||
/packages/grafana-data/src/utils/url* @grafana/grafana-search-navigate-organise
|
|
||||||
/packages/grafana-data/src/utils/valueMappings* @grafana/dashboards-squad
|
|
||||||
/packages/grafana-data/src/utils/variables.ts @grafana/plugins-platform-frontend
|
|
||||||
/packages/grafana-data/src/utils/withLoadingIndicator.ts @grafana/access-squad @grafana/alerting-frontend
|
|
||||||
/packages/grafana-data/src/valueFormats/ @grafana/dashboards-squad
|
|
||||||
/packages/grafana-data/src/vector/ @grafana/dataviz-squad
|
|
||||||
|
|
||||||
# @grafana/e2e-selectors
|
|
||||||
/packages/grafana-e2e-selectors/ @grafana/grafana-frontend-platform
|
/packages/grafana-e2e-selectors/ @grafana/grafana-frontend-platform
|
||||||
|
|
||||||
# @grafana/eslint-plugin
|
|
||||||
/packages/grafana-eslint-rules/ @grafana/grafana-frontend-platform
|
|
||||||
|
|
||||||
# @grafana/flamegraph
|
|
||||||
/packages/grafana-flamegraph/ @grafana/observability-traces-and-profiling
|
/packages/grafana-flamegraph/ @grafana/observability-traces-and-profiling
|
||||||
|
|
||||||
# @grafana/o11y-ds-frontend
|
|
||||||
/packages/grafana-o11y-ds-frontend/ @grafana/observability-logs
|
/packages/grafana-o11y-ds-frontend/ @grafana/observability-logs
|
||||||
/packages/grafana-o11y-ds-frontend/src/IntervalInput/ @grafana/observability-traces-and-profiling
|
/packages/grafana-o11y-ds-frontend/src/IntervalInput/ @grafana/observability-traces-and-profiling
|
||||||
/packages/grafana-o11y-ds-frontend/src/NodeGraph/ @grafana/observability-traces-and-profiling
|
/packages/grafana-o11y-ds-frontend/src/NodeGraph/ @grafana/observability-traces-and-profiling
|
||||||
/packages/grafana-o11y-ds-frontend/src/pyroscope/ @grafana/oss-big-tent @grafana/observability-traces-and-profiling
|
/packages/grafana-o11y-ds-frontend/src/pyroscope/ @grafana/observability-traces-and-profiling
|
||||||
/packages/grafana-o11y-ds-frontend/src/SpanBar/ @grafana/oss-big-tent @grafana/observability-traces-and-profiling
|
/packages/grafana-o11y-ds-frontend/src/SpanBar/ @grafana/observability-traces-and-profiling
|
||||||
/packages/grafana-o11y-ds-frontend/src/TraceToLogs/ @grafana/oss-big-tent @grafana/observability-traces-and-profiling
|
/packages/grafana-o11y-ds-frontend/src/TraceToLogs/ @grafana/observability-traces-and-profiling
|
||||||
/packages/grafana-o11y-ds-frontend/src/TraceToMetrics/ @grafana/oss-big-tent @grafana/observability-traces-and-profiling
|
/packages/grafana-o11y-ds-frontend/src/TraceToMetrics/ @grafana/observability-traces-and-profiling
|
||||||
/packages/grafana-o11y-ds-frontend/src/TraceToProfiles/ @grafana/oss-big-tent @grafana/observability-traces-and-profiling
|
/packages/grafana-o11y-ds-frontend/src/TraceToProfiles/ @grafana/observability-traces-and-profiling
|
||||||
|
|
||||||
# @grafana/plugin-configs
|
|
||||||
/packages/grafana-plugin-configs/ @grafana/plugins-platform-frontend
|
/packages/grafana-plugin-configs/ @grafana/plugins-platform-frontend
|
||||||
|
|
||||||
# @grafana/prometheus
|
|
||||||
/packages/grafana-prometheus/ @grafana/oss-big-tent
|
/packages/grafana-prometheus/ @grafana/oss-big-tent
|
||||||
|
/packages/grafana-schema/src/**/*canvas* @grafana/dataviz-squad
|
||||||
# @grafana/runtime
|
/packages/grafana-schema/src/**/*tempo* @grafana/observability-traces-and-profiling
|
||||||
/packages/grafana-runtime/CHANGELOG.md @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-runtime/LICENSE_APACHE2 @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-runtime/README.md @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-runtime/package.json @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-runtime/project.json @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-runtime/rollup.config.ts @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-runtime/src/index.ts @grafana/grafana-frontend-platform @grafana/plugins-platform-frontend
|
|
||||||
/packages/grafana-runtime/src/internal/index.ts @grafana/grafana-frontend-platform @grafana/plugins-platform-frontend
|
|
||||||
/packages/grafana-runtime/src/internal/openFeature @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-runtime/src/unstable.ts @grafana/grafana-frontend-platform @grafana/plugins-platform-frontend
|
|
||||||
/packages/grafana-runtime/tsconfig.build.json @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-runtime/tsconfig.json @grafana/grafana-frontend-platform
|
|
||||||
|
|
||||||
/packages/grafana-runtime/src/analytics @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-runtime/src/analytics/plugins @grafana/plugins-platform-frontend
|
|
||||||
/packages/grafana-runtime/src/components/DataSourcePicker* @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-runtime/src/components/EmbeddedDashboard.tsx @grafana/dashboards-squad
|
|
||||||
/packages/grafana-runtime/src/components/FolderPicker.tsx @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-runtime/src/components/PanelRenderer.tsx @grafana/dashboards-squad
|
|
||||||
/packages/grafana-runtime/src/components/PanelDataErrorView.tsx @grafana/dashboards-squad
|
|
||||||
/packages/grafana-runtime/src/components/PluginPage.tsx @grafana/grafana-search-navigate-organise
|
|
||||||
/packages/grafana-runtime/src/components/QueryEditorWithMigration* @grafana/plugins-platform-frontend @grafana/plugins-platform-backend
|
|
||||||
/packages/grafana-runtime/src/config.ts @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-runtime/src/services/ @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-runtime/src/services/pluginExtensions @grafana/plugins-platform-frontend
|
|
||||||
/packages/grafana-runtime/src/services/CorrelationsService.ts @grafana/datapro
|
|
||||||
/packages/grafana-runtime/src/services/LocationService.test.tsx @grafana/grafana-search-navigate-organise
|
|
||||||
/packages/grafana-runtime/src/services/LocationService.tsx @grafana/grafana-search-navigate-organise
|
|
||||||
/packages/grafana-runtime/src/services/LocationSrv.ts @grafana/grafana-search-navigate-organise
|
|
||||||
/packages/grafana-runtime/src/services/live.ts @grafana/dashboards-squad
|
|
||||||
/packages/grafana-runtime/src/utils/chromeHeaderHeight.ts @grafana/grafana-search-navigate-organise
|
|
||||||
/packages/grafana-runtime/src/utils/DataSourceWithBackend* @grafana/grafana-datasources-core-services
|
|
||||||
/packages/grafana-runtime/src/utils/licensing.ts @grafana/grafana-operator-experience-squad
|
|
||||||
/packages/grafana-runtime/src/utils/logging.ts @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-runtime/src/utils/megaMenuOpen.ts @grafana/grafana-search-navigate-organise
|
|
||||||
/packages/grafana-runtime/src/utils/migrationHandler* @grafana/plugins-platform-frontend @grafana/plugins-platform-backend
|
|
||||||
/packages/grafana-runtime/src/utils/plugin.ts @grafana/plugins-platform-frontend
|
|
||||||
/packages/grafana-runtime/src/utils/publicDashboardQueryHandler.ts @grafana/grafana-operator-experience-squad
|
|
||||||
/packages/grafana-runtime/src/utils/queryResponse* @grafana/grafana-datasources-core-services
|
|
||||||
/packages/grafana-runtime/src/utils/rbac.ts @grafana/identity-access-team
|
|
||||||
/packages/grafana-runtime/src/utils/returnToPrevious.ts @grafana/grafana-search-navigate-organise
|
|
||||||
/packages/grafana-runtime/src/utils/toDataQueryError.ts @grafana/grafana-datasources-core-services
|
|
||||||
/packages/grafana-runtime/src/utils/userStorage* @grafana/plugins-platform-frontend @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-runtime/src/utils/useFavoriteDatasources* @grafana/plugins-platform-frontend
|
|
||||||
|
|
||||||
# @grafana/schema
|
|
||||||
/packages/grafana-schema/ @grafana/grafana-app-platform-squad
|
|
||||||
|
|
||||||
/packages/grafana-schema/src/**/annotationslist @grafana/dashboards-squad
|
|
||||||
/packages/grafana-schema/src/**/azuremonitor @grafana/partner-datasources
|
|
||||||
/packages/grafana-schema/src/**/barchart @grafana/dataviz-squad
|
|
||||||
/packages/grafana-schema/src/**/bargauge @grafana/dataviz-squad
|
|
||||||
/packages/grafana-schema/src/**/candlestick @grafana/dataviz-squad
|
|
||||||
/packages/grafana-schema/src/**/canvas @grafana/dataviz-squad
|
|
||||||
/packages/grafana-schema/src/**/cloudwatch @grafana/aws-datasources
|
|
||||||
/packages/grafana-schema/src/**/dashboard @grafana/dashboards-squad
|
|
||||||
/packages/grafana-schema/src/**/dashboardlist @grafana/grafana-search-navigate-organise
|
|
||||||
/packages/grafana-schema/src/**/datagrid @grafana/dataviz-squad
|
|
||||||
/packages/grafana-schema/src/**/debug @ryantxu
|
|
||||||
/packages/grafana-schema/src/**/elasticsearch @grafana/partner-datasources
|
|
||||||
/packages/grafana-schema/src/**/gauge @grafana/dataviz-squad
|
|
||||||
/packages/grafana-schema/src/**/geomap @grafana/dataviz-squad
|
|
||||||
/packages/grafana-schema/src/**/googlecloudmonitoring @grafana/partner-datasources
|
|
||||||
/packages/grafana-schema/src/**/grafanapyroscope @grafana/oss-big-tent
|
|
||||||
/packages/grafana-schema/src/**/heatmap @grafana/dataviz-squad
|
|
||||||
/packages/grafana-schema/src/**/histogram @grafana/dataviz-squad
|
|
||||||
/packages/grafana-schema/src/**/logs @grafana/observability-logs
|
|
||||||
/packages/grafana-schema/src/**/logsnew @grafana/observability-logs
|
|
||||||
/packages/grafana-schema/src/**/loki @grafana/oss-big-tent @grafana/observability-logs
|
|
||||||
/packages/grafana-schema/src/**/news @grafana/dataviz-squad
|
|
||||||
/packages/grafana-schema/src/**/nodegraph @grafana/observability-traces-and-profiling @grafana/app-o11y-visualizations
|
|
||||||
/packages/grafana-schema/src/**/parca @grafana/oss-big-tent
|
|
||||||
/packages/grafana-schema/src/**/piechart @grafana/dataviz-squad
|
|
||||||
/packages/grafana-schema/src/**/stat @grafana/dataviz-squad
|
|
||||||
/packages/grafana-schema/src/**/statetimeline @grafana/dataviz-squad
|
|
||||||
/packages/grafana-schema/src/**/statushistory @grafana/dataviz-squad
|
|
||||||
/packages/grafana-schema/src/**/table @grafana/dataviz-squad
|
|
||||||
/packages/grafana-schema/src/**/tempo @grafana/oss-big-tent @grafana/observability-traces-and-profiling
|
|
||||||
/packages/grafana-schema/src/**/text @grafana/dataviz-squad
|
|
||||||
/packages/grafana-schema/src/**/timeseries @grafana/dataviz-squad
|
|
||||||
/packages/grafana-schema/src/**/trend @grafana/dataviz-squad
|
|
||||||
/packages/grafana-schema/src/**/xychart @grafana/dataviz-squad
|
|
||||||
/packages/grafana-schema/src/**/xychart2 @grafana/dataviz-squad
|
|
||||||
|
|
||||||
# @grafana/sql
|
|
||||||
/packages/grafana-sql/ @grafana/partner-datasources @grafana/oss-big-tent
|
/packages/grafana-sql/ @grafana/partner-datasources @grafana/oss-big-tent
|
||||||
|
/packages/grafana-ui/.storybook/ @grafana/grafana-frontend-platform
|
||||||
# @grafana/ui
|
/packages/grafana-ui/src/components/ @grafana/grafana-frontend-platform
|
||||||
/packages/grafana-ui/ @grafana/grafana-frontend-platform
|
|
||||||
/packages/grafana-ui/src/components/BarGauge/ @grafana/dataviz-squad
|
/packages/grafana-ui/src/components/BarGauge/ @grafana/dataviz-squad
|
||||||
/packages/grafana-ui/src/components/DataLinks/ @grafana/dataviz-squad
|
/packages/grafana-ui/src/components/DataLinks/ @grafana/dataviz-squad
|
||||||
|
/packages/grafana-ui/src/components/DateTimePickers/ @grafana/grafana-frontend-platform
|
||||||
/packages/grafana-ui/src/components/Gauge/ @grafana/dataviz-squad
|
/packages/grafana-ui/src/components/Gauge/ @grafana/dataviz-squad
|
||||||
/packages/grafana-ui/src/components/RadialGauge/ @grafana/dataviz-squad
|
|
||||||
/packages/grafana-ui/src/components/PluginSignatureBadge/ @grafana/plugins-platform-frontend
|
/packages/grafana-ui/src/components/PluginSignatureBadge/ @grafana/plugins-platform-frontend
|
||||||
/packages/grafana-ui/src/components/Sparkline/ @grafana/dataviz-squad
|
/packages/grafana-ui/src/components/Sparkline/ @grafana/grafana-frontend-platform @grafana/app-o11y-visualizations
|
||||||
/packages/grafana-ui/src/components/Table/ @grafana/dataviz-squad
|
/packages/grafana-ui/src/components/Table/ @grafana/dataviz-squad
|
||||||
/packages/grafana-ui/src/components/Table/Cells/SparklineCell.tsx @grafana/dataviz-squad
|
/packages/grafana-ui/src/components/Table/Cells/SparklineCell.tsx @grafana/dataviz-squad @grafana/app-o11y-visualizations
|
||||||
/packages/grafana-ui/src/components/uPlot/ @grafana/dataviz-squad
|
/packages/grafana-ui/src/components/uPlot/ @grafana/dataviz-squad
|
||||||
/packages/grafana-ui/src/components/ValuePicker/ @grafana/dataviz-squad
|
/packages/grafana-ui/src/components/ValuePicker/ @grafana/dataviz-squad
|
||||||
/packages/grafana-ui/src/components/VizLayout/ @grafana/dataviz-squad
|
/packages/grafana-ui/src/components/VizLayout/ @grafana/dataviz-squad
|
||||||
@@ -735,27 +441,11 @@ i18next.config.ts @grafana/grafana-frontend-platform
|
|||||||
/packages/grafana-ui/src/graveyard/Graph/ @grafana/dataviz-squad
|
/packages/grafana-ui/src/graveyard/Graph/ @grafana/dataviz-squad
|
||||||
/packages/grafana-ui/src/graveyard/GraphNG/ @grafana/dataviz-squad
|
/packages/grafana-ui/src/graveyard/GraphNG/ @grafana/dataviz-squad
|
||||||
/packages/grafana-ui/src/graveyard/TimeSeries/ @grafana/dataviz-squad
|
/packages/grafana-ui/src/graveyard/TimeSeries/ @grafana/dataviz-squad
|
||||||
/packages/grafana-ui/tsconfig.build.json @grafana/frontend-ops
|
/packages/grafana-ui/src/utils/storybook/ @grafana/grafana-frontend-platform
|
||||||
/packages/grafana-ui/tsconfig.json @grafana/frontend-ops
|
/packages/grafana-alerting/ @grafana/alerting-frontend
|
||||||
|
|
||||||
# @grafana/i18n
|
|
||||||
/packages/grafana-i18n/ @grafana/grafana-frontend-platform @grafana/plugins-platform-frontend
|
/packages/grafana-i18n/ @grafana/grafana-frontend-platform @grafana/plugins-platform-frontend
|
||||||
|
|
||||||
# @grafana/test-utils
|
|
||||||
/packages/grafana-test-utils @grafana/grafana-frontend-platform
|
/packages/grafana-test-utils @grafana/grafana-frontend-platform
|
||||||
|
|
||||||
# @grafana/api-clients
|
|
||||||
/packages/grafana-api-clients/ @grafana/grafana-frontend-platform @grafana/grafana-search-navigate-organise
|
|
||||||
/packages/grafana-api-clients/src/clients/rtkq/advisor/ @grafana/plugins-platform-frontend
|
|
||||||
/packages/grafana-api-clients/src/clients/rtkq/correlations/ @grafana/datapro
|
|
||||||
/packages/grafana-api-clients/src/clients/rtkq/dashboard/ @grafana/dashboards-squad
|
|
||||||
/packages/grafana-api-clients/src/clients/rtkq/folder/ @grafana/grafana-search-navigate-organise
|
|
||||||
/packages/grafana-api-clients/src/clients/rtkq/iam/ @grafana/access-squad @grafana/identity-squad
|
|
||||||
/packages/grafana-api-clients/src/clients/rtkq/logsdrilldown/ @grafana/observability-logs
|
|
||||||
/packages/grafana-api-clients/src/clients/rtkq/preferences/ @grafana/plugins-platform-frontend
|
|
||||||
/packages/grafana-api-clients/src/clients/rtkq/provisioning/ @grafana/grafana-git-ui-sync-team
|
|
||||||
/packages/grafana-api-clients/src/clients/rtkq/shorturl/ @grafana/sharing-squad
|
|
||||||
|
|
||||||
# root files, mostly frontend
|
# root files, mostly frontend
|
||||||
/.browserslistrc @grafana/frontend-ops
|
/.browserslistrc @grafana/frontend-ops
|
||||||
/package.json @grafana/frontend-ops
|
/package.json @grafana/frontend-ops
|
||||||
@@ -763,9 +453,9 @@ i18next.config.ts @grafana/grafana-frontend-platform
|
|||||||
/project.json @grafana/frontend-ops
|
/project.json @grafana/frontend-ops
|
||||||
/.nxignore @grafana/frontend-ops
|
/.nxignore @grafana/frontend-ops
|
||||||
/tsconfig.json @grafana/frontend-ops
|
/tsconfig.json @grafana/frontend-ops
|
||||||
/scripts/tsconfig.base.json @grafana/frontend-ops
|
|
||||||
/.editorconfig @grafana/frontend-ops
|
/.editorconfig @grafana/frontend-ops
|
||||||
/eslint.config.js @grafana/frontend-ops
|
/eslint.config.js @grafana/frontend-ops
|
||||||
|
/.betterer.eslint.config.js @grafana/frontend-ops
|
||||||
/.gitattributes @grafana/frontend-ops
|
/.gitattributes @grafana/frontend-ops
|
||||||
/.gitignore @grafana/frontend-ops
|
/.gitignore @grafana/frontend-ops
|
||||||
/.ignore @grafana/frontend-ops
|
/.ignore @grafana/frontend-ops
|
||||||
@@ -787,147 +477,26 @@ i18next.config.ts @grafana/grafana-frontend-platform
|
|||||||
/cypress.config.js @grafana/grafana-frontend-platform
|
/cypress.config.js @grafana/grafana-frontend-platform
|
||||||
/.levignore.js @grafana/plugins-platform-frontend
|
/.levignore.js @grafana/plugins-platform-frontend
|
||||||
playwright.config.ts @grafana/plugins-platform-frontend
|
playwright.config.ts @grafana/plugins-platform-frontend
|
||||||
playwright.storybook.config.ts @grafana/grafana-frontend-platform
|
|
||||||
|
|
||||||
# public folder
|
# public folder
|
||||||
/public/app/api/ @grafana/grafana-frontend-platform
|
/public/app/api/ @grafana/grafana-frontend-platform
|
||||||
/public/app/api/clients/folder/ @grafana/grafana-search-navigate-organise
|
/public/app/core/ @grafana/grafana-frontend-platform
|
||||||
/public/app/core/actions/ @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/app_events.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/components/AccessControl/ @grafana/identity-access-team
|
|
||||||
/public/app/core/components/Animations/ @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/components/AppNotifications/ @grafana/grafana-search-navigate-organise
|
|
||||||
/public/app/core/components/AppChrome/ @grafana/grafana-search-navigate-organise
|
|
||||||
/public/app/core/components/Branding/ @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/components/Breadcrumbs/ @grafana/grafana-search-navigate-organise
|
|
||||||
/public/app/core/components/BouncingLoader/ @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/components/CardButton.tsx @grafana/dashboards-squad
|
|
||||||
/public/app/core/components/CloseButton/ @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/components/ColorScale/ @grafana/dataviz-squad
|
|
||||||
/public/app/core/components/DynamicImports/ @grafana/grafana-search-navigate-organise
|
|
||||||
/public/app/core/components/EmptyListCTA/ @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/components/FolderFilter/ @grafana/grafana-search-navigate-organise
|
|
||||||
/public/app/core/components/Footer/ @grafana/grafana-search-navigate-organise
|
|
||||||
/public/app/core/components/ForgottenPassword/ @grafana/grafana-search-navigate-organise
|
|
||||||
/public/app/core/components/Form/ @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/components/FormPrompt/ @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/components/GraphNG/ @grafana/dataviz-squad
|
|
||||||
/public/app/core/components/help/ @grafana/grafana-search-navigate-organise
|
|
||||||
/public/app/core/components/Indent/ @grafana/grafana-search-navigate-organise
|
|
||||||
/public/app/core/components/Layers/ @grafana/dataviz-squad
|
|
||||||
/public/app/core/components/Login/ @grafana/grafana-search-navigate-organise
|
|
||||||
/public/app/core/components/NativeScrollbar.tsx @grafana/grafana-search-navigate-organise
|
|
||||||
/public/app/core/components/NavLandingPage/ @grafana/grafana-search-navigate-organise
|
|
||||||
/public/app/core/components/NestedFolderPicker/ @grafana/grafana-search-navigate-organise
|
|
||||||
/public/app/core/components/OptionsUI/ @grafana/dashboards-squad @grafana/dataviz-squad
|
|
||||||
/public/app/core/components/Page/ @grafana/grafana-search-navigate-organise
|
|
||||||
/public/app/core/components/PageActionBar/ @grafana/grafana-search-navigate-organise
|
|
||||||
/public/app/core/components/PageInfo/ @grafana/grafana-search-navigate-organise
|
|
||||||
/public/app/core/components/PageLoader/ @grafana/grafana-search-navigate-organise
|
|
||||||
/public/app/core/components/PageNotFound/ @grafana/grafana-search-navigate-organise
|
|
||||||
/public/app/core/components/PanelTypeFilter/ @grafana/sharing-squad
|
|
||||||
/public/app/core/components/PasswordField/ @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/components/PluginHelp/ @grafana/plugins-platform-frontend
|
|
||||||
/public/app/core/components/QueryOperationRow/ @grafana/dashboards-squad
|
|
||||||
/public/app/core/components/RolePickerDrawer/ @grafana/identity-access-team
|
|
||||||
/public/app/core/components/Select/ @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/components/SharedPreferences/ @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/components/Signup/ @grafana/grafana-search-navigate-organise
|
|
||||||
/public/app/core/components/SplitPaneWrapper/ @grafana/observability-traces-and-profiling
|
|
||||||
/public/app/core/components/SVG/ @grafana/dataviz-squad
|
|
||||||
/public/app/core/components/TagFilter/ @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/components/Theme/ @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/components/ThemeSelector/ @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/components/TimelineChart/ @grafana/dataviz-squad
|
|
||||||
/public/app/core/components/TimePicker/ @grafana/grafana-frontend-platform
|
/public/app/core/components/TimePicker/ @grafana/grafana-frontend-platform
|
||||||
|
/public/app/core/components/Layers/ @grafana/dataviz-squad
|
||||||
|
/public/app/core/components/GraphNG/ @grafana/dataviz-squad
|
||||||
/public/app/core/components/TimeSeries/ @grafana/dataviz-squad
|
/public/app/core/components/TimeSeries/ @grafana/dataviz-squad
|
||||||
/public/app/core/components/Upgrade/ @grafana/grafana-operator-experience-squad
|
/public/app/core/components/TimelineChart/ @grafana/dataviz-squad
|
||||||
/public/app/core/components/ValidationLabels/ @grafana/grafana-search-navigate-organise
|
/public/app/core/components/Form/ @grafana/grafana-frontend-platform
|
||||||
/public/app/core/components/VersionHistory/ @grafana/dashboards-squad
|
/public/app/core/components/OptionsUI/ @grafana/dashboards-squad @grafana/dataviz-squad
|
||||||
/public/app/core/config.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/constants.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/context/ @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/copy/appNotification.ts @grafana/grafana-search-navigate-organise
|
|
||||||
/public/app/core/crash/ @grafana/observability-traces-and-profiling
|
|
||||||
/public/app/core/history/ @grafana/observability-traces-and-profiling
|
|
||||||
/public/app/core/hooks/useBusEvent.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/hooks/useCleanup.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/hooks/useMediaQueryMinWidth.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/hooks/useNavModel.ts @grafana/grafana-search-navigate-organise
|
|
||||||
/public/app/core/hooks/useQueryParams.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/icons/ @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/lifecycle-hooks.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/log_events.ts @grafana/dashboards-squad
|
|
||||||
/public/app/core/monacoEnv.ts @grafana/grafana-frontend-platform @grafana/plugins-platform-frontend
|
|
||||||
/public/app/core/navigation/ @grafana/grafana-search-navigate-organise
|
|
||||||
/public/app/core/profiler.ts @grafana/dashboards-squad
|
|
||||||
/public/app/core/reducers/ @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/selectors/ @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/services/__mocks__/backend_srv.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/services/backend_srv.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/services/context_srv.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/services/CorrelationsService.ts @grafana/datapro
|
|
||||||
/public/app/core/services/echo/ @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/services/FetchQueue* @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/services/impression_srv.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/services/KeybindingSet* @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/services/keybindingSrv.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/services/mocks/subscribeTester.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/services/mousetrap/ @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/services/NewFrontendAssetsChecker* @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/services/PreferencesService.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/services/ResponseQueue* @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/services/StateManagerBase.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/services/theme.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/specs/backend_srv.test.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/specs/factors.test.ts @grafana/dashboards-squad
|
|
||||||
/public/app/core/specs/flatten.test.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/specs/impression_srv.test.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/specs/rangeutil.test.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/specs/store.test.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/specs/TableModel.test.ts @grafana/partner-datasources
|
|
||||||
/public/app/core/specs/ticks.test.ts @grafana/plugins-platform-frontend
|
|
||||||
/public/app/core/specs/time_series.test.ts @grafana/dataviz-squad
|
|
||||||
/public/app/core/store.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/TableModel.ts @grafana/partner-datasources
|
|
||||||
/public/app/core/time_series2.ts @grafana/dataviz-squad
|
|
||||||
/public/app/core/trustedTypePolicies.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/utils/accessControl.ts @grafana/identity-access-team
|
|
||||||
/public/app/core/utils/applyStateChanges.ts @grafana/dashboards-squad
|
|
||||||
/public/app/core/utils/arrayMove.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/utils/isFrontendService.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/utils/auth.ts @grafana/identity-access-team
|
|
||||||
/public/app/core/utils/browser* @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/utils/colors.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/utils/ConfigProvider.tsx @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/utils/CorsSharedWorker.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/utils/CorsWorker.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/utils/connectWithReduxStore.tsx @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/utils/dag* @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/utils/deferred.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/utils/docsLinks.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/utils/errors* @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/utils/explore* @grafana/observability-traces-and-profiling
|
|
||||||
/public/app/core/utils/factors.ts @grafana/dashboards-squad
|
|
||||||
/public/app/core/utils/fetch* @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/utils/flatten.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/utils/isShallowEqual.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/utils/kbn* @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/utils/navBarItem-translations.ts @grafana/grafana-search-navigate-organise
|
|
||||||
/public/app/core/utils/object* @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/utils/query* @grafana/grafana-datasources-core-services
|
|
||||||
/public/app/core/utils/richHistory* @grafana/observability-traces-and-profiling
|
|
||||||
/public/app/core/utils/set.ts @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/utils/shortLinks* @grafana/sharing-squad
|
|
||||||
/public/app/core/utils/ticks.ts @grafana/plugins-platform-frontend
|
|
||||||
/public/app/core/utils/timePicker* @grafana/grafana-frontend-platform
|
|
||||||
/public/app/core/utils/timeRegions* @grafana/dataviz-squad
|
|
||||||
/public/app/core/utils/urlToken.ts @grafana/identity-access-team
|
|
||||||
/public/app/core/utils/version.ts @grafana/partner-datasources
|
|
||||||
/public/app/dev-utils.ts @grafana/grafana-frontend-platform
|
/public/app/dev-utils.ts @grafana/grafana-frontend-platform
|
||||||
|
|
||||||
/public/app/features/actions/ @grafana/dataviz-squad
|
/public/app/core/history/ @grafana/observability-traces-and-profiling
|
||||||
/public/app/features/admin/ @grafana/identity-access-team
|
/public/app/features/admin/ @grafana/identity-access-team
|
||||||
|
|
||||||
|
# Temp owners until Enterprise team takes over
|
||||||
|
/public/app/features/migrate-to-cloud @grafana/grafana-frontend-platform
|
||||||
|
|
||||||
|
/public/app/features/actions/ @grafana/dataviz-squad
|
||||||
/public/app/features/auth-config/ @grafana/identity-squad
|
/public/app/features/auth-config/ @grafana/identity-squad
|
||||||
/public/app/features/annotations/ @grafana/dashboards-squad
|
/public/app/features/annotations/ @grafana/dashboards-squad
|
||||||
/public/app/features/canvas/ @grafana/dataviz-squad
|
/public/app/features/canvas/ @grafana/dataviz-squad
|
||||||
@@ -949,15 +518,11 @@ playwright.storybook.config.ts @grafana/grafana-frontend-platform
|
|||||||
/public/app/features/inspector/ @grafana/dashboards-squad
|
/public/app/features/inspector/ @grafana/dashboards-squad
|
||||||
/public/app/features/logs/ @grafana/observability-logs
|
/public/app/features/logs/ @grafana/observability-logs
|
||||||
/public/app/features/live/ @grafana/dashboards-squad
|
/public/app/features/live/ @grafana/dashboards-squad
|
||||||
/public/app/features/stars/ @grafana/grafana-search-navigate-organise
|
|
||||||
/public/app/features/apiserver/ @grafana/grafana-app-platform-squad
|
/public/app/features/apiserver/ @grafana/grafana-app-platform-squad
|
||||||
/public/app/features/manage-dashboards/ @grafana/dashboards-squad
|
/public/app/features/manage-dashboards/ @grafana/dashboards-squad
|
||||||
/public/app/features/migrate-to-cloud @grafana/grafana-operator-experience-squad
|
|
||||||
/public/app/features/notifications/ @grafana/grafana-search-navigate-organise
|
/public/app/features/notifications/ @grafana/grafana-search-navigate-organise
|
||||||
/public/app/features/org/ @grafana/grafana-search-navigate-organise
|
/public/app/features/org/ @grafana/grafana-search-navigate-organise
|
||||||
/public/app/features/panel/ @grafana/dashboards-squad
|
/public/app/features/panel/ @grafana/dashboards-squad
|
||||||
/public/app/features/panel/components/VizTypePicker/VisualizationSuggestions.tsx @grafana/dataviz-squad
|
|
||||||
/public/app/features/panel/suggestions/ @grafana/dataviz-squad
|
|
||||||
/public/app/features/playlist/ @grafana/dashboards-squad
|
/public/app/features/playlist/ @grafana/dashboards-squad
|
||||||
/public/app/features/plugins/ @grafana/plugins-platform-frontend
|
/public/app/features/plugins/ @grafana/plugins-platform-frontend
|
||||||
/public/app/features/profile/ @grafana/grafana-frontend-platform
|
/public/app/features/profile/ @grafana/grafana-frontend-platform
|
||||||
@@ -969,14 +534,13 @@ playwright.storybook.config.ts @grafana/grafana-frontend-platform
|
|||||||
/public/app/features/serviceaccounts/ @grafana/identity-squad
|
/public/app/features/serviceaccounts/ @grafana/identity-squad
|
||||||
/public/app/features/teams/ @grafana/access-squad
|
/public/app/features/teams/ @grafana/access-squad
|
||||||
/public/app/features/templating/ @grafana/dashboards-squad
|
/public/app/features/templating/ @grafana/dashboards-squad
|
||||||
/public/app/features/theme-playground/ @grafana/grafana-frontend-platform
|
|
||||||
/public/app/features/trails/ @grafana/observability-metrics
|
/public/app/features/trails/ @grafana/observability-metrics
|
||||||
/public/app/features/transformers/ @grafana/datapro
|
/public/app/features/transformers/ @grafana/datapro
|
||||||
/public/app/features/transformers/timeSeriesTable/ @grafana/dataviz-squad @grafana/app-o11y-visualizations
|
/public/app/features/transformers/timeSeriesTable/ @grafana/dataviz-squad @grafana/app-o11y-visualizations
|
||||||
/public/app/features/users/ @grafana/access-squad
|
/public/app/features/users/ @grafana/access-squad
|
||||||
/public/app/features/variables/ @grafana/dashboards-squad
|
/public/app/features/variables/ @grafana/dashboards-squad
|
||||||
|
/public/app/features/preferences/ @grafana/grafana-frontend-platform
|
||||||
/public/app/features/bookmarks/ @grafana/grafana-search-navigate-organise
|
/public/app/features/bookmarks/ @grafana/grafana-search-navigate-organise
|
||||||
/public/app/plugins/panel/* @grafana/dataviz-squad
|
|
||||||
/public/app/plugins/panel/alertlist/ @grafana/alerting-frontend
|
/public/app/plugins/panel/alertlist/ @grafana/alerting-frontend
|
||||||
/public/app/plugins/panel/annolist/ @grafana/dashboards-squad
|
/public/app/plugins/panel/annolist/ @grafana/dashboards-squad
|
||||||
/public/app/plugins/panel/barchart/ @grafana/dataviz-squad
|
/public/app/plugins/panel/barchart/ @grafana/dataviz-squad
|
||||||
@@ -989,6 +553,7 @@ playwright.storybook.config.ts @grafana/grafana-frontend-platform
|
|||||||
/public/app/plugins/panel/heatmap/ @grafana/dataviz-squad
|
/public/app/plugins/panel/heatmap/ @grafana/dataviz-squad
|
||||||
/public/app/plugins/panel/histogram/ @grafana/dataviz-squad
|
/public/app/plugins/panel/histogram/ @grafana/dataviz-squad
|
||||||
/public/app/plugins/panel/logs/ @grafana/observability-logs
|
/public/app/plugins/panel/logs/ @grafana/observability-logs
|
||||||
|
/public/app/plugins/panel/logs-new/ @grafana/observability-logs
|
||||||
/public/app/plugins/panel/nodeGraph/ @grafana/observability-traces-and-profiling @grafana/app-o11y-visualizations
|
/public/app/plugins/panel/nodeGraph/ @grafana/observability-traces-and-profiling @grafana/app-o11y-visualizations
|
||||||
/public/app/plugins/panel/traces/ @grafana/observability-traces-and-profiling
|
/public/app/plugins/panel/traces/ @grafana/observability-traces-and-profiling
|
||||||
/public/app/plugins/panel/flamegraph/ @grafana/observability-traces-and-profiling
|
/public/app/plugins/panel/flamegraph/ @grafana/observability-traces-and-profiling
|
||||||
@@ -996,7 +561,7 @@ playwright.storybook.config.ts @grafana/grafana-frontend-platform
|
|||||||
/public/app/plugins/panel/state-timeline/ @grafana/dataviz-squad
|
/public/app/plugins/panel/state-timeline/ @grafana/dataviz-squad
|
||||||
/public/app/plugins/panel/status-history/ @grafana/dataviz-squad
|
/public/app/plugins/panel/status-history/ @grafana/dataviz-squad
|
||||||
/public/app/plugins/panel/table/ @grafana/dataviz-squad
|
/public/app/plugins/panel/table/ @grafana/dataviz-squad
|
||||||
/public/app/plugins/panel/table/cells/SparklineCellOptionsEditor.tsx @grafana/dataviz-squad
|
/public/app/plugins/panel/table/cells/SparklineCellOptionsEditor.tsx @grafana/dataviz-squad @grafana/app-o11y-visualizations
|
||||||
/public/app/plugins/panel/timeseries/ @grafana/dataviz-squad
|
/public/app/plugins/panel/timeseries/ @grafana/dataviz-squad
|
||||||
/public/app/plugins/panel/trend/ @grafana/dataviz-squad
|
/public/app/plugins/panel/trend/ @grafana/dataviz-squad
|
||||||
/public/app/plugins/panel/geomap/ @grafana/dataviz-squad
|
/public/app/plugins/panel/geomap/ @grafana/dataviz-squad
|
||||||
@@ -1011,6 +576,7 @@ playwright.storybook.config.ts @grafana/grafana-frontend-platform
|
|||||||
/public/app/routes/ @grafana/grafana-search-navigate-organise
|
/public/app/routes/ @grafana/grafana-search-navigate-organise
|
||||||
/public/app/store/ @grafana/grafana-frontend-platform
|
/public/app/store/ @grafana/grafana-frontend-platform
|
||||||
/public/app/types/ @grafana/grafana-frontend-platform
|
/public/app/types/ @grafana/grafana-frontend-platform
|
||||||
|
/public/app/types/alerting.ts @grafana/alerting-frontend
|
||||||
/public/app/types/unified-alerting-dto.ts @grafana/alerting-frontend
|
/public/app/types/unified-alerting-dto.ts @grafana/alerting-frontend
|
||||||
/public/app/types/unified-alerting.ts @grafana/alerting-frontend
|
/public/app/types/unified-alerting.ts @grafana/alerting-frontend
|
||||||
/public/dashboards/ @grafana/dashboards-squad
|
/public/dashboards/ @grafana/dashboards-squad
|
||||||
@@ -1045,6 +611,7 @@ playwright.storybook.config.ts @grafana/grafana-frontend-platform
|
|||||||
/public/app/index.ts @grafana/frontend-ops
|
/public/app/index.ts @grafana/frontend-ops
|
||||||
/public/app/initApp.ts @grafana/frontend-ops
|
/public/app/initApp.ts @grafana/frontend-ops
|
||||||
/public/app/AppWrapper.tsx @grafana/frontend-ops
|
/public/app/AppWrapper.tsx @grafana/frontend-ops
|
||||||
|
/public/app/partials/ @grafana/grafana-frontend-platform
|
||||||
|
|
||||||
/scripts/benchmark-access-control.sh @grafana/access-squad
|
/scripts/benchmark-access-control.sh @grafana/access-squad
|
||||||
/scripts/check-breaking-changes.sh @grafana/plugins-platform-frontend
|
/scripts/check-breaking-changes.sh @grafana/plugins-platform-frontend
|
||||||
@@ -1052,11 +619,10 @@ playwright.storybook.config.ts @grafana/grafana-frontend-platform
|
|||||||
/scripts/circle-* @grafana/grafana-developer-enablement-squad
|
/scripts/circle-* @grafana/grafana-developer-enablement-squad
|
||||||
/scripts/publish-npm-packages.sh @grafana/grafana-developer-enablement-squad @grafana/plugins-platform-frontend
|
/scripts/publish-npm-packages.sh @grafana/grafana-developer-enablement-squad @grafana/plugins-platform-frontend
|
||||||
/scripts/validate-npm-packages.sh @grafana/grafana-developer-enablement-squad @grafana/plugins-platform-frontend
|
/scripts/validate-npm-packages.sh @grafana/grafana-developer-enablement-squad @grafana/plugins-platform-frontend
|
||||||
/scripts/ci-frontend-metrics.sh @grafana/grafana-frontend-platform @grafana/frontend-ops
|
/scripts/ci-frontend-metrics.sh @grafana/grafana-frontend-platform @grafana/plugins-platform-frontend @grafana/dataviz-squad @grafana/datapro
|
||||||
/scripts/cli/ @grafana/grafana-frontend-platform
|
/scripts/cli/ @grafana/grafana-frontend-platform
|
||||||
/scripts/clean-git-or-error.sh @grafana/grafana-as-code
|
/scripts/clean-git-or-error.sh @grafana/grafana-as-code
|
||||||
/scripts/grafana-server/ @grafana/grafana-frontend-platform
|
/scripts/grafana-server/ @grafana/grafana-frontend-platform
|
||||||
/scripts/check-frontend-dev.sh @grafana/grafana-frontend-platform
|
|
||||||
/scripts/helpers/ @grafana/grafana-developer-enablement-squad
|
/scripts/helpers/ @grafana/grafana-developer-enablement-squad
|
||||||
/scripts/import_many_dashboards.sh @torkelo
|
/scripts/import_many_dashboards.sh @torkelo
|
||||||
/scripts/mixin-check.sh @bergquist
|
/scripts/mixin-check.sh @bergquist
|
||||||
@@ -1070,19 +636,19 @@ playwright.storybook.config.ts @grafana/grafana-frontend-platform
|
|||||||
/scripts/trigger_windows_build.sh @grafana/grafana-developer-enablement-squad
|
/scripts/trigger_windows_build.sh @grafana/grafana-developer-enablement-squad
|
||||||
/scripts/cleanup-husky.sh @grafana/frontend-ops
|
/scripts/cleanup-husky.sh @grafana/frontend-ops
|
||||||
/scripts/verify-repo-update/ @grafana/grafana-developer-enablement-squad
|
/scripts/verify-repo-update/ @grafana/grafana-developer-enablement-squad
|
||||||
|
/scripts/generate-rtk-apis.ts @grafana/grafana-frontend-platform
|
||||||
|
/scripts/process-specs.ts @grafana/grafana-frontend-platform
|
||||||
/scripts/generate-alerting-rtk-apis.ts @grafana/alerting-frontend
|
/scripts/generate-alerting-rtk-apis.ts @grafana/alerting-frontend
|
||||||
/scripts/levitate-parse-json-report.js @grafana/plugins-platform-frontend
|
/scripts/levitate-parse-json-report.js @grafana/plugins-platform-frontend
|
||||||
/scripts/levitate-show-affected-plugins.js @grafana/plugins-platform-frontend
|
/scripts/levitate-show-affected-plugins.js @grafana/plugins-platform-frontend
|
||||||
/scripts/codemods/explicit-barrel-imports.cjs @grafana/frontend-ops
|
/scripts/codemods/explicit-barrel-imports.cjs @grafana/frontend-ops
|
||||||
|
/scripts/rtk-client-generator/ @grafana/grafana-search-navigate-organise
|
||||||
/scripts/codeowners-manifest/ @grafana/dataviz-squad
|
|
||||||
/scripts/test-coverage-by-codeowner.js @grafana/dataviz-squad
|
|
||||||
/jest.config.codeowner.js @grafana/dataviz-squad
|
|
||||||
|
|
||||||
/scripts/**/generate-transformations* @grafana/datapro
|
/scripts/**/generate-transformations* @grafana/datapro
|
||||||
/scripts/webpack/ @grafana/frontend-ops
|
/scripts/webpack/ @grafana/frontend-ops
|
||||||
/scripts/generate-a11y-report.sh @grafana/grafana-frontend-platform
|
/scripts/generate-a11y-report.sh @grafana/grafana-frontend-platform
|
||||||
eslint-suppressions.json @grafanabot
|
.betterer.results @grafanabot
|
||||||
|
.betterer.ts @grafana/grafana-frontend-platform
|
||||||
|
|
||||||
# Design system
|
# Design system
|
||||||
/public/img/icons/unicons/ @grafana/design-system
|
/public/img/icons/unicons/ @grafana/design-system
|
||||||
@@ -1106,15 +672,14 @@ eslint-suppressions.json @grafanabot
|
|||||||
/public/app/plugins/datasource/prometheus/ @grafana/oss-big-tent
|
/public/app/plugins/datasource/prometheus/ @grafana/oss-big-tent
|
||||||
/public/app/plugins/datasource/cloud-monitoring/ @grafana/partner-datasources
|
/public/app/plugins/datasource/cloud-monitoring/ @grafana/partner-datasources
|
||||||
/public/app/plugins/datasource/zipkin/ @grafana/oss-big-tent
|
/public/app/plugins/datasource/zipkin/ @grafana/oss-big-tent
|
||||||
/public/app/plugins/datasource/tempo/ @grafana/oss-big-tent
|
/public/app/plugins/datasource/tempo/ @grafana/observability-traces-and-profiling
|
||||||
/public/app/plugins/datasource/grafana-pyroscope-datasource/ @grafana/oss-big-tent
|
/public/app/plugins/datasource/grafana-pyroscope-datasource/ @grafana/observability-traces-and-profiling
|
||||||
/public/app/plugins/datasource/parca/ @grafana/oss-big-tent
|
/public/app/plugins/datasource/parca/ @grafana/oss-big-tent
|
||||||
/public/app/plugins/datasource/alertmanager/ @grafana/alerting-squad
|
/public/app/plugins/datasource/alertmanager/ @grafana/alerting-squad
|
||||||
|
|
||||||
# Grafana Sharing Squad
|
# Grafana Sharing Squad
|
||||||
/public/app/features/dashboard-scene/sharing/ @grafana/sharing-squad
|
/public/app/features/dashboard-scene/sharing/ @grafana/sharing-squad
|
||||||
/public/app/features/dashboard/components/ShareModal/ @grafana/sharing-squad
|
/public/app/features/dashboard/components/ShareModal/ @grafana/sharing-squad
|
||||||
/public/app/features/dashboard/dashgrid/DashboardLibrary/ @grafana/sharing-squad
|
|
||||||
/public/app/features/manage-dashboards/components/SnapshotListTable.tsx @grafana/sharing-squad
|
/public/app/features/manage-dashboards/components/SnapshotListTable.tsx @grafana/sharing-squad
|
||||||
/pkg/services/dashboardsnapshots/ @grafana/sharing-squad
|
/pkg/services/dashboardsnapshots/ @grafana/sharing-squad
|
||||||
/public/app/features/explore/QueryLibrary/ @grafana/sharing-squad
|
/public/app/features/explore/QueryLibrary/ @grafana/sharing-squad
|
||||||
@@ -1171,8 +736,6 @@ eslint-suppressions.json @grafanabot
|
|||||||
# Feature toggles
|
# Feature toggles
|
||||||
/pkg/services/featuremgmt/ @grafana/grafana-backend-services-squad
|
/pkg/services/featuremgmt/ @grafana/grafana-backend-services-squad
|
||||||
|
|
||||||
# Data source migrations
|
|
||||||
/pkg/services/promtypemigration/ @grafana/partner-datasources @grafana/aws-datasources
|
|
||||||
|
|
||||||
# Kind definitions
|
# Kind definitions
|
||||||
/kinds/dashboard @grafana/dashboards-squad
|
/kinds/dashboard @grafana/dashboards-squad
|
||||||
@@ -1184,14 +747,11 @@ embed.go @grafana/grafana-as-code
|
|||||||
/pkg/kinds/ @grafana/grafana-as-code
|
/pkg/kinds/ @grafana/grafana-as-code
|
||||||
/pkg/registry/ @grafana/grafana-as-code
|
/pkg/registry/ @grafana/grafana-as-code
|
||||||
/pkg/registry/apis/ @grafana/grafana-app-platform-squad
|
/pkg/registry/apis/ @grafana/grafana-app-platform-squad
|
||||||
/pkg/registry/apis/folders @grafana/grafana-search-and-storage
|
|
||||||
/pkg/registry/apis/datasource @grafana/grafana-datasources-core-services
|
|
||||||
/pkg/registry/apis/query @grafana/grafana-datasources-core-services
|
/pkg/registry/apis/query @grafana/grafana-datasources-core-services
|
||||||
/pkg/registry/apis/secret @grafana/grafana-operator-experience-squad
|
/pkg/registry/apis/secret @grafana/grafana-operator-experience-squad
|
||||||
/pkg/registry/apis/userstorage @grafana/grafana-app-platform-squad @grafana/plugins-platform-backend
|
/pkg/registry/apis/userstorage @grafana/grafana-app-platform-squad @grafana/plugins-platform-backend
|
||||||
/pkg/registry/apps/advisor @grafana/plugins-platform-backend
|
/pkg/registry/apps/advisor @grafana/plugins-platform-backend
|
||||||
/pkg/registry/apps/alerting @grafana/alerting-backend
|
/pkg/registry/apps/alerting @grafana/alerting-backend
|
||||||
/pkg/registry/apps/plugins @grafana/plugins-platform-backend
|
|
||||||
/pkg/codegen/ @grafana/grafana-as-code
|
/pkg/codegen/ @grafana/grafana-as-code
|
||||||
/pkg/codegen/generators @grafana/grafana-as-code
|
/pkg/codegen/generators @grafana/grafana-as-code
|
||||||
/pkg/kinds/*/*_gen.go @grafana/grafana-as-code
|
/pkg/kinds/*/*_gen.go @grafana/grafana-as-code
|
||||||
@@ -1210,12 +770,10 @@ embed.go @grafana/grafana-as-code
|
|||||||
/.github/pr-checks.json @tolzhabayev
|
/.github/pr-checks.json @tolzhabayev
|
||||||
/.github/pr-commands.json @tolzhabayev
|
/.github/pr-commands.json @tolzhabayev
|
||||||
/.github/renovate.json5 @grafana/frontend-ops
|
/.github/renovate.json5 @grafana/frontend-ops
|
||||||
/.github/actions/check-jobs/action.yml @grafana/grafana-frontend-platform
|
|
||||||
/.github/actions/setup-enterprise/action.yml @grafana/grafana-backend-group
|
/.github/actions/setup-enterprise/action.yml @grafana/grafana-backend-group
|
||||||
/.github/actions/setup-grafana-bench/ @Proximyst
|
/.github/actions/setup-grafana-bench/ @Proximyst
|
||||||
/.github/actions/build-package @grafana/grafana-developer-enablement-squad
|
/.github/actions/build-package @grafana/grafana-developer-enablement-squad
|
||||||
/.github/actions/change-detection @grafana/grafana-developer-enablement-squad
|
/.github/actions/change-detection @grafana/grafana-developer-enablement-squad
|
||||||
/.github/actions/setup-node @grafana/grafana-frontend-platform
|
|
||||||
/.github/workflows/actionlint-format.txt @grafana/grafana-developer-enablement-squad
|
/.github/workflows/actionlint-format.txt @grafana/grafana-developer-enablement-squad
|
||||||
/.github/workflows/actionlint.yml @grafana/grafana-developer-enablement-squad
|
/.github/workflows/actionlint.yml @grafana/grafana-developer-enablement-squad
|
||||||
/.github/workflows/add-to-whats-new.yml @grafana/docs-tooling
|
/.github/workflows/add-to-whats-new.yml @grafana/docs-tooling
|
||||||
@@ -1238,7 +796,6 @@ embed.go @grafana/grafana-as-code
|
|||||||
/.github/workflows/commands.yml @torkelo
|
/.github/workflows/commands.yml @torkelo
|
||||||
/.github/workflows/community-release.yml @grafana/grafana-developer-enablement-squad
|
/.github/workflows/community-release.yml @grafana/grafana-developer-enablement-squad
|
||||||
/.github/workflows/detect-breaking-changes-* @grafana/plugins-platform-frontend
|
/.github/workflows/detect-breaking-changes-* @grafana/plugins-platform-frontend
|
||||||
/.github/workflows/detect-plugin-extension-changes.yml @grafana/plugins-platform-frontend
|
|
||||||
/.github/workflows/documentation-ci.yml @grafana/docs-tooling
|
/.github/workflows/documentation-ci.yml @grafana/docs-tooling
|
||||||
/.github/workflows/deploy-pr-preview.yml @grafana/docs-tooling
|
/.github/workflows/deploy-pr-preview.yml @grafana/docs-tooling
|
||||||
/.github/workflows/feature-toggles-ci.yml @grafana/docs-tooling
|
/.github/workflows/feature-toggles-ci.yml @grafana/docs-tooling
|
||||||
@@ -1259,7 +816,7 @@ embed.go @grafana/grafana-as-code
|
|||||||
/.github/workflows/publish-technical-documentation-release.yml @grafana/docs-tooling
|
/.github/workflows/publish-technical-documentation-release.yml @grafana/docs-tooling
|
||||||
/.github/workflows/scripts/json-file-to-job-output.js @grafana/plugins-platform-frontend
|
/.github/workflows/scripts/json-file-to-job-output.js @grafana/plugins-platform-frontend
|
||||||
/.github/workflows/stale.yml @grafana/grafana-developer-enablement-squad
|
/.github/workflows/stale.yml @grafana/grafana-developer-enablement-squad
|
||||||
/.github/workflows/storybook-a11y.yml @grafana/grafana-frontend-platform
|
/.github/workflows/storybook-verification.yml @grafana/grafana-frontend-platform
|
||||||
/.github/workflows/update-make-docs.yml @grafana/docs-tooling
|
/.github/workflows/update-make-docs.yml @grafana/docs-tooling
|
||||||
/.github/workflows/scripts/kinds/verify-kinds.go @grafana/platform-monitoring
|
/.github/workflows/scripts/kinds/verify-kinds.go @grafana/platform-monitoring
|
||||||
/.github/workflows/scripts/create-security-branch/create-security-branch.sh @grafana/grafana-developer-enablement-squad
|
/.github/workflows/scripts/create-security-branch/create-security-branch.sh @grafana/grafana-developer-enablement-squad
|
||||||
@@ -1268,6 +825,7 @@ embed.go @grafana/grafana-as-code
|
|||||||
/.github/workflows/verify-kinds.yml @grafana/platform-monitoring
|
/.github/workflows/verify-kinds.yml @grafana/platform-monitoring
|
||||||
/.github/workflows/dashboards-issue-add-label.yml @grafana/dashboards-squad
|
/.github/workflows/dashboards-issue-add-label.yml @grafana/dashboards-squad
|
||||||
/.github/workflows/run-schema-v2-e2e.yml @grafana/dashboards-squad
|
/.github/workflows/run-schema-v2-e2e.yml @grafana/dashboards-squad
|
||||||
|
/.github/workflows/e2e-dashboard-new-layouts.yml @grafana/dashboards-squad
|
||||||
/.github/workflows/run-dashboard-search-e2e.yml @grafana/grafana-search-and-storage
|
/.github/workflows/run-dashboard-search-e2e.yml @grafana/grafana-search-and-storage
|
||||||
/.github/workflows/trigger-dashboard-search-e2e.yml @grafana/grafana-search-and-storage
|
/.github/workflows/trigger-dashboard-search-e2e.yml @grafana/grafana-search-and-storage
|
||||||
/.github/workflows/ephemeral-instances-pr-comment.yml @grafana/grafana-operator-experience-squad
|
/.github/workflows/ephemeral-instances-pr-comment.yml @grafana/grafana-operator-experience-squad
|
||||||
@@ -1279,7 +837,6 @@ embed.go @grafana/grafana-as-code
|
|||||||
/.github/workflows/i18n-verify.yml @grafana/grafana-frontend-platform
|
/.github/workflows/i18n-verify.yml @grafana/grafana-frontend-platform
|
||||||
/.github/workflows/deploy-storybook-preview.yml @grafana/grafana-frontend-platform
|
/.github/workflows/deploy-storybook-preview.yml @grafana/grafana-frontend-platform
|
||||||
/.github/workflows/scripts/crowdin/create-tasks.ts @grafana/grafana-frontend-platform
|
/.github/workflows/scripts/crowdin/create-tasks.ts @grafana/grafana-frontend-platform
|
||||||
/.github/workflows/scripts/publish-frontend-metrics.mts @grafana/grafana-frontend-platform
|
|
||||||
/.github/workflows/pr-go-workspace-check.yml @grafana/grafana-app-platform-squad
|
/.github/workflows/pr-go-workspace-check.yml @grafana/grafana-app-platform-squad
|
||||||
/.github/workflows/pr-dependabot-update-go-workspace.yml @grafana/grafana-app-platform-squad
|
/.github/workflows/pr-dependabot-update-go-workspace.yml @grafana/grafana-app-platform-squad
|
||||||
/.github/workflows/pr-k8s-codegen-check.yml @grafana/grafana-app-platform-squad
|
/.github/workflows/pr-k8s-codegen-check.yml @grafana/grafana-app-platform-squad
|
||||||
@@ -1289,7 +846,6 @@ embed.go @grafana/grafana-as-code
|
|||||||
/.github/workflows/changelog.yml @zserge
|
/.github/workflows/changelog.yml @zserge
|
||||||
/.github/workflows/shellcheck.yml @grafana/grafana-developer-enablement-squad
|
/.github/workflows/shellcheck.yml @grafana/grafana-developer-enablement-squad
|
||||||
/.github/workflows/release-build.yml @grafana/grafana-developer-enablement-squad
|
/.github/workflows/release-build.yml @grafana/grafana-developer-enablement-squad
|
||||||
/.github/workflows/cleanup-branches.yml @grafana/grafana-developer-enablement-squad
|
|
||||||
/.github/workflows/publish-artifact.yml @grafana/grafana-developer-enablement-squad
|
/.github/workflows/publish-artifact.yml @grafana/grafana-developer-enablement-squad
|
||||||
/.github/actions/changelog @zserge
|
/.github/actions/changelog @zserge
|
||||||
/.github/workflows/swagger-gen.yml @grafana/grafana-backend-group
|
/.github/workflows/swagger-gen.yml @grafana/grafana-backend-group
|
||||||
@@ -1298,16 +854,9 @@ embed.go @grafana/grafana-as-code
|
|||||||
/.github/workflows/analytics-events-report.yml @grafana/grafana-frontend-platform
|
/.github/workflows/analytics-events-report.yml @grafana/grafana-frontend-platform
|
||||||
/.github/workflows/pr-e2e-tests.yml @grafana/grafana-developer-enablement-squad
|
/.github/workflows/pr-e2e-tests.yml @grafana/grafana-developer-enablement-squad
|
||||||
/.github/workflows/skye-add-to-project.yml @grafana/grafana-frontend-platform
|
/.github/workflows/skye-add-to-project.yml @grafana/grafana-frontend-platform
|
||||||
/.github/workflows/frontend-perf-tests.yaml @grafana/grafana-frontend-platform
|
|
||||||
/.github/workflows/release-npm.yml @grafana/grafana-frontend-platform
|
|
||||||
/.github/workflows/scripts/determine-npm-tag.sh @grafana/grafana-frontend-platform
|
|
||||||
/.github/workflows/scripts/validate-commit-in-head.sh @grafana/grafana-frontend-platform
|
|
||||||
/.github/zizmor.yml @grafana/grafana-developer-enablement-squad
|
/.github/zizmor.yml @grafana/grafana-developer-enablement-squad
|
||||||
/.github/license_finder.yaml @bergquist
|
/.github/license_finder.yaml @bergquist
|
||||||
/.github/actionlint.yaml @grafana/grafana-developer-enablement-squad
|
/.github/actionlint.yaml @grafana/grafana-developer-enablement-squad
|
||||||
/.github/workflows/pr-test-docker.yml @grafana/grafana-developer-enablement-squad
|
|
||||||
/.github/workflows/update-schema-types.yml @grafana/plugins-platform-frontend
|
|
||||||
/.github/workflows/defaults-ini-docs-reminder.yml @grafana/docs-tooling @jtvdez
|
|
||||||
|
|
||||||
# Generated files not requiring owner approval
|
# Generated files not requiring owner approval
|
||||||
/packages/grafana-data/src/types/featureToggles.gen.ts @grafanabot
|
/packages/grafana-data/src/types/featureToggles.gen.ts @grafanabot
|
||||||
@@ -1327,7 +876,3 @@ embed.go @grafana/grafana-as-code
|
|||||||
/conf/provisioning/datasources/ @grafana/plugins-platform-backend
|
/conf/provisioning/datasources/ @grafana/plugins-platform-backend
|
||||||
/conf/provisioning/plugins/ @grafana/plugins-platform-backend
|
/conf/provisioning/plugins/ @grafana/plugins-platform-backend
|
||||||
/conf/provisioning/sample/ @grafana/grafana-git-ui-sync-team
|
/conf/provisioning/sample/ @grafana/grafana-git-ui-sync-team
|
||||||
|
|
||||||
# Security
|
|
||||||
/relyance.yaml @grafana/security-team
|
|
||||||
/.github/workflows/relyance-scan.yml @grafana/security-team
|
|
||||||
|
|||||||
20
.github/actionlint.yaml
vendored
20
.github/actionlint.yaml
vendored
@@ -6,23 +6,3 @@ self-hosted-runner:
|
|||||||
- github-hosted-ubuntu-x64-small
|
- github-hosted-ubuntu-x64-small
|
||||||
- github-hosted-ubuntu-x64-large
|
- github-hosted-ubuntu-x64-large
|
||||||
- github-hosted-windows-x64-large
|
- github-hosted-windows-x64-large
|
||||||
- ubuntu-x64
|
|
||||||
- ubuntu-x64-io
|
|
||||||
- ubuntu-x64-small
|
|
||||||
- ubuntu-x64-small-io
|
|
||||||
- ubuntu-x64-large
|
|
||||||
- ubuntu-x64-large-io
|
|
||||||
- ubuntu-x64-xlarge
|
|
||||||
- ubuntu-x64-xlarge-io
|
|
||||||
- ubuntu-x64-2xlarge
|
|
||||||
- ubuntu-x64-2xlarge-io
|
|
||||||
- ubuntu-arm64
|
|
||||||
- ubuntu-arm64-io
|
|
||||||
- ubuntu-arm64-small
|
|
||||||
- ubuntu-arm64-small-io
|
|
||||||
- ubuntu-arm64-large
|
|
||||||
- ubuntu-arm64-large-io
|
|
||||||
- ubuntu-arm64-xlarge
|
|
||||||
- ubuntu-arm64-xlarge-io
|
|
||||||
- ubuntu-arm64-2xlarge
|
|
||||||
- ubuntu-arm64-2xlarge-io
|
|
||||||
12
.github/actions/build-package/action.yml
vendored
12
.github/actions/build-package/action.yml
vendored
@@ -82,14 +82,6 @@ inputs:
|
|||||||
description: Docker registry of produced images
|
description: Docker registry of produced images
|
||||||
default: docker.io
|
default: docker.io
|
||||||
required: false
|
required: false
|
||||||
ubuntu-base:
|
|
||||||
type: string
|
|
||||||
default: 'ubuntu:22.04'
|
|
||||||
required: false
|
|
||||||
alpine-base:
|
|
||||||
type: string
|
|
||||||
default: 'alpine:3.22'
|
|
||||||
required: false
|
|
||||||
outputs:
|
outputs:
|
||||||
dist-dir:
|
dist-dir:
|
||||||
description: Directory where artifacts are placed
|
description: Directory where artifacts are placed
|
||||||
@@ -134,13 +126,11 @@ runs:
|
|||||||
UBUNTU_TAG_FORMAT: ${{ inputs.docker-tag-format-ubuntu }}
|
UBUNTU_TAG_FORMAT: ${{ inputs.docker-tag-format-ubuntu }}
|
||||||
CHECKSUM: ${{ inputs.checksum }}
|
CHECKSUM: ${{ inputs.checksum }}
|
||||||
VERIFY: ${{ inputs.verify }}
|
VERIFY: ${{ inputs.verify }}
|
||||||
ALPINE_BASE: ${{ inputs.alpine-base }}
|
|
||||||
UBUNTU_BASE: ${{ inputs.ubuntu-base }}
|
|
||||||
with:
|
with:
|
||||||
verb: run
|
verb: run
|
||||||
dagger-flags: --verbose=0
|
dagger-flags: --verbose=0
|
||||||
version: 0.18.8
|
version: 0.18.8
|
||||||
args: go run -C ${GRAFANA_PATH} ./pkg/build/cmd artifacts --artifacts ${ARTIFACTS} --grafana-dir=${GRAFANA_PATH} --alpine-base=${ALPINE_BASE} --ubuntu-base=${UBUNTU_BASE} --enterprise-dir=${ENTERPRISE_PATH} --version=${VERSION} --patches-repo=${PATCHES_REPO} --patches-ref=${PATCHES_REF} --patches-path=${PATCHES_PATH} --build-id=${BUILD_ID} --tag-format="${TAG_FORMAT}" --ubuntu-tag-format="${UBUNTU_TAG_FORMAT}" --org=${DOCKER_ORG} --registry=${DOCKER_REGISTRY} --checksum=${CHECKSUM} --verify=${VERIFY} > $OUTFILE
|
args: go run -C ${GRAFANA_PATH} ./pkg/build/cmd artifacts --artifacts ${ARTIFACTS} --grafana-dir=${GRAFANA_PATH} --enterprise-dir=${ENTERPRISE_PATH} --version=${VERSION} --patches-repo=${PATCHES_REPO} --patches-ref=${PATCHES_REF} --patches-path=${PATCHES_PATH} --build-id=${BUILD_ID} --tag-format="${TAG_FORMAT}" --ubuntu-tag-format="${UBUNTU_TAG_FORMAT}" --org=${DOCKER_ORG} --registry=${DOCKER_REGISTRY} --checksum=${CHECKSUM} --verify=${VERIFY} > $OUTFILE
|
||||||
- id: output
|
- id: output
|
||||||
shell: bash
|
shell: bash
|
||||||
env:
|
env:
|
||||||
|
|||||||
32
.github/actions/change-detection/action.yml
vendored
32
.github/actions/change-detection/action.yml
vendored
@@ -19,21 +19,12 @@ outputs:
|
|||||||
value: ${{ steps.changed-files.outputs.e2e_any_changed == 'true' ||
|
value: ${{ steps.changed-files.outputs.e2e_any_changed == 'true' ||
|
||||||
steps.changed-files.outputs.backend_any_changed == 'true' ||
|
steps.changed-files.outputs.backend_any_changed == 'true' ||
|
||||||
steps.changed-files.outputs.frontend_any_changed == 'true' || 'true' }}
|
steps.changed-files.outputs.frontend_any_changed == 'true' || 'true' }}
|
||||||
e2e-cloud-plugins:
|
|
||||||
description: Whether the cloud plugins code or tests have changed in any way
|
|
||||||
value: ${{ steps.changed-files.outputs.e2e_cloud_plugins_any_changed || 'true' }}
|
|
||||||
dev-tooling:
|
dev-tooling:
|
||||||
description: Whether the dev tooling or self have changed in any way
|
description: Whether the dev tooling or self have changed in any way
|
||||||
value: ${{ steps.changed-files.outputs.dev_tooling_any_changed || 'true' }}
|
value: ${{ steps.changed-files.outputs.dev_tooling_any_changed || 'true' }}
|
||||||
docs:
|
docs:
|
||||||
description: Whether the docs or self have changed in any way
|
description: Whether the docs or self have changed in any way
|
||||||
value: ${{ steps.changed-files.outputs.docs_any_changed || 'true' }}
|
value: ${{ steps.changed-files.outputs.docs_any_changed || 'true' }}
|
||||||
dockerfile:
|
|
||||||
description: Whether the dockerfile or self have changed in any way
|
|
||||||
value: ${{ steps.changed-files.outputs.dockerfile_any_changed || 'true' }}
|
|
||||||
devenv:
|
|
||||||
description: Whether the devenv or self have changed in any way
|
|
||||||
value: ${{ steps.changed-files.outputs.devenv_any_changed || 'true' }}
|
|
||||||
runs:
|
runs:
|
||||||
using: composite
|
using: composite
|
||||||
steps:
|
steps:
|
||||||
@@ -48,8 +39,6 @@ runs:
|
|||||||
self:
|
self:
|
||||||
- '.github/actions/change-detection/**'
|
- '.github/actions/change-detection/**'
|
||||||
- '${{ inputs.self }}'
|
- '${{ inputs.self }}'
|
||||||
dockerfile:
|
|
||||||
- 'Dockerfile'
|
|
||||||
backend:
|
backend:
|
||||||
- '!*.md'
|
- '!*.md'
|
||||||
- '!docs/**'
|
- '!docs/**'
|
||||||
@@ -58,10 +47,6 @@ runs:
|
|||||||
- '.github/actions/checkout/**'
|
- '.github/actions/checkout/**'
|
||||||
- '**/go.mod'
|
- '**/go.mod'
|
||||||
- '**/go.sum'
|
- '**/go.sum'
|
||||||
- 'go.mod'
|
|
||||||
- 'go.sum'
|
|
||||||
- 'go.work'
|
|
||||||
- 'go.work.sum'
|
|
||||||
- '**.go'
|
- '**.go'
|
||||||
- 'pkg/**'
|
- 'pkg/**'
|
||||||
- '!pkg/**.md'
|
- '!pkg/**.md'
|
||||||
@@ -89,6 +74,7 @@ runs:
|
|||||||
- '.github/actions/change-detection/**'
|
- '.github/actions/change-detection/**'
|
||||||
- '**.cue'
|
- '**.cue'
|
||||||
- '.prettier*'
|
- '.prettier*'
|
||||||
|
- '.betterer*'
|
||||||
- '.yarnrc.yml'
|
- '.yarnrc.yml'
|
||||||
- 'eslint.config.js'
|
- 'eslint.config.js'
|
||||||
- 'jest.config.js'
|
- 'jest.config.js'
|
||||||
@@ -105,17 +91,13 @@ runs:
|
|||||||
- 'proto/**'
|
- 'proto/**'
|
||||||
- '**/Makefile'
|
- '**/Makefile'
|
||||||
- 'scripts/**'
|
- 'scripts/**'
|
||||||
|
- '!scripts/drone/**'
|
||||||
- '!**.md'
|
- '!**.md'
|
||||||
- '.github/actions/change-detection/**'
|
- '.github/actions/change-detection/**'
|
||||||
- '**.cue'
|
- '**.cue'
|
||||||
- 'conf/**'
|
- 'conf/**'
|
||||||
- 'cypress.config.js'
|
- 'cypress.config.js'
|
||||||
- '${{ inputs.self }}'
|
- '${{ inputs.self }}'
|
||||||
e2e_cloud_plugins:
|
|
||||||
- 'pkg/tsdb/azuremonitor/**'
|
|
||||||
- 'public/app/plugins/datasource/azuremonitor/**'
|
|
||||||
- 'e2e-playwright/cloud-plugins-suite/azure-monitor.spec.ts'
|
|
||||||
- '${{ inputs.self }}'
|
|
||||||
dev_tooling:
|
dev_tooling:
|
||||||
- '.github/actions/setup-enterprise/**'
|
- '.github/actions/setup-enterprise/**'
|
||||||
- '.github/actions/checkout/**'
|
- '.github/actions/checkout/**'
|
||||||
@@ -129,6 +111,7 @@ runs:
|
|||||||
- 'scripts/**'
|
- 'scripts/**'
|
||||||
- '!**.md'
|
- '!**.md'
|
||||||
- '.citools/**'
|
- '.citools/**'
|
||||||
|
- '.bingo/**'
|
||||||
- '.github/actions/change-detection/**'
|
- '.github/actions/change-detection/**'
|
||||||
- '${{ inputs.self }}'
|
- '${{ inputs.self }}'
|
||||||
docs:
|
docs:
|
||||||
@@ -139,9 +122,6 @@ runs:
|
|||||||
- '.vale.ini'
|
- '.vale.ini'
|
||||||
- '.github/actions/change-detection/**'
|
- '.github/actions/change-detection/**'
|
||||||
- '${{ inputs.self }}'
|
- '${{ inputs.self }}'
|
||||||
devenv:
|
|
||||||
- 'devenv/**'
|
|
||||||
- '${{ inputs.self }}'
|
|
||||||
- name: Print all change groups
|
- name: Print all change groups
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
@@ -155,13 +135,7 @@ runs:
|
|||||||
echo " --> ${{ steps.changed-files.outputs.e2e_all_changed_files }}"
|
echo " --> ${{ steps.changed-files.outputs.e2e_all_changed_files }}"
|
||||||
echo " --> ${{ steps.changed-files.outputs.backend_all_changed_files }}"
|
echo " --> ${{ steps.changed-files.outputs.backend_all_changed_files }}"
|
||||||
echo " --> ${{ steps.changed-files.outputs.frontend_all_changed_files }}"
|
echo " --> ${{ steps.changed-files.outputs.frontend_all_changed_files }}"
|
||||||
echo "E2E cloud plugins: ${{ steps.changed-files.outputs.e2e_cloud_plugins_any_changed || 'true' }}"
|
|
||||||
echo " --> ${{ steps.changed-files.outputs.e2e_cloud_plugins_all_changed_files }}"
|
|
||||||
echo "Dev Tooling: ${{ steps.changed-files.outputs.dev_tooling_any_changed || 'true' }}"
|
echo "Dev Tooling: ${{ steps.changed-files.outputs.dev_tooling_any_changed || 'true' }}"
|
||||||
echo " --> ${{ steps.changed-files.outputs.dev_tooling_all_changed_files }}"
|
echo " --> ${{ steps.changed-files.outputs.dev_tooling_all_changed_files }}"
|
||||||
echo "Docs: ${{ steps.changed-files.outputs.docs_any_changed || 'true' }}"
|
echo "Docs: ${{ steps.changed-files.outputs.docs_any_changed || 'true' }}"
|
||||||
echo " --> ${{ steps.changed-files.outputs.docs_all_changed_files }}"
|
echo " --> ${{ steps.changed-files.outputs.docs_all_changed_files }}"
|
||||||
echo "Dockerfile: ${{ steps.changed-files.outputs.dockerfile_any_changed || 'true' }}"
|
|
||||||
echo " --> ${{ steps.changed-files.outputs.dockerfile_all_changed_files }}"
|
|
||||||
echo "devenv: ${{ steps.changed-files.outputs.devenv_any_changed || 'true' }}"
|
|
||||||
echo " --> ${{ steps.changed-files.outputs.devenv_all_changed_files }}"
|
|
||||||
|
|||||||
48
.github/actions/check-jobs/action.yml
vendored
48
.github/actions/check-jobs/action.yml
vendored
@@ -1,48 +0,0 @@
|
|||||||
name: Check jobs results
|
|
||||||
description: Checks if any jobs have failed and exits with error if failures are found. Use to check the results of matrix test runs.
|
|
||||||
inputs:
|
|
||||||
needs:
|
|
||||||
description: JSON string containing the needs context from the workflow
|
|
||||||
required: true
|
|
||||||
failure-message:
|
|
||||||
description: Custom message to display when failures are found
|
|
||||||
required: false
|
|
||||||
default: "One or more jobs have failed"
|
|
||||||
success-message:
|
|
||||||
description: Custom message to display when all jobs pass
|
|
||||||
required: false
|
|
||||||
default: "All jobs passed successfully"
|
|
||||||
outputs:
|
|
||||||
any-failed:
|
|
||||||
description: Whether any jobs failed
|
|
||||||
value: ${{ steps.check-jobs.outputs.any-failed }}
|
|
||||||
|
|
||||||
runs:
|
|
||||||
using: "composite"
|
|
||||||
steps:
|
|
||||||
- name: Check test suites
|
|
||||||
id: check-jobs
|
|
||||||
shell: bash
|
|
||||||
env:
|
|
||||||
NEEDS: ${{ inputs.needs }}
|
|
||||||
FAILURE_MSG: ${{ inputs.failure-message }}
|
|
||||||
SUCCESS_MSG: ${{ inputs.success-message }}
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
# Print the needs context, debugging
|
|
||||||
echo "$NEEDS" | jq
|
|
||||||
|
|
||||||
# Extract failures
|
|
||||||
FAILURES="$(echo "$NEEDS" | jq 'with_entries(select(.value.result == "failure")) | map_values(.result)')"
|
|
||||||
|
|
||||||
# Check if there are any failures
|
|
||||||
if [ "$(echo "$FAILURES" | jq '. | length')" != "0" ]; then
|
|
||||||
echo "❌ $FAILURE_MSG"
|
|
||||||
echo "Failed suites:"
|
|
||||||
echo "$FAILURES" | jq -r 'to_entries[] | "- \(.key): \(.value)"'
|
|
||||||
echo "any-failed=true" >> "$GITHUB_OUTPUT"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "✅ $SUCCESS_MSG"
|
|
||||||
34
.github/actions/setup-enterprise/action.yml
vendored
34
.github/actions/setup-enterprise/action.yml
vendored
@@ -33,29 +33,10 @@ runs:
|
|||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ steps.generate_token.outputs.token }}
|
GH_TOKEN: ${{ steps.generate_token.outputs.token }}
|
||||||
run: |
|
run: |
|
||||||
RETRIES="5"
|
git clone https://x-access-token:${GH_TOKEN}@github.com/grafana/grafana-enterprise.git ../grafana-enterprise;
|
||||||
|
|
||||||
for i in $(seq 1 $RETRIES); do
|
|
||||||
echo "Attempt $i to clone..."
|
|
||||||
|
|
||||||
if git clone https://x-access-token:${GH_TOKEN}@github.com/grafana/grafana-enterprise.git ../grafana-enterprise; then
|
|
||||||
echo "Clone succeeded on attempt $i"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $i -eq $RETRIES ]; then
|
|
||||||
echo "Clone failed after $RETRIES attempts, failing pipeline."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
sleep "$i"
|
|
||||||
done
|
|
||||||
|
|
||||||
cd ../grafana-enterprise
|
cd ../grafana-enterprise
|
||||||
|
|
||||||
for i in $(seq 1 $RETRIES); do
|
|
||||||
echo "Attempt $i to checkout..."
|
|
||||||
|
|
||||||
if git checkout ${GITHUB_HEAD_REF}; then
|
if git checkout ${GITHUB_HEAD_REF}; then
|
||||||
echo "checked out ${GITHUB_HEAD_REF}"
|
echo "checked out ${GITHUB_HEAD_REF}"
|
||||||
elif git checkout ${GITHUB_BASE_REF}; then
|
elif git checkout ${GITHUB_BASE_REF}; then
|
||||||
@@ -64,17 +45,4 @@ runs:
|
|||||||
git checkout main
|
git checkout main
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
echo "Checkout succeeded, breaking retry loop"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $i -eq $RETRIES ]; then
|
|
||||||
echo "Checkout failed after $RETRIES attempts, failing pipeline."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
sleep "$i"
|
|
||||||
done
|
|
||||||
|
|
||||||
QUIET=1 ./build.sh
|
QUIET=1 ./build.sh
|
||||||
|
|||||||
38
.github/commands.json
vendored
38
.github/commands.json
vendored
@@ -136,7 +136,7 @@
|
|||||||
"name": "datasource/Tempo",
|
"name": "datasource/Tempo",
|
||||||
"action": "addToProject",
|
"action": "addToProject",
|
||||||
"addToProject": {
|
"addToProject": {
|
||||||
"url": "https://github.com/orgs/grafana/projects/457"
|
"url": "https://github.com/orgs/grafana/projects/221"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -144,7 +144,7 @@
|
|||||||
"name": "datasource/grafana-pyroscope",
|
"name": "datasource/grafana-pyroscope",
|
||||||
"action": "addToProject",
|
"action": "addToProject",
|
||||||
"addToProject": {
|
"addToProject": {
|
||||||
"url": "https://github.com/orgs/grafana/projects/457"
|
"url": "https://github.com/orgs/grafana/projects/221"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -152,7 +152,7 @@
|
|||||||
"name": "datasource/Parca",
|
"name": "datasource/Parca",
|
||||||
"action": "addToProject",
|
"action": "addToProject",
|
||||||
"addToProject": {
|
"addToProject": {
|
||||||
"url": "https://github.com/orgs/grafana/projects/457"
|
"url": "https://github.com/orgs/grafana/projects/221"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -168,7 +168,7 @@
|
|||||||
"name": "datasource/Jaeger",
|
"name": "datasource/Jaeger",
|
||||||
"action": "addToProject",
|
"action": "addToProject",
|
||||||
"addToProject": {
|
"addToProject": {
|
||||||
"url": "https://github.com/orgs/grafana/projects/457"
|
"url": "https://github.com/orgs/grafana/projects/221"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -176,7 +176,7 @@
|
|||||||
"name": "datasource/Zipkin",
|
"name": "datasource/Zipkin",
|
||||||
"action": "addToProject",
|
"action": "addToProject",
|
||||||
"addToProject": {
|
"addToProject": {
|
||||||
"url": "https://github.com/orgs/grafana/projects/457"
|
"url": "https://github.com/orgs/grafana/projects/221"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -584,7 +584,7 @@
|
|||||||
"name": "area/public-dashboards",
|
"name": "area/public-dashboards",
|
||||||
"action": "addToProject",
|
"action": "addToProject",
|
||||||
"addToProject": {
|
"addToProject": {
|
||||||
"url": "https://github.com/orgs/grafana/projects/467"
|
"url": "https://github.com/orgs/grafana/projects/482"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -696,7 +696,7 @@
|
|||||||
"name": "area/navigation",
|
"name": "area/navigation",
|
||||||
"action": "addToProject",
|
"action": "addToProject",
|
||||||
"addToProject": {
|
"addToProject": {
|
||||||
"url": "https://github.com/orgs/grafana/projects/911"
|
"url": "https://github.com/orgs/grafana/projects/78"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -704,7 +704,7 @@
|
|||||||
"name": "area/search",
|
"name": "area/search",
|
||||||
"action": "addToProject",
|
"action": "addToProject",
|
||||||
"addToProject": {
|
"addToProject": {
|
||||||
"url": "https://github.com/orgs/grafana/projects/911"
|
"url": "https://github.com/orgs/grafana/projects/78"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -752,7 +752,7 @@
|
|||||||
"name": "area/image-rendering",
|
"name": "area/image-rendering",
|
||||||
"action": "addToProject",
|
"action": "addToProject",
|
||||||
"addToProject": {
|
"addToProject": {
|
||||||
"url": "https://github.com/orgs/grafana/projects/467"
|
"url": "https://github.com/orgs/grafana/projects/482"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -947,14 +947,6 @@
|
|||||||
"url": "https://github.com/orgs/grafana/projects/202"
|
"url": "https://github.com/orgs/grafana/projects/202"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"type": "label",
|
|
||||||
"name": "area/gitsync",
|
|
||||||
"action": "addToProject",
|
|
||||||
"addToProject": {
|
|
||||||
"url": "https://github.com/orgs/grafana/projects/792"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"type": "label",
|
"type": "label",
|
||||||
"name": "area/backend/db/sqlite",
|
"name": "area/backend/db/sqlite",
|
||||||
@@ -1008,7 +1000,7 @@
|
|||||||
"name": "area/frontend/login",
|
"name": "area/frontend/login",
|
||||||
"action": "addToProject",
|
"action": "addToProject",
|
||||||
"addToProject": {
|
"addToProject": {
|
||||||
"url": "https://github.com/orgs/grafana/projects/911"
|
"url": "https://github.com/orgs/grafana/projects/78"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1040,7 +1032,7 @@
|
|||||||
"name": "area/panel/dashboard-list",
|
"name": "area/panel/dashboard-list",
|
||||||
"action": "addToProject",
|
"action": "addToProject",
|
||||||
"addToProject": {
|
"addToProject": {
|
||||||
"url": "https://github.com/orgs/grafana/projects/911"
|
"url": "https://github.com/orgs/grafana/projects/202"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1226,13 +1218,5 @@
|
|||||||
"addToProject": {
|
"addToProject": {
|
||||||
"url": "https://github.com/orgs/grafana/projects/69"
|
"url": "https://github.com/orgs/grafana/projects/69"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "label",
|
|
||||||
"name": "area/suggestions",
|
|
||||||
"action": "addToProject",
|
|
||||||
"addToProject": {
|
|
||||||
"url": "https://github.com/orgs/grafana/projects/56"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
47
.github/dependabot.yml
vendored
47
.github/dependabot.yml
vendored
@@ -1,65 +1,32 @@
|
|||||||
version: 2
|
version: 2
|
||||||
updates:
|
updates:
|
||||||
- package-ecosystem: "github-actions"
|
- package-ecosystem: "github-actions"
|
||||||
commit-message:
|
|
||||||
prefix: deps(actions)
|
|
||||||
directory: "/"
|
directory: "/"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
- package-ecosystem: "gomod"
|
- package-ecosystem: "gomod"
|
||||||
commit-message:
|
|
||||||
prefix: deps(go)
|
|
||||||
directories:
|
directories:
|
||||||
- "/"
|
- "/"
|
||||||
- "/apps/advisor"
|
|
||||||
- "/apps/alerting/alertenrichment"
|
|
||||||
- "/apps/alerting/notifications"
|
|
||||||
- "/apps/alerting/rules"
|
|
||||||
- "/apps/correlations"
|
|
||||||
- "/apps/dashboard"
|
|
||||||
- "/apps/folder"
|
|
||||||
- "/apps/iam"
|
|
||||||
- "/apps/investigations"
|
|
||||||
- "/apps/playlist"
|
- "/apps/playlist"
|
||||||
- "/apps/plugins"
|
- "/apps/investigations"
|
||||||
- "/apps/preferences"
|
|
||||||
- "/apps/provisioning"
|
|
||||||
- "/apps/scope"
|
|
||||||
- "/apps/secret"
|
|
||||||
- "/apps/shorturl"
|
|
||||||
- "/hack"
|
|
||||||
- "/pkg/aggregator"
|
- "/pkg/aggregator"
|
||||||
- "/pkg/apimachinery"
|
- "/pkg/apimachinery"
|
||||||
|
- "/pkg/apis/folder"
|
||||||
|
- "/pkg/apis/secret"
|
||||||
- "/pkg/apiserver"
|
- "/pkg/apiserver"
|
||||||
- "/pkg/build"
|
- "/pkg/build"
|
||||||
- "/pkg/build/wire"
|
- "/pkg/build/wire"
|
||||||
- "/pkg/codegen"
|
|
||||||
- "/pkg/plugins/codegen"
|
|
||||||
- "/pkg/promlib"
|
- "/pkg/promlib"
|
||||||
- "/pkg/semconv"
|
- "/pkg/semconv"
|
||||||
|
- "/pkg/storage/unified/apistore"
|
||||||
|
- "/pkg/storage/unified/resource"
|
||||||
- "/pkg/util/xorm"
|
- "/pkg/util/xorm"
|
||||||
- "/scripts/go-workspace"
|
|
||||||
- "/scripts/modowners"
|
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
time: "02:00"
|
time: "02:00"
|
||||||
timezone: Etc/UTC
|
timezone: Etc/UTC
|
||||||
open-pull-requests-limit: 20
|
open-pull-requests-limit: 10
|
||||||
# group some updates together for easier review
|
|
||||||
groups:
|
|
||||||
go.opentelemetry.io:
|
|
||||||
patterns:
|
|
||||||
- "go.opentelemetry.io/*"
|
|
||||||
k8s.io:
|
|
||||||
patterns:
|
|
||||||
- "k8s.io/*"
|
|
||||||
aws-sdk-go:
|
|
||||||
patterns:
|
|
||||||
- "github.com/aws/aws-sdk-go*"
|
|
||||||
- "github.com/aws/smithy-go"
|
|
||||||
- package-ecosystem: "docker"
|
- package-ecosystem: "docker"
|
||||||
commit-message:
|
|
||||||
prefix: deps(docker)
|
|
||||||
directories:
|
directories:
|
||||||
- "/"
|
- "/"
|
||||||
- "/packaging/docker/custom"
|
- "/packaging/docker/custom"
|
||||||
@@ -68,4 +35,4 @@ updates:
|
|||||||
interval: "daily"
|
interval: "daily"
|
||||||
time: "02:00"
|
time: "02:00"
|
||||||
timezone: Etc/UTC
|
timezone: Etc/UTC
|
||||||
open-pull-requests-limit: 20
|
open-pull-requests-limit: 10
|
||||||
|
|||||||
1
.github/issue-opened.json
vendored
1
.github/issue-opened.json
vendored
@@ -5,6 +5,7 @@
|
|||||||
"org": "grafana"
|
"org": "grafana"
|
||||||
},
|
},
|
||||||
"noLabels": true,
|
"noLabels": true,
|
||||||
|
"addLabel": "internal",
|
||||||
"comment": " please add one or more appropriate labels. Here are some tips:\r\n\r\n- if you are making an issue, TODO, or reminder for yourself or your team, please add one label that best describes the product or feature area. Please also add the issue to your project board. :rocket:\r\n\r\n- if you are making an issue for any other reason (docs typo, you found a bug, etc), please add at least one label that best describes the product or feature that you are discussing (e.g. `area/alerting`, `datasource/loki`, `type/docs`, `type/bug`, etc). [Our issue triage](https://github.com/grafana/grafana/blob/main/contribute/ISSUE_TRIAGE.md#3-categorize-an-issue) doc also provides additional guidance on labeling. :rocket:\r\n\r\n Thank you! :heart:"
|
"comment": " please add one or more appropriate labels. Here are some tips:\r\n\r\n- if you are making an issue, TODO, or reminder for yourself or your team, please add one label that best describes the product or feature area. Please also add the issue to your project board. :rocket:\r\n\r\n- if you are making an issue for any other reason (docs typo, you found a bug, etc), please add at least one label that best describes the product or feature that you are discussing (e.g. `area/alerting`, `datasource/loki`, `type/docs`, `type/bug`, etc). [Our issue triage](https://github.com/grafana/grafana/blob/main/contribute/ISSUE_TRIAGE.md#3-categorize-an-issue) doc also provides additional guidance on labeling. :rocket:\r\n\r\n Thank you! :heart:"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
2
.github/license_finder.yaml
vendored
2
.github/license_finder.yaml
vendored
@@ -99,7 +99,7 @@
|
|||||||
:versions: []
|
:versions: []
|
||||||
:when: 2025-05-03 13:10:00.000000000 Z
|
:when: 2025-05-03 13:10:00.000000000 Z
|
||||||
- - :license
|
- - :license
|
||||||
- github.com/grafana/grafana/apps/secret
|
- github.com/grafana/grafana/pkg/apis/secret
|
||||||
- unknown
|
- unknown
|
||||||
- :who: Carl Bergquist
|
- :who: Carl Bergquist
|
||||||
:why: repository is owned by Grafana Labs
|
:why: repository is owned by Grafana Labs
|
||||||
|
|||||||
20
.github/pr-commands.json
vendored
20
.github/pr-commands.json
vendored
@@ -71,6 +71,16 @@
|
|||||||
"action": "updateLabel",
|
"action": "updateLabel",
|
||||||
"addLabel": "type/build-packaging"
|
"addLabel": "type/build-packaging"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "changedfiles",
|
||||||
|
"matches": [
|
||||||
|
"scripts/*.star",
|
||||||
|
".drone.star",
|
||||||
|
".drone.yml"
|
||||||
|
],
|
||||||
|
"action": "updateLabel",
|
||||||
|
"addLabel": "type/ci"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "changedfiles",
|
"type": "changedfiles",
|
||||||
"matches": [
|
"matches": [
|
||||||
@@ -469,15 +479,5 @@
|
|||||||
"addToProject": {
|
"addToProject": {
|
||||||
"url": "https://github.com/orgs/grafana/projects/190"
|
"url": "https://github.com/orgs/grafana/projects/190"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "changedfiles",
|
|
||||||
"matches": [
|
|
||||||
"public/app/features/panel/suggestions/**/*",
|
|
||||||
"public/app/plugins/panel/**/suggestions.ts",
|
|
||||||
"packages/grafana-data/src/types/suggestions*"
|
|
||||||
],
|
|
||||||
"action": "updateLabel",
|
|
||||||
"addLabel": "area/suggestions"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
26
.github/renovate.json5
vendored
26
.github/renovate.json5
vendored
@@ -1,9 +1,6 @@
|
|||||||
{
|
{
|
||||||
extends: ["config:recommended"],
|
extends: ["config:recommended"],
|
||||||
enabledManagers: ["npm", "docker-compose"],
|
enabledManagers: ["npm"],
|
||||||
ignorePresets: [
|
|
||||||
"github>grafana/grafana-renovate-config//presets/labels",
|
|
||||||
],
|
|
||||||
ignoreDeps: [
|
ignoreDeps: [
|
||||||
// ignoring these until we can upgrade to react 19
|
// ignoring these until we can upgrade to react 19
|
||||||
// see epic here: https://github.com/grafana/grafana/issues/98813
|
// see epic here: https://github.com/grafana/grafana/issues/98813
|
||||||
@@ -15,7 +12,6 @@
|
|||||||
'react-refresh',
|
'react-refresh',
|
||||||
|
|
||||||
"@types/history", // this can be removed entirely when we upgrade history since v5 exposes types directly
|
"@types/history", // this can be removed entirely when we upgrade history since v5 exposes types directly
|
||||||
"cypress", // cypress use is deprecated, we should not bump it anymore
|
|
||||||
"history", // we should bump this together with react-router-dom (see https://github.com/grafana/grafana/issues/76744)
|
"history", // we should bump this together with react-router-dom (see https://github.com/grafana/grafana/issues/76744)
|
||||||
"react-router", // we should bump this together with history and react-router-dom
|
"react-router", // we should bump this together with history and react-router-dom
|
||||||
"react-router-dom", // we should bump this together with history (see https://github.com/grafana/grafana/issues/76744)
|
"react-router-dom", // we should bump this together with history (see https://github.com/grafana/grafana/issues/76744)
|
||||||
@@ -26,7 +22,7 @@
|
|||||||
"@types/slate-react", // we don't want to continue using this on the long run, use Monaco editor instead of Slate
|
"@types/slate-react", // we don't want to continue using this on the long run, use Monaco editor instead of Slate
|
||||||
"@types/slate", // we don't want to continue using this on the long run, use Monaco editor instead of Slate
|
"@types/slate", // we don't want to continue using this on the long run, use Monaco editor instead of Slate
|
||||||
],
|
],
|
||||||
includePaths: ["package.json", "packages/**", "public/app/plugins/**", "devenv/frontend-service/docker-compose.yaml"],
|
includePaths: ["package.json", "packages/**", "public/app/plugins/**"],
|
||||||
ignorePaths: ["emails/**", "**/mocks/**"],
|
ignorePaths: ["emails/**", "**/mocks/**"],
|
||||||
labels: ["area/frontend", "dependencies", "no-changelog"],
|
labels: ["area/frontend", "dependencies", "no-changelog"],
|
||||||
postUpdateOptions: ["yarnDedupeHighest"],
|
postUpdateOptions: ["yarnDedupeHighest"],
|
||||||
@@ -35,41 +31,29 @@
|
|||||||
automerge: true,
|
automerge: true,
|
||||||
matchCurrentVersion: "!/^0/",
|
matchCurrentVersion: "!/^0/",
|
||||||
matchUpdateTypes: ["patch"],
|
matchUpdateTypes: ["patch"],
|
||||||
matchPackageNames: ["!/^@?storybook/", "!/^@locker/", "!/^@grafana/"],
|
matchPackageNames: ["!/^@?storybook/", "!/^@locker/"],
|
||||||
minimumReleaseAge: "7 days",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
automerge: true,
|
|
||||||
matchCurrentVersion: "!/^0/",
|
|
||||||
matchUpdateTypes: ["patch"],
|
|
||||||
matchPackageNames: ["/^@grafana/"],
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
extends: ["schedule:monthly"],
|
extends: ["schedule:monthly"],
|
||||||
groupName: "Storybook updates",
|
groupName: "Storybook updates",
|
||||||
matchPackageNames: ["/^@?storybook/"],
|
matchPackageNames: ["/^@?storybook/"],
|
||||||
rangeStrategy: "bump",
|
rangeStrategy: "bump",
|
||||||
minimumReleaseAge: "7 days",
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
groupName: "React Aria",
|
groupName: "React Aria",
|
||||||
matchPackageNames: ["@react-aria/{/,}**", "@react-stately/{/,}**"],
|
matchPackageNames: ["@react-aria/{/,}**", "@react-stately/{/,}**"],
|
||||||
minimumReleaseAge: "7 days",
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
groupName: "Moveable",
|
groupName: "Moveable",
|
||||||
matchPackageNames: ["moveable", "react-moveable"],
|
matchPackageNames: ["moveable", "react-moveable"],
|
||||||
minimumReleaseAge: "7 days",
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
groupName: "Slate",
|
groupName: "Slate",
|
||||||
matchPackageNames: ["@types/slate", "@types/slate-react", "slate", "slate-react"],
|
matchPackageNames: ["@types/slate", "@types/slate-react", "slate", "slate-react"],
|
||||||
minimumReleaseAge: "7 days",
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
groupName: "d3",
|
groupName: "d3",
|
||||||
matchPackageNames: ["d3{/,}**", "@types/d3{/,}**"],
|
matchPackageNames: ["d3{/,}**", "@types/d3{/,}**"],
|
||||||
minimumReleaseAge: "7 days",
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
groupName: "scenes",
|
groupName: "scenes",
|
||||||
@@ -82,25 +66,21 @@
|
|||||||
{
|
{
|
||||||
groupName: "visx",
|
groupName: "visx",
|
||||||
matchPackageNames: ["@visx/{/,}**"],
|
matchPackageNames: ["@visx/{/,}**"],
|
||||||
minimumReleaseAge: "7 days",
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
groupName: "uLibraries",
|
groupName: "uLibraries",
|
||||||
matchPackageNames: ["@leeoniya/**", "uplot"],
|
matchPackageNames: ["@leeoniya/**", "uplot"],
|
||||||
reviewers: ["leeoniya"],
|
reviewers: ["leeoniya"],
|
||||||
minimumReleaseAge: "7 days",
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
groupName: "locker",
|
groupName: "locker",
|
||||||
reviewers: ["team:grafana/plugins-platform-frontend"],
|
reviewers: ["team:grafana/plugins-platform-frontend"],
|
||||||
matchPackageNames: ["@locker/{/,}**"],
|
matchPackageNames: ["@locker/{/,}**"],
|
||||||
minimumReleaseAge: "7 days",
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
groupName: "augurs",
|
groupName: "augurs",
|
||||||
matchPackageNames: ["@bsull/augurs"],
|
matchPackageNames: ["@bsull/augurs"],
|
||||||
reviewers: ["sd2k"],
|
reviewers: ["sd2k"],
|
||||||
minimumReleaseAge: "7 days",
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"matchDepTypes": ["devDependencies"],
|
"matchDepTypes": ["devDependencies"],
|
||||||
|
|||||||
4
.github/workflows/actionlint.yml
vendored
4
.github/workflows/actionlint.yml
vendored
@@ -34,7 +34,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ jobs:
|
|||||||
- name: Upload to GitHub security events
|
- name: Upload to GitHub security events
|
||||||
if: success() || failure()
|
if: success() || failure()
|
||||||
# If there are security problems, GitHub will automatically comment on the PR for us.
|
# If there are security problems, GitHub will automatically comment on the PR for us.
|
||||||
uses: github/codeql-action/upload-sarif@f443b600d91635bebf5b0d9ebc620189c0d6fba5 # v4.30.8
|
uses: github/codeql-action/upload-sarif@28deaeda66b76a05916b6923827895f2b14ab387 # v3.28.16
|
||||||
with:
|
with:
|
||||||
sarif_file: results.sarif
|
sarif_file: results.sarif
|
||||||
category: actionlint
|
category: actionlint
|
||||||
|
|||||||
8
.github/workflows/add-to-whats-new.yml
vendored
8
.github/workflows/add-to-whats-new.yml
vendored
@@ -1,16 +1,16 @@
|
|||||||
name: Add comment about adding a What's new note for either what's new or breaking changes
|
name: Add comment about adding a What's new note
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
types: [labeled]
|
types: [labeled]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
add-comment:
|
add-comment:
|
||||||
if: ${{ ! github.event.pull_request.head.repo.fork && (contains(github.event.pull_request.labels.*.name, 'add to what''s new') || contains(github.event.pull_request.labels.*.name, 'breaking change') || contains(github.event.pull_request.labels.*.name, 'levitate breaking change')) }}
|
if: ${{ ! github.event.pull_request.head.repo.fork && contains(github.event.pull_request.labels.*.name, 'add to what''s new') }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
permissions:
|
||||||
pull-requests: write
|
pull-requests: write
|
||||||
steps:
|
steps:
|
||||||
- uses: marocchino/sticky-pull-request-comment@773744901bac0e8cbb5a0dc842800d45e9b2b405 # v2.9.4
|
- uses: marocchino/sticky-pull-request-comment@52423e01640425a022ef5fd42c6fb5f633a02728 # v2.9.1
|
||||||
with:
|
with:
|
||||||
message: |
|
message: |
|
||||||
Since you've added the `What's New` or a breaking change label, consider drafting a [What's new note](https://admin.grafana.com/content-admin/#/collections/whats-new/new) for this feature.
|
Since you've added the `Add to what's new` label, consider drafting a [What's new note](https://admin.grafana.com/content-admin/#/collections/whats-new/new) for this feature.
|
||||||
|
|||||||
4
.github/workflows/alerting-swagger-gen.yml
vendored
4
.github/workflows/alerting-swagger-gen.yml
vendored
@@ -10,12 +10,12 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 2
|
fetch-depth: 2
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- name: Set go version
|
- name: Set go version
|
||||||
uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00
|
uses: actions/setup-go@19bb51245e9c80abacb2e91cc42b33fa478b8639
|
||||||
with:
|
with:
|
||||||
go-version-file: go.mod
|
go-version-file: go.mod
|
||||||
- name: Build swagger
|
- name: Build swagger
|
||||||
|
|||||||
22
.github/workflows/alerting-update-module.yml
vendored
22
.github/workflows/alerting-update-module.yml
vendored
@@ -17,7 +17,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4 # 4.2.2
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- name: Check if update branch exists
|
- name: Check if update branch exists
|
||||||
@@ -29,7 +29,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Setup Go
|
- name: Setup Go
|
||||||
uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # 6.0.0
|
uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # 5.3.0
|
||||||
with:
|
with:
|
||||||
"go-version-file": "go.mod"
|
"go-version-file": "go.mod"
|
||||||
|
|
||||||
@@ -51,7 +51,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
TO_COMMIT="$(gh api repos/grafana/alerting/commits/"$BRANCH" --jq '.sha')"
|
TO_COMMIT="$(gh api repos/grafana/alerting/commits/"$BRANCH" --jq '.sha')"
|
||||||
if [ -z "$TO_COMMIT" ]; then
|
if [ -z "$TO_COMMIT" ]; then
|
||||||
echo "Branch $BRANCH not found in alerting repo"
|
echo "Branch $BRANCH not found in alerting repo, falling back to main branch"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo "to_commit=$TO_COMMIT" >> "$GITHUB_OUTPUT"
|
echo "to_commit=$TO_COMMIT" >> "$GITHUB_OUTPUT"
|
||||||
@@ -85,7 +85,7 @@ jobs:
|
|||||||
printf "%s\n" "$ALERTING_COMMITS"
|
printf "%s\n" "$ALERTING_COMMITS"
|
||||||
|
|
||||||
# make the list for markdown and replace PR numbers with links
|
# make the list for markdown and replace PR numbers with links
|
||||||
ALERTING_COMMITS_FORMATTED="$(echo "$ALERTING_COMMITS" | while read -r line; do echo "- $line" | sed -E 's/\(#([0-9]+)\)/[#\1](https:\/\/github.com\/grafana\/alerting\/pull\/\1)/g'; done)"
|
ALERTING_COMMITS_FORMATTED="$(echo "$ALERTING_COMMITS" | while read -r line; do echo "- $line" | sed -E 's/\(#([0-9]+)\)/[#\1](https:\/\/github.com\/grafana\/grafana\/pull\/\1)/g'; done)"
|
||||||
|
|
||||||
{
|
{
|
||||||
echo "alerting_commits<<EOF"
|
echo "alerting_commits<<EOF"
|
||||||
@@ -123,9 +123,6 @@ jobs:
|
|||||||
title: 'Alerting: Update alerting module to ${{ steps.latest-commit.outputs.to_commit }}'
|
title: 'Alerting: Update alerting module to ${{ steps.latest-commit.outputs.to_commit }}'
|
||||||
branch: alerting/update-alerting-module
|
branch: alerting/update-alerting-module
|
||||||
delete-branch: true
|
delete-branch: true
|
||||||
labels: |
|
|
||||||
no-changelog
|
|
||||||
no-backport
|
|
||||||
body: |
|
body: |
|
||||||
Updates Grafana Alerting module to latest version.
|
Updates Grafana Alerting module to latest version.
|
||||||
|
|
||||||
@@ -147,14 +144,3 @@ jobs:
|
|||||||
echo "## Pull Request Created"
|
echo "## Pull Request Created"
|
||||||
echo "🔗 [View Pull Request]($PR_URL)"
|
echo "🔗 [View Pull Request]($PR_URL)"
|
||||||
} >> "$GITHUB_STEP_SUMMARY"
|
} >> "$GITHUB_STEP_SUMMARY"
|
||||||
- name: Send Slack Message
|
|
||||||
uses: grafana/shared-workflows/actions/send-slack-message@send-slack-message/v2.0.4
|
|
||||||
with:
|
|
||||||
method: 'chat.postMessage'
|
|
||||||
# send to alerting-reviews channel
|
|
||||||
payload-templated: true
|
|
||||||
payload: |
|
|
||||||
{
|
|
||||||
"channel": "C076RNRRZ2N",
|
|
||||||
"text": "Update alerting module in Grafana ${{ steps.create-pr.outputs.pull-request-url }}"
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ jobs:
|
|||||||
contents: read
|
contents: read
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Setup Node.js
|
- name: Setup Node.js
|
||||||
uses: actions/setup-node@v6
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'yarn'
|
cache: 'yarn'
|
||||||
|
|||||||
2
.github/workflows/auto-triager/labels.txt
vendored
2
.github/workflows/auto-triager/labels.txt
vendored
@@ -14,7 +14,6 @@ area/backend/db/mysql
|
|||||||
area/backend/db/postgres
|
area/backend/db/postgres
|
||||||
area/backend/db/sql
|
area/backend/db/sql
|
||||||
area/backend/db/sqlite
|
area/backend/db/sqlite
|
||||||
area/gitsync
|
|
||||||
area/configuration
|
area/configuration
|
||||||
area/dashboard/annotations
|
area/dashboard/annotations
|
||||||
area/dashboard/data-links
|
area/dashboard/data-links
|
||||||
@@ -85,7 +84,6 @@ area/scenes
|
|||||||
area/search
|
area/search
|
||||||
area/security
|
area/security
|
||||||
area/streaming
|
area/streaming
|
||||||
area/suggestions
|
|
||||||
area/templating/repeating
|
area/templating/repeating
|
||||||
area/tooltip
|
area/tooltip
|
||||||
area/transformations
|
area/transformations
|
||||||
|
|||||||
39
.github/workflows/backend-code-checks.yml
vendored
39
.github/workflows/backend-code-checks.yml
vendored
@@ -14,48 +14,31 @@ on:
|
|||||||
- 'docs/**'
|
- 'docs/**'
|
||||||
- 'latest.json'
|
- 'latest.json'
|
||||||
|
|
||||||
jobs:
|
permissions:
|
||||||
detect-changes:
|
|
||||||
name: Detect whether code changed
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
outputs:
|
|
||||||
changed: ${{ steps.detect-changes.outputs.backend }}
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
persist-credentials: true # required to get more history in the changed-files action
|
|
||||||
fetch-depth: 2
|
|
||||||
- name: Detect changes
|
|
||||||
id: detect-changes
|
|
||||||
uses: ./.github/actions/change-detection
|
|
||||||
with:
|
|
||||||
self: .github/workflows/backend-code-checks.yml
|
|
||||||
|
|
||||||
validate-configs:
|
|
||||||
permissions:
|
|
||||||
contents: read
|
contents: read
|
||||||
id-token: write
|
id-token: write
|
||||||
needs: detect-changes
|
|
||||||
if: needs.detect-changes.outputs.changed == 'true'
|
jobs:
|
||||||
|
validate-configs:
|
||||||
name: Validate Backend Configs
|
name: Validate Backend Configs
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- name: Setup Go
|
- name: Setup Go
|
||||||
uses: actions/setup-go@v6.0.0
|
uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
go-version-file: go.mod
|
# Explicitly set Go version to 1.24.1 to ensure consistent OpenAPI spec generation
|
||||||
|
# The crypto/x509 package has additional fields in Go 1.24.1 that affect the generated specs
|
||||||
|
# This ensures the GHAs environment matches what we use in the Drone pipeline
|
||||||
|
go-version: 1.24.1
|
||||||
cache: true
|
cache: true
|
||||||
|
|
||||||
- name: Verify code generation
|
- name: Verify code generation
|
||||||
run: |
|
run: |
|
||||||
CODEGEN_VERIFY=1 make gen-cue
|
CODEGEN_VERIFY=1 make gen-cue
|
||||||
CODEGEN_VERIFY=1 make gen-jsonnet
|
CODEGEN_VERIFY=1 make gen-jsonnet
|
||||||
CODEGEN_VERIFY=1 make gen-apps
|
|
||||||
|
|
||||||
- name: Validate go.mod
|
- name: Validate go.mod
|
||||||
run: go run scripts/modowners/modowners.go check go.mod
|
run: go run scripts/modowners/modowners.go check go.mod
|
||||||
@@ -79,7 +62,7 @@ jobs:
|
|||||||
make swagger-clean && make openapi3-gen
|
make swagger-clean && make openapi3-gen
|
||||||
|
|
||||||
# Check if the generated specs differ from what's in the repository
|
# Check if the generated specs differ from what's in the repository
|
||||||
for f in public/api-merged.json public/openapi3.json public/api-enterprise-spec.json; do git add $f; done
|
for f in public/api-merged.json public/openapi3.json; do git add $f; done
|
||||||
if [ -z "$(git diff --name-only --cached)" ]; then
|
if [ -z "$(git diff --name-only --cached)" ]; then
|
||||||
echo "OpenAPI specs are up to date!"
|
echo "OpenAPI specs are up to date!"
|
||||||
else
|
else
|
||||||
|
|||||||
20
.github/workflows/backend-unit-tests.yml
vendored
20
.github/workflows/backend-unit-tests.yml
vendored
@@ -16,15 +16,13 @@ permissions: {}
|
|||||||
jobs:
|
jobs:
|
||||||
detect-changes:
|
detect-changes:
|
||||||
name: Detect whether code changed
|
name: Detect whether code changed
|
||||||
# Run on `grafana/grafana` main branch, or on pull requests to prevent double-running on mirrors
|
|
||||||
if: (github.event_name == 'pull_request' || (github.event_name == 'push' && github.repository == 'grafana/grafana'))
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
outputs:
|
outputs:
|
||||||
changed: ${{ steps.detect-changes.outputs.backend }}
|
changed: ${{ steps.detect-changes.outputs.backend }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: true # required to get more history in the changed-files action
|
persist-credentials: true # required to get more history in the changed-files action
|
||||||
fetch-depth: 2
|
fetch-depth: 2
|
||||||
@@ -48,18 +46,18 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
|
|
||||||
name: Grafana (${{ matrix.shard }})
|
name: Grafana (${{ matrix.shard }})
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest-8-cores
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
id-token: write
|
id-token: write
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- name: Setup Go
|
- name: Setup Go
|
||||||
uses: actions/setup-go@v6.0.0
|
uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
go-version-file: go.mod
|
go-version-file: go.mod
|
||||||
- name: Run unit tests
|
- name: Run unit tests
|
||||||
@@ -68,7 +66,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
readarray -t PACKAGES <<< "$(./scripts/ci/backend-tests/shard.sh -N"$SHARD")"
|
readarray -t PACKAGES <<< "$(./scripts/ci/backend-tests/shard.sh -N"$SHARD")"
|
||||||
CGO_ENABLED=0 go test -short -timeout=30m "${PACKAGES[@]}"
|
go test -short -timeout=30m "${PACKAGES[@]}"
|
||||||
|
|
||||||
grafana-enterprise:
|
grafana-enterprise:
|
||||||
# Run this workflow for non-PR events (like pushes to `main` or `release-*`) OR for internal PRs (PRs not from forks)
|
# Run this workflow for non-PR events (like pushes to `main` or `release-*`) OR for internal PRs (PRs not from forks)
|
||||||
@@ -83,18 +81,18 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
|
|
||||||
name: Grafana Enterprise (${{ matrix.shard }})
|
name: Grafana Enterprise (${{ matrix.shard }})
|
||||||
runs-on: ubuntu-x64-large
|
runs-on: ubuntu-latest-8-cores
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
id-token: write
|
id-token: write
|
||||||
steps:
|
steps:
|
||||||
# Set up repository clone
|
# Set up repository clone
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- name: Setup Go
|
- name: Setup Go
|
||||||
uses: actions/setup-go@v6.0.0
|
uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
go-version-file: go.mod
|
go-version-file: go.mod
|
||||||
- name: Setup Enterprise
|
- name: Setup Enterprise
|
||||||
@@ -118,7 +116,7 @@ jobs:
|
|||||||
readarray -t PACKAGES <<< "$(./scripts/ci/backend-tests/shard.sh -N"$SHARD")"
|
readarray -t PACKAGES <<< "$(./scripts/ci/backend-tests/shard.sh -N"$SHARD")"
|
||||||
# This tee requires pipefail to be set, otherwise `go test`'s exit code is thrown away.
|
# This tee requires pipefail to be set, otherwise `go test`'s exit code is thrown away.
|
||||||
# That means having no `-o pipefail` => failing tests => exit code 0, which is wrong.
|
# That means having no `-o pipefail` => failing tests => exit code 0, which is wrong.
|
||||||
CGO_ENABLED=0 go test -short -timeout=30m "${PACKAGES[@]}"
|
go test -short -timeout=30m "${PACKAGES[@]}"
|
||||||
|
|
||||||
# This is the job that is actually required by rulesets.
|
# This is the job that is actually required by rulesets.
|
||||||
# We need to require EITHER the OSS or the Enterprise job to pass.
|
# We need to require EITHER the OSS or the Enterprise job to pass.
|
||||||
|
|||||||
2
.github/workflows/backport-trigger.yml
vendored
2
.github/workflows/backport-trigger.yml
vendored
@@ -40,7 +40,7 @@ jobs:
|
|||||||
}' "$GITHUB_EVENT_PATH" > /tmp/pr_info.json
|
}' "$GITHUB_EVENT_PATH" > /tmp/pr_info.json
|
||||||
|
|
||||||
- name: Upload artifact
|
- name: Upload artifact
|
||||||
uses: actions/upload-artifact@v5
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: pr_info
|
name: pr_info
|
||||||
path: /tmp/pr_info.json
|
path: /tmp/pr_info.json
|
||||||
|
|||||||
6
.github/workflows/backport-workflow.yml
vendored
6
.github/workflows/backport-workflow.yml
vendored
@@ -13,7 +13,7 @@ permissions: {}
|
|||||||
jobs:
|
jobs:
|
||||||
backport:
|
backport:
|
||||||
# Only run this job if the triggering workflow was not skipped (and on grafana repo)
|
# Only run this job if the triggering workflow was not skipped (and on grafana repo)
|
||||||
if: github.event.workflow_run.head_repository.fork == false && github.repository == 'grafana/grafana' && github.event.workflow_run.conclusion == 'success'
|
if: github.repository == 'grafana/grafana' && github.event.workflow_run.conclusion == 'success'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
permissions:
|
||||||
id-token: write
|
id-token: write
|
||||||
@@ -36,7 +36,7 @@ jobs:
|
|||||||
private_key: ${{ fromJSON(steps.secrets.outputs.secrets).APP_PEM }}
|
private_key: ${{ fromJSON(steps.secrets.outputs.secrets).APP_PEM }}
|
||||||
|
|
||||||
- name: Download PR info artifact
|
- name: Download PR info artifact
|
||||||
uses: actions/download-artifact@v6
|
uses: actions/download-artifact@v4
|
||||||
id: download-pr-info
|
id: download-pr-info
|
||||||
with:
|
with:
|
||||||
github-token: ${{ github.token }}
|
github-token: ${{ github.token }}
|
||||||
@@ -62,7 +62,7 @@ jobs:
|
|||||||
echo "PR number: $PR_NUMBER"
|
echo "PR number: $PR_NUMBER"
|
||||||
|
|
||||||
- name: Checkout Grafana
|
- name: Checkout Grafana
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
ref: ${{ github.event.repository.default_branch }}
|
ref: ${{ github.event.repository.default_branch }}
|
||||||
fetch-depth: 2
|
fetch-depth: 2
|
||||||
|
|||||||
4
.github/workflows/changelog.yml
vendored
4
.github/workflows/changelog.yml
vendored
@@ -84,7 +84,7 @@ jobs:
|
|||||||
app_id: ${{ vars.DELIVERY_BOT_APP_ID }}
|
app_id: ${{ vars.DELIVERY_BOT_APP_ID }}
|
||||||
private_key: ${{ env.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
private_key: ${{ env.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
||||||
- name: "Checkout Grafana repo"
|
- name: "Checkout Grafana repo"
|
||||||
uses: "actions/checkout@v5"
|
uses: "actions/checkout@v4"
|
||||||
with:
|
with:
|
||||||
ref: main
|
ref: main
|
||||||
sparse-checkout: |
|
sparse-checkout: |
|
||||||
@@ -97,7 +97,7 @@ jobs:
|
|||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
fetch-tags: true
|
fetch-tags: true
|
||||||
- name: Setup nodejs environment
|
- name: Setup nodejs environment
|
||||||
uses: actions/setup-node@v6
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version-file: .nvmrc
|
node-version-file: .nvmrc
|
||||||
- name: "Configure git user"
|
- name: "Configure git user"
|
||||||
|
|||||||
18
.github/workflows/cleanup-branches.yml
vendored
18
.github/workflows/cleanup-branches.yml
vendored
@@ -1,18 +0,0 @@
|
|||||||
name: Clean up orphaned branches
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
schedule:
|
|
||||||
- cron: "0 9 * * 1"
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
cleanup-branches:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
pull-requests: read
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v5
|
|
||||||
- uses: grafana/shared-workflows/actions/cleanup-branches@cleanup-branches/v0.2.1
|
|
||||||
with:
|
|
||||||
dry-run: true
|
|
||||||
max-date: "1 month ago"
|
|
||||||
2
.github/workflows/codeowners-validator.yml
vendored
2
.github/workflows/codeowners-validator.yml
vendored
@@ -13,7 +13,7 @@ jobs:
|
|||||||
contents: read
|
contents: read
|
||||||
steps:
|
steps:
|
||||||
# Checks-out your repository, which is validated in the next step
|
# Checks-out your repository, which is validated in the next step
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- name: GitHub CODEOWNERS Validator
|
- name: GitHub CODEOWNERS Validator
|
||||||
|
|||||||
42
.github/workflows/codeql-analysis.yml
vendored
42
.github/workflows/codeql-analysis.yml
vendored
@@ -8,9 +8,7 @@ name: "CodeQL checks"
|
|||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches: ['**'] # run on all branches
|
||||||
- main
|
|
||||||
- release-*.*.*
|
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
- '**/*.cue'
|
- '**/*.cue'
|
||||||
- '**/*.json'
|
- '**/*.json'
|
||||||
@@ -25,30 +23,9 @@ permissions:
|
|||||||
security-events: write
|
security-events: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
detect-changes:
|
|
||||||
name: Detect whether code changed
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
outputs:
|
|
||||||
javascript: ${{ steps.detect-changes.outputs.frontend }}
|
|
||||||
go: ${{ steps.detect-changes.outputs.backend }}
|
|
||||||
actions: 'true'
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
persist-credentials: true # required to get more history in the changed-files action
|
|
||||||
fetch-depth: 2
|
|
||||||
- name: Detect changes
|
|
||||||
id: detect-changes
|
|
||||||
uses: ./.github/actions/change-detection
|
|
||||||
with:
|
|
||||||
self: .github/workflows/codeql-analysis.yml
|
|
||||||
|
|
||||||
analyze:
|
analyze:
|
||||||
needs: detect-changes
|
|
||||||
name: Analyze
|
name: Analyze
|
||||||
runs-on: ubuntu-x64-large-io
|
runs-on: ubuntu-latest
|
||||||
continue-on-error: true # doesn't block PRs from being merged if this fails
|
continue-on-error: true # doesn't block PRs from being merged if this fails
|
||||||
if: github.repository == 'grafana/grafana'
|
if: github.repository == 'grafana/grafana'
|
||||||
|
|
||||||
@@ -64,25 +41,22 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
if: needs.detect-changes.outputs[matrix.language] == 'true'
|
uses: actions/checkout@v4
|
||||||
uses: actions/checkout@v5
|
|
||||||
with:
|
with:
|
||||||
# We must fetch at least the immediate parents so that if this is
|
# We must fetch at least the immediate parents so that if this is
|
||||||
# a pull request then we can checkout the head.
|
# a pull request then we can checkout the head.
|
||||||
fetch-depth: 2
|
fetch-depth: 2
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- if: matrix.language == 'go' && needs.detect-changes.outputs.go == 'true'
|
- if: matrix.language == 'go'
|
||||||
name: Set go version
|
name: Set go version
|
||||||
uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00
|
uses: actions/setup-go@19bb51245e9c80abacb2e91cc42b33fa478b8639
|
||||||
with:
|
with:
|
||||||
cache: false
|
|
||||||
go-version-file: go.mod
|
go-version-file: go.mod
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
if: needs.detect-changes.outputs[matrix.language] == 'true'
|
uses: github/codeql-action/init@v3
|
||||||
uses: github/codeql-action/init@v4
|
|
||||||
with:
|
with:
|
||||||
languages: ${{ matrix.language }}
|
languages: ${{ matrix.language }}
|
||||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||||
@@ -90,11 +64,11 @@ jobs:
|
|||||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
||||||
|
|
||||||
- if: matrix.language == 'go' && needs.detect-changes.outputs.go == 'true'
|
- if: matrix.language == 'go'
|
||||||
name: Build go files
|
name: Build go files
|
||||||
run: |
|
run: |
|
||||||
go mod verify
|
go mod verify
|
||||||
make build-go
|
make build-go
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@v4
|
uses: github/codeql-action/analyze@v3
|
||||||
|
|||||||
2
.github/workflows/commands.yml
vendored
2
.github/workflows/commands.yml
vendored
@@ -53,7 +53,7 @@ jobs:
|
|||||||
private-key: ${{ env.GITHUB_APP_PRIVATE_KEY }}
|
private-key: ${{ env.GITHUB_APP_PRIVATE_KEY }}
|
||||||
|
|
||||||
- name: Checkout Actions
|
- name: Checkout Actions
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4 # v4.2.2
|
||||||
with:
|
with:
|
||||||
repository: "grafana/grafana-github-actions"
|
repository: "grafana/grafana-github-actions"
|
||||||
path: ./actions
|
path: ./actions
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ jobs:
|
|||||||
version: ${{ steps.build_frontend.outputs.version }}
|
version: ${{ steps.build_frontend.outputs.version }}
|
||||||
steps:
|
steps:
|
||||||
- name: checkout
|
- name: checkout
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- name: Verify inputs
|
- name: Verify inputs
|
||||||
@@ -58,13 +58,13 @@ jobs:
|
|||||||
PLUGINS_GRAFANA_API_KEY=core-plugins-build-and-release:PLUGINS_GRAFANA_API_KEY
|
PLUGINS_GRAFANA_API_KEY=core-plugins-build-and-release:PLUGINS_GRAFANA_API_KEY
|
||||||
PLUGINS_GCOM_TOKEN=core-plugins-build-and-release:PLUGINS_GCOM_TOKEN
|
PLUGINS_GCOM_TOKEN=core-plugins-build-and-release:PLUGINS_GCOM_TOKEN
|
||||||
- name: 'Authenticate to Google Cloud'
|
- name: 'Authenticate to Google Cloud'
|
||||||
uses: 'google-github-actions/auth@7c6bc770dae815cd3e89ee6cdf493a5fab2cc093'
|
uses: 'google-github-actions/auth@6fc4af4b145ae7821d527454aa9bd537d1f2dc5f'
|
||||||
with:
|
with:
|
||||||
credentials_json: '${{ env.PLUGINS_GOOGLE_CREDENTIALS }}'
|
credentials_json: '${{ env.PLUGINS_GOOGLE_CREDENTIALS }}'
|
||||||
- name: 'Set up Cloud SDK'
|
- name: 'Set up Cloud SDK'
|
||||||
uses: 'google-github-actions/setup-gcloud@aa5489c8933f4cc7a4f7d45035b3b1440c9c10db'
|
uses: 'google-github-actions/setup-gcloud@6189d56e4096ee891640bb02ac264be376592d6a'
|
||||||
- name: Setup nodejs environment
|
- name: Setup nodejs environment
|
||||||
uses: actions/setup-node@v6
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version-file: .nvmrc
|
node-version-file: .nvmrc
|
||||||
cache: yarn
|
cache: yarn
|
||||||
@@ -101,7 +101,7 @@ jobs:
|
|||||||
echo "has_backend=false" >> "$GITHUB_OUTPUT"
|
echo "has_backend=false" >> "$GITHUB_OUTPUT"
|
||||||
fi
|
fi
|
||||||
- name: Setup golang environment
|
- name: Setup golang environment
|
||||||
uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00
|
uses: actions/setup-go@19bb51245e9c80abacb2e91cc42b33fa478b8639
|
||||||
if: steps.check_backend.outputs.has_backend == 'true'
|
if: steps.check_backend.outputs.has_backend == 'true'
|
||||||
with:
|
with:
|
||||||
go-version-file: go.mod
|
go-version-file: go.mod
|
||||||
@@ -193,7 +193,7 @@ jobs:
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
- name: store build artifacts
|
- name: store build artifacts
|
||||||
uses: actions/upload-artifact@v5
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: build-artifacts
|
name: build-artifacts
|
||||||
path: ${{ steps.get_dir.outputs.dir }}/ci/packages/*.zip
|
path: ${{ steps.get_dir.outputs.dir }}/ci/packages/*.zip
|
||||||
|
|||||||
2
.github/workflows/create-security-branch.yml
vendored
2
.github/workflows/create-security-branch.yml
vendored
@@ -61,7 +61,7 @@ jobs:
|
|||||||
private_key: ${{ env.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
private_key: ${{ env.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
||||||
|
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
token: ${{ steps.generate_token.outputs.token }}
|
token: ${{ steps.generate_token.outputs.token }}
|
||||||
repository: ${{ inputs.repository }}
|
repository: ${{ inputs.repository }}
|
||||||
|
|||||||
24
.github/workflows/defaults-ini-docs-reminder.yml
vendored
24
.github/workflows/defaults-ini-docs-reminder.yml
vendored
@@ -1,24 +0,0 @@
|
|||||||
name: Remind about config documentation updates
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
types: [opened]
|
|
||||||
paths:
|
|
||||||
- 'conf/defaults.ini'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
add-comment:
|
|
||||||
if: ${{ ! github.event.pull_request.head.repo.fork }}
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
pull-requests: write
|
|
||||||
steps:
|
|
||||||
- uses: marocchino/sticky-pull-request-comment@773744901bac0e8cbb5a0dc842800d45e9b2b405 # v2.9.4
|
|
||||||
with:
|
|
||||||
message: |
|
|
||||||
Hi there! 👋 This PR modifies `conf/defaults.ini`.
|
|
||||||
|
|
||||||
If this change introduces user-facing configuration options or modifies existing ones, please remember to update [`docs/sources/setup-grafana/configure-grafana/_index.md`](https://github.com/grafana/grafana/blob/main/docs/sources/setup-grafana/configure-grafana/_index.md).
|
|
||||||
|
|
||||||
If this change is internal-only (experimental flags, internal refactoring, etc.), you can ignore this reminder.
|
|
||||||
|
|
||||||
Questions? Reach out to the #docs channel on Slack.
|
|
||||||
16
.github/workflows/deploy-storybook-preview.yml
vendored
16
.github/workflows/deploy-storybook-preview.yml
vendored
@@ -27,12 +27,24 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Setup Node.js
|
- name: Setup Node.js
|
||||||
uses: ./.github/actions/setup-node
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
cache: 'yarn'
|
||||||
|
|
||||||
|
- name: Cache node_modules
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
node_modules
|
||||||
|
key: node_modules-${{ hashFiles('yarn.lock') }}
|
||||||
|
restore-keys: |
|
||||||
|
node_modules-
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
env:
|
env:
|
||||||
|
|||||||
@@ -29,12 +29,12 @@ jobs:
|
|||||||
id-token: write
|
id-token: write
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
path: './pr'
|
path: './pr'
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- uses: actions/setup-node@v6
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version-file: './pr/.nvmrc'
|
node-version-file: './pr/.nvmrc'
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ jobs:
|
|||||||
run: zip -r ./pr_built_packages.zip ./packages/**/*.tgz
|
run: zip -r ./pr_built_packages.zip ./packages/**/*.tgz
|
||||||
|
|
||||||
- name: Upload build output as artifact
|
- name: Upload build output as artifact
|
||||||
uses: actions/upload-artifact@v5
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: buildPr
|
name: buildPr
|
||||||
path: './pr/pr_built_packages.zip'
|
path: './pr/pr_built_packages.zip'
|
||||||
@@ -80,13 +80,13 @@ jobs:
|
|||||||
working-directory: './base'
|
working-directory: './base'
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
path: './base'
|
path: './base'
|
||||||
ref: ${{ github.event.pull_request.base.ref }}
|
ref: ${{ github.event.pull_request.base.ref }}
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- uses: actions/setup-node@v6
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version-file: './base/.nvmrc'
|
node-version-file: './base/.nvmrc'
|
||||||
|
|
||||||
@@ -116,7 +116,7 @@ jobs:
|
|||||||
run: zip -r ./base_built_packages.zip ./packages/**/*.tgz
|
run: zip -r ./base_built_packages.zip ./packages/**/*.tgz
|
||||||
|
|
||||||
- name: Upload build output as artifact
|
- name: Upload build output as artifact
|
||||||
uses: actions/upload-artifact@v5
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: buildBase
|
name: buildBase
|
||||||
path: './base/base_built_packages.zip'
|
path: './base/base_built_packages.zip'
|
||||||
@@ -132,21 +132,21 @@ jobs:
|
|||||||
id-token: 'write'
|
id-token: 'write'
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- uses: actions/setup-node@v6
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
|
|
||||||
- name: Get built packages from pr
|
- name: Get built packages from pr
|
||||||
uses: actions/download-artifact@v6
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: buildPr
|
name: buildPr
|
||||||
|
|
||||||
- name: Get built packages from base
|
- name: Get built packages from base
|
||||||
uses: actions/download-artifact@v6
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: buildBase
|
name: buildBase
|
||||||
|
|
||||||
@@ -157,7 +157,7 @@ jobs:
|
|||||||
run: unzip -j base_built_packages.zip -d ./base && rm base_built_packages.zip
|
run: unzip -j base_built_packages.zip -d ./base && rm base_built_packages.zip
|
||||||
|
|
||||||
- id: 'auth'
|
- id: 'auth'
|
||||||
uses: 'google-github-actions/auth@7c6bc770dae815cd3e89ee6cdf493a5fab2cc093'
|
uses: 'google-github-actions/auth@6fc4af4b145ae7821d527454aa9bd537d1f2dc5f'
|
||||||
if: github.event.pull_request.head.repo.full_name == github.repository
|
if: github.event.pull_request.head.repo.full_name == github.repository
|
||||||
with:
|
with:
|
||||||
workload_identity_provider: projects/304398677251/locations/global/workloadIdentityPools/github/providers/github-provider
|
workload_identity_provider: projects/304398677251/locations/global/workloadIdentityPools/github/providers/github-provider
|
||||||
@@ -165,7 +165,7 @@ jobs:
|
|||||||
project_id: 'grafanalabs-global'
|
project_id: 'grafanalabs-global'
|
||||||
|
|
||||||
- name: 'Set up Cloud SDK'
|
- name: 'Set up Cloud SDK'
|
||||||
uses: 'google-github-actions/setup-gcloud@aa5489c8933f4cc7a4f7d45035b3b1440c9c10db'
|
uses: 'google-github-actions/setup-gcloud@6189d56e4096ee891640bb02ac264be376592d6a'
|
||||||
if: github.event.pull_request.head.repo.full_name == github.repository
|
if: github.event.pull_request.head.repo.full_name == github.repository
|
||||||
with:
|
with:
|
||||||
version: '>= 363.0.0'
|
version: '>= 363.0.0'
|
||||||
@@ -189,7 +189,7 @@ jobs:
|
|||||||
PR_NUMBER: ${{ github.event.pull_request.number }}
|
PR_NUMBER: ${{ github.event.pull_request.number }}
|
||||||
|
|
||||||
- name: Upload check output as artifact
|
- name: Upload check output as artifact
|
||||||
uses: actions/upload-artifact@v5
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: levitate
|
name: levitate
|
||||||
path: levitate/
|
path: levitate/
|
||||||
@@ -220,17 +220,17 @@ jobs:
|
|||||||
app-id: ${{ env.GITHUB_APP_ID }}
|
app-id: ${{ env.GITHUB_APP_ID }}
|
||||||
private-key: ${{ env.GITHUB_APP_PRIVATE_KEY }}
|
private-key: ${{ env.GITHUB_APP_PRIVATE_KEY }}
|
||||||
|
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- name: 'Download artifact'
|
- name: 'Download artifact'
|
||||||
uses: actions/download-artifact@v6
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: levitate
|
name: levitate
|
||||||
|
|
||||||
- name: Parsing levitate result
|
- name: Parsing levitate result
|
||||||
uses: actions/github-script@v8
|
uses: actions/github-script@v7
|
||||||
id: levitate-run
|
id: levitate-run
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
@@ -241,7 +241,7 @@ jobs:
|
|||||||
# Check if label exists
|
# Check if label exists
|
||||||
- name: Check if "levitate breaking change" label exists
|
- name: Check if "levitate breaking change" label exists
|
||||||
id: does-label-exist
|
id: does-label-exist
|
||||||
uses: actions/github-script@v8
|
uses: actions/github-script@v7
|
||||||
env:
|
env:
|
||||||
PR_NUMBER: ${{ github.event.pull_request.number }}
|
PR_NUMBER: ${{ github.event.pull_request.number }}
|
||||||
with:
|
with:
|
||||||
@@ -271,7 +271,7 @@ jobs:
|
|||||||
# Comment on the PR
|
# Comment on the PR
|
||||||
- name: Comment on PR
|
- name: Comment on PR
|
||||||
if: steps.levitate-run.outputs.exit_code == 1
|
if: steps.levitate-run.outputs.exit_code == 1
|
||||||
uses: marocchino/sticky-pull-request-comment@773744901bac0e8cbb5a0dc842800d45e9b2b405
|
uses: marocchino/sticky-pull-request-comment@52423e01640425a022ef5fd42c6fb5f633a02728
|
||||||
with:
|
with:
|
||||||
header: levitate-breaking-change-comment
|
header: levitate-breaking-change-comment
|
||||||
number: ${{ github.event.pull_request.number }}
|
number: ${{ github.event.pull_request.number }}
|
||||||
@@ -288,7 +288,7 @@ jobs:
|
|||||||
# Remove comment from the PR (no more breaking changes)
|
# Remove comment from the PR (no more breaking changes)
|
||||||
- name: Remove comment from PR
|
- name: Remove comment from PR
|
||||||
if: steps.levitate-run.outputs.exit_code == 0
|
if: steps.levitate-run.outputs.exit_code == 0
|
||||||
uses: marocchino/sticky-pull-request-comment@773744901bac0e8cbb5a0dc842800d45e9b2b405
|
uses: marocchino/sticky-pull-request-comment@52423e01640425a022ef5fd42c6fb5f633a02728
|
||||||
with:
|
with:
|
||||||
header: levitate-breaking-change-comment
|
header: levitate-breaking-change-comment
|
||||||
number: ${{ github.event.pull_request.number }}
|
number: ${{ github.event.pull_request.number }}
|
||||||
@@ -334,7 +334,7 @@ jobs:
|
|||||||
# Add the label
|
# Add the label
|
||||||
- name: Add "levitate breaking change" label
|
- name: Add "levitate breaking change" label
|
||||||
if: steps.levitate-run.outputs.exit_code == 1 && steps.does-label-exist.outputs.result == 0
|
if: steps.levitate-run.outputs.exit_code == 1 && steps.does-label-exist.outputs.result == 0
|
||||||
uses: actions/github-script@v8
|
uses: actions/github-script@v7
|
||||||
env:
|
env:
|
||||||
PR_NUMBER: ${{ steps.levitate-run.outputs.pr_number }}
|
PR_NUMBER: ${{ steps.levitate-run.outputs.pr_number }}
|
||||||
with:
|
with:
|
||||||
@@ -350,7 +350,7 @@ jobs:
|
|||||||
# Remove label (no more breaking changes)
|
# Remove label (no more breaking changes)
|
||||||
- name: Remove "levitate breaking change" label
|
- name: Remove "levitate breaking change" label
|
||||||
if: steps.levitate-run.outputs.exit_code == 0 && steps.does-label-exist.outputs.result == 1
|
if: steps.levitate-run.outputs.exit_code == 0 && steps.does-label-exist.outputs.result == 1
|
||||||
uses: actions/github-script@v8
|
uses: actions/github-script@v7
|
||||||
env:
|
env:
|
||||||
PR_NUMBER: ${{ steps.levitate-run.outputs.pr_number }}
|
PR_NUMBER: ${{ steps.levitate-run.outputs.pr_number }}
|
||||||
with:
|
with:
|
||||||
@@ -368,7 +368,7 @@ jobs:
|
|||||||
# Related issue: https://github.com/renovatebot/renovate/issues/1908
|
# Related issue: https://github.com/renovatebot/renovate/issues/1908
|
||||||
- name: Add "grafana/plugins-platform-frontend" as a reviewer
|
- name: Add "grafana/plugins-platform-frontend" as a reviewer
|
||||||
if: steps.levitate-run.outputs.exit_code == 1
|
if: steps.levitate-run.outputs.exit_code == 1
|
||||||
uses: actions/github-script@v8
|
uses: actions/github-script@v7
|
||||||
env:
|
env:
|
||||||
PR_NUMBER: ${{ steps.levitate-run.outputs.pr_number }}
|
PR_NUMBER: ${{ steps.levitate-run.outputs.pr_number }}
|
||||||
with:
|
with:
|
||||||
@@ -385,7 +385,7 @@ jobs:
|
|||||||
# Remove reviewers (no more breaking changes)
|
# Remove reviewers (no more breaking changes)
|
||||||
- name: Remove "grafana/plugins-platform-frontend" from the list of reviewers
|
- name: Remove "grafana/plugins-platform-frontend" from the list of reviewers
|
||||||
if: steps.levitate-run.outputs.exit_code == 0
|
if: steps.levitate-run.outputs.exit_code == 0
|
||||||
uses: actions/github-script@v8
|
uses: actions/github-script@v7
|
||||||
env:
|
env:
|
||||||
PR_NUMBER: ${{ steps.levitate-run.outputs.pr_number }}
|
PR_NUMBER: ${{ steps.levitate-run.outputs.pr_number }}
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -1,156 +0,0 @@
|
|||||||
---
|
|
||||||
name: Detect Plugin Extension Changes
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-${{ github.ref }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
permissions: {}
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
branches:
|
|
||||||
- 'main'
|
|
||||||
paths:
|
|
||||||
- 'packages/**'
|
|
||||||
- 'public/**'
|
|
||||||
|
|
||||||
env:
|
|
||||||
# Space-separated list of keywords referring to plugin extensions
|
|
||||||
PLUGIN_EXTENSION_KEYWORDS: "usePluginLinks, usePluginComponent, usePluginComponents, usePluginFunctions, PluginExtensionPoints"
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
detect-plugin-extension-changes:
|
|
||||||
name: Detect Plugin Extension Changes
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
id-token: write
|
|
||||||
if: github.event.pull_request.head.repo.full_name == github.repository
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
persist-credentials: false
|
|
||||||
|
|
||||||
- name: Check for plugin extension changes
|
|
||||||
id: check-changes
|
|
||||||
uses: actions/github-script@v8
|
|
||||||
with:
|
|
||||||
script: |
|
|
||||||
const { execSync } = require('child_process');
|
|
||||||
const fs = require('fs');
|
|
||||||
|
|
||||||
// Plugin extension keywords from environment
|
|
||||||
const keywords = process.env.PLUGIN_EXTENSION_KEYWORDS.split(',');
|
|
||||||
const baseSha = '${{ github.event.pull_request.base.sha }}';
|
|
||||||
const headSha = '${{ github.event.pull_request.head.sha }}';
|
|
||||||
|
|
||||||
console.log('Checking for plugin extension changes...');
|
|
||||||
console.log('Keywords:', keywords);
|
|
||||||
|
|
||||||
// Get changed files in packages/ and public/ directories
|
|
||||||
let changedFiles = [];
|
|
||||||
const diffOutput = execSync(
|
|
||||||
`git diff --name-only ${baseSha}...${headSha} -- packages/ public/`,
|
|
||||||
{ encoding: 'utf8' }
|
|
||||||
).trim();
|
|
||||||
|
|
||||||
if (diffOutput) {
|
|
||||||
changedFiles = diffOutput.split('\n').filter(file => {
|
|
||||||
// Validate file path and ensure it's in target directories
|
|
||||||
return file.match(/^(packages\/|public\/)/) &&
|
|
||||||
file.match(/^[a-zA-Z0-9._/-]+$/) &&
|
|
||||||
fs.existsSync(file);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log('Changed files to check:', changedFiles);
|
|
||||||
|
|
||||||
// Check each file for plugin extension keywords
|
|
||||||
const filesWithChanges = new Set();
|
|
||||||
let hasPluginExtensionChanges = false;
|
|
||||||
|
|
||||||
for (const file of changedFiles) {
|
|
||||||
try {
|
|
||||||
// Get the diff for this specific file
|
|
||||||
const fileDiff = execSync(
|
|
||||||
`git diff ${baseSha}...${headSha} -- "${file}"`,
|
|
||||||
{ encoding: 'utf8' }
|
|
||||||
);
|
|
||||||
|
|
||||||
// Check if any keywords are in the diff
|
|
||||||
for (const keyword of keywords) {
|
|
||||||
if (fileDiff.includes(keyword)) {
|
|
||||||
console.log(`Found ${keyword} in ${file}`);
|
|
||||||
filesWithChanges.add(file);
|
|
||||||
hasPluginExtensionChanges = true;
|
|
||||||
break; // Found at least one keyword, move to next file
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
console.log(`Error checking file ${file}:`, error.message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set outputs
|
|
||||||
const filesArray = Array.from(filesWithChanges);
|
|
||||||
const formattedFiles = filesArray.length > 0
|
|
||||||
? '`' + filesArray.join('`\\n- `') + '`'
|
|
||||||
: '';
|
|
||||||
|
|
||||||
core.setOutput('plugin_extension_changes', hasPluginExtensionChanges.toString());
|
|
||||||
core.setOutput('formatted_changed_files', formattedFiles);
|
|
||||||
|
|
||||||
if (hasPluginExtensionChanges) {
|
|
||||||
console.log('The following files have changes that may affect plugin extensions:');
|
|
||||||
console.log(filesArray);
|
|
||||||
} else {
|
|
||||||
console.log('No changes detected in core Grafana extensions or extension points.');
|
|
||||||
}
|
|
||||||
|
|
||||||
- name: Send Slack Message via Payload
|
|
||||||
id: slack
|
|
||||||
if: steps.check-changes.outputs.plugin_extension_changes == 'true'
|
|
||||||
uses: grafana/shared-workflows/actions/send-slack-message@0941e3408fa4789fec9062c44a2a9e1832146ba6 #v2.0.1
|
|
||||||
with:
|
|
||||||
method: chat.postMessage
|
|
||||||
payload-templated: true
|
|
||||||
payload: |
|
|
||||||
{
|
|
||||||
"channel": "C031SLFH6G0",
|
|
||||||
"text": "Plugin Extension changes in core Grafana *PR:* <${{ github.event.pull_request.html_url }}|#${{ github.event.pull_request.number }} :information_source:",
|
|
||||||
"icon_emoji": ":grot:",
|
|
||||||
"username": "Plugin Extension Bot",
|
|
||||||
"blocks": [
|
|
||||||
{
|
|
||||||
"type": "section",
|
|
||||||
"text": {
|
|
||||||
"type": "mrkdwn",
|
|
||||||
"text": "*Plugin Extensions:* possible changes to extension points in core Grafana."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "section",
|
|
||||||
"text": {
|
|
||||||
"type": "mrkdwn",
|
|
||||||
"text": "*PR:* <${{ github.event.pull_request.html_url }}|#${{ github.event.pull_request.number }}>\n*Job:* <${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|View Job>\n*Author:* ${{ github.event.pull_request.user.login }}"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "section",
|
|
||||||
"text": {
|
|
||||||
"type": "mrkdwn",
|
|
||||||
"text": "*File(s) with changes:*\n- ${{ steps.check-changes.outputs.formatted_changed_files }}"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "section",
|
|
||||||
"text": {
|
|
||||||
"type": "mrkdwn",
|
|
||||||
"text": "*What to do?*\nMake sure that:\n- All extension point ids start with `grafana/`\n- All extension point ids are exposed via <https://github.com/grafana/grafana/blob/main/packages/grafana-data/src/types/pluginExtensions.ts#L183|the `PluginExtensionPoints` enum in grafana-data>\n- Core Grafana is not registering extensions to extension points offered by plugins"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
2
.github/workflows/documentation-ci.yml
vendored
2
.github/workflows/documentation-ci.yml
vendored
@@ -17,7 +17,7 @@ jobs:
|
|||||||
container:
|
container:
|
||||||
image: grafana/vale:latest # zizmor: ignore[unpinned-images]
|
image: grafana/vale:latest # zizmor: ignore[unpinned-images]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: grafana/writers-toolkit/vale-action@vale-action/v1 # zizmor: ignore[unpinned-uses]
|
- uses: grafana/writers-toolkit/vale-action@vale-action/v1 # zizmor: ignore[unpinned-uses]
|
||||||
|
|||||||
42
.github/workflows/e2e-dashboard-new-layouts.yml
vendored
Normal file
42
.github/workflows/e2e-dashboard-new-layouts.yml
vendored
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
name: Run e2e for dashboardNewLayouts
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- '**'
|
||||||
|
paths:
|
||||||
|
- 'e2e/dashboard-new-layouts/**'
|
||||||
|
- 'public/app/features/dashboard-scene/**'
|
||||||
|
|
||||||
|
env:
|
||||||
|
ARCH: linux-amd64
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
dashboard-new-layouts-e2e:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
continue-on-error: true
|
||||||
|
if: github.event.pull_request.draft == false
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
- name: Pin Go version to mod file
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version-file: 'go.mod'
|
||||||
|
- run: go version
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
cache: 'yarn'
|
||||||
|
- name: Install dependencies
|
||||||
|
run: yarn install --immutable
|
||||||
|
- name: Build grafana
|
||||||
|
run: make build
|
||||||
|
- name: Install Cypress dependencies
|
||||||
|
uses: cypress-io/github-action@108b8684ae52e735ff7891524cbffbcd4be5b19f
|
||||||
|
with:
|
||||||
|
runTests: false
|
||||||
|
- name: Run dashboardNewLayouts e2e
|
||||||
|
run: yarn e2e:dashboard-new-layouts
|
||||||
@@ -10,9 +10,9 @@ permissions: {}
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
handle-ephemeral-instances:
|
handle-ephemeral-instances:
|
||||||
if: ${{ github.repository_owner == 'grafana' && ((github.event.issue.pull_request && startsWith(github.event.comment.body, '/deploy-to-hg')) || github.event.action == 'closed') }}
|
if: ${{ github.event.issue.pull_request && (startsWith(github.event.comment.body, '/deploy-to-hg') || github.event.action == 'closed') && github.repository_owner == 'grafana' }}
|
||||||
runs-on:
|
runs-on:
|
||||||
labels: ubuntu-x64-xlarge
|
labels: ubuntu-latest-16-cores
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
permissions:
|
permissions:
|
||||||
# For commenting.
|
# For commenting.
|
||||||
@@ -33,16 +33,6 @@ jobs:
|
|||||||
GCOM_TOKEN=ephemeral-instances-bot:gcom-token
|
GCOM_TOKEN=ephemeral-instances-bot:gcom-token
|
||||||
REGISTRY=ephemeral-instances-bot:registry
|
REGISTRY=ephemeral-instances-bot:registry
|
||||||
GCP_SA_ACCOUNT_KEY_BASE64=ephemeral-instances-bot:sa-key
|
GCP_SA_ACCOUNT_KEY_BASE64=ephemeral-instances-bot:sa-key
|
||||||
# Secrets placed in the ci/common/<path> path in Vault
|
|
||||||
common_secrets: |
|
|
||||||
DOCKERHUB_USERNAME=dockerhub:username
|
|
||||||
DOCKERHUB_PASSWORD=dockerhub:password
|
|
||||||
|
|
||||||
- name: Log in to Docker Hub to avoid unauthenticated image pull rate-limiting
|
|
||||||
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
|
|
||||||
with:
|
|
||||||
username: ${{ env.DOCKERHUB_USERNAME }}
|
|
||||||
password: ${{ env.DOCKERHUB_PASSWORD }}
|
|
||||||
|
|
||||||
- name: Generate a GitHub app installation token
|
- name: Generate a GitHub app installation token
|
||||||
id: generate_token
|
id: generate_token
|
||||||
@@ -52,7 +42,7 @@ jobs:
|
|||||||
private_key: ${{ env.APP_PEM }}
|
private_key: ${{ env.APP_PEM }}
|
||||||
|
|
||||||
- name: Checkout ephemeral instances repository
|
- name: Checkout ephemeral instances repository
|
||||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||||
with:
|
with:
|
||||||
repository: grafana/ephemeral-grafana-instances-github-action
|
repository: grafana/ephemeral-grafana-instances-github-action
|
||||||
token: ${{ steps.generate_token.outputs.token }}
|
token: ${{ steps.generate_token.outputs.token }}
|
||||||
|
|||||||
6
.github/workflows/feature-toggles-ci.yml
vendored
6
.github/workflows/feature-toggles-ci.yml
vendored
@@ -11,20 +11,18 @@ permissions: {}
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
test:
|
test:
|
||||||
name: Feature toggles documentation is in sync with source
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Set up Go
|
- name: Set up Go
|
||||||
uses: actions/setup-go@v6.0.0
|
uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
go-version-file: 'go.mod'
|
go-version-file: 'go.mod'
|
||||||
cache: true
|
cache: true
|
||||||
|
|||||||
85
.github/workflows/frontend-lint.yml
vendored
85
.github/workflows/frontend-lint.yml
vendored
@@ -16,9 +16,8 @@ jobs:
|
|||||||
contents: read
|
contents: read
|
||||||
outputs:
|
outputs:
|
||||||
changed: ${{ steps.detect-changes.outputs.frontend }}
|
changed: ${{ steps.detect-changes.outputs.frontend }}
|
||||||
prettier: ${{ steps.detect-changes.outputs.frontend == 'true' || steps.detect-changes.outputs.docs == 'true' }}
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: true # required to get more history in the changed-files action
|
persist-credentials: true # required to get more history in the changed-files action
|
||||||
fetch-depth: 2
|
fetch-depth: 2
|
||||||
@@ -35,14 +34,14 @@ jobs:
|
|||||||
id-token: write
|
id-token: write
|
||||||
# Run this workflow only for PRs from forks; if it gets merged into `main` or `release-*`,
|
# Run this workflow only for PRs from forks; if it gets merged into `main` or `release-*`,
|
||||||
# the `lint-frontend-prettier-enterprise` workflow will run instead
|
# the `lint-frontend-prettier-enterprise` workflow will run instead
|
||||||
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork == true && needs.detect-changes.outputs.prettier == 'true'
|
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork == true && needs.detect-changes.outputs.changed == 'true'
|
||||||
name: Lint
|
name: Lint
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-node@v6
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'yarn'
|
cache: 'yarn'
|
||||||
@@ -56,14 +55,14 @@ jobs:
|
|||||||
contents: read
|
contents: read
|
||||||
id-token: write
|
id-token: write
|
||||||
# Run this workflow for non-PR events (like pushes to `main` or `release-*`) OR for internal PRs (PRs not from forks)
|
# Run this workflow for non-PR events (like pushes to `main` or `release-*`) OR for internal PRs (PRs not from forks)
|
||||||
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false && needs.detect-changes.outputs.prettier == 'true'
|
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false && needs.detect-changes.outputs.changed == 'true'
|
||||||
name: Lint
|
name: Lint
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-node@v6
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'yarn'
|
cache: 'yarn'
|
||||||
@@ -86,10 +85,10 @@ jobs:
|
|||||||
name: Typecheck
|
name: Typecheck
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-node@v6
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'yarn'
|
cache: 'yarn'
|
||||||
@@ -106,10 +105,10 @@ jobs:
|
|||||||
name: Typecheck
|
name: Typecheck
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-node@v6
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'yarn'
|
cache: 'yarn'
|
||||||
@@ -120,70 +119,22 @@ jobs:
|
|||||||
github-app-name: 'grafana-ci-bot'
|
github-app-name: 'grafana-ci-bot'
|
||||||
- run: yarn install --immutable --check-cache
|
- run: yarn install --immutable --check-cache
|
||||||
- run: yarn run typecheck
|
- run: yarn run typecheck
|
||||||
lint-frontend-api-clients:
|
lint-frontend-betterer:
|
||||||
|
needs: detect-changes
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
id-token: write
|
id-token: write
|
||||||
# Run this workflow only for PRs from forks; if it gets merged into `main` or `release-*`,
|
if: needs.detect-changes.outputs.changed == 'true'
|
||||||
# the `lint-frontend-api-clients-enterprise` workflow will run instead
|
name: Betterer
|
||||||
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork == true
|
|
||||||
name: Verify API clients
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-node@v6
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'yarn'
|
cache: 'yarn'
|
||||||
cache-dependency-path: 'yarn.lock'
|
cache-dependency-path: 'yarn.lock'
|
||||||
- run: yarn install --immutable --check-cache
|
- run: yarn install --immutable --check-cache
|
||||||
- name: Generate API clients
|
- run: yarn run betterer:ci
|
||||||
run: |
|
|
||||||
extract_error_message='ERROR! API client generation failed!'
|
|
||||||
yarn generate-apis || (echo "${extract_error_message}" && false)
|
|
||||||
- name: Verify generated clients
|
|
||||||
run: |
|
|
||||||
uncommited_error_message="ERROR! API client generation has not been committed. Please run 'yarn generate-apis', commit the changes and push again."
|
|
||||||
file_diff="$(git diff ':!conf')"
|
|
||||||
if [ -n "$file_diff" ]; then
|
|
||||||
echo "$file_diff"
|
|
||||||
echo "${uncommited_error_message}"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
lint-frontend-api-clients-enterprise:
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
id-token: write
|
|
||||||
# Run this workflow for non-PR events (like pushes to `main` or `release-*`) OR for internal PRs (PRs not from forks)
|
|
||||||
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false
|
|
||||||
name: Verify API clients (enterprise)
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
- uses: actions/setup-node@v6
|
|
||||||
with:
|
|
||||||
node-version-file: '.nvmrc'
|
|
||||||
cache: 'yarn'
|
|
||||||
cache-dependency-path: 'yarn.lock'
|
|
||||||
- name: Setup Enterprise
|
|
||||||
uses: ./.github/actions/setup-enterprise
|
|
||||||
with:
|
|
||||||
github-app-name: 'grafana-ci-bot'
|
|
||||||
- run: yarn install --immutable --check-cache
|
|
||||||
- name: Generate API clients
|
|
||||||
run: |
|
|
||||||
extract_error_message='ERROR! API client generation failed!'
|
|
||||||
yarn generate-apis || (echo "${extract_error_message}" && false)
|
|
||||||
- name: Verify generated clients
|
|
||||||
run: |
|
|
||||||
uncommited_error_message="ERROR! API client generation has not been committed. Please run 'yarn generate-apis', commit the changes and push again."
|
|
||||||
file_diff="$(git diff ':!conf')"
|
|
||||||
if [ -n "$file_diff" ]; then
|
|
||||||
echo "$file_diff"
|
|
||||||
echo "${uncommited_error_message}"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|||||||
133
.github/workflows/frontend-perf-tests.yaml
vendored
133
.github/workflows/frontend-perf-tests.yaml
vendored
@@ -1,133 +0,0 @@
|
|||||||
name: Frontend performance tests
|
|
||||||
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
- cron: "0 * * * *" # Run hourly
|
|
||||||
workflow_dispatch: # Allow manual triggering
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
performance-tests:
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
id-token: write
|
|
||||||
runs-on: ubuntu-x64-large
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repo
|
|
||||||
uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
|
|
||||||
- id: get-secrets
|
|
||||||
uses: grafana/shared-workflows/actions/get-vault-secrets@62722333225a1fae03ae27a63d638f9bc2176edb #get-vault-secrets-v1.2.0
|
|
||||||
with:
|
|
||||||
repo_secrets: |
|
|
||||||
PROMETHEUS_URL=frontend_perf_tests:prometheus_push_url
|
|
||||||
PROMETHEUS_USER=frontend_perf_tests:prometheus_user
|
|
||||||
PROMETHEUS_TOKEN=frontend_perf_tests:prometheus_token
|
|
||||||
FSPERFBASELINE_USERNAME=frontend_perf_tests:fsperfbaseline_username
|
|
||||||
FSPERFBASELINE_PASSWORD=frontend_perf_tests:fsperfbaseline_password
|
|
||||||
FSPERF_USERNAME=frontend_perf_tests:fsperf_username
|
|
||||||
FSPERF_PASSWORD=frontend_perf_tests:fsperf_password
|
|
||||||
|
|
||||||
- name: Authenticate Docker
|
|
||||||
uses: grafana/shared-workflows/actions/login-to-gar@main
|
|
||||||
id: login-to-gar
|
|
||||||
with:
|
|
||||||
registry: 'us-docker.pkg.dev'
|
|
||||||
|
|
||||||
- name: Setup Node.js
|
|
||||||
uses: ./.github/actions/setup-node
|
|
||||||
|
|
||||||
- name: Yarn install
|
|
||||||
run: yarn install --immutable
|
|
||||||
env:
|
|
||||||
PUPPETEER_SKIP_DOWNLOAD: true
|
|
||||||
CYPRESS_INSTALL_BINARY: 0
|
|
||||||
|
|
||||||
- name: Install Playwright browsers
|
|
||||||
run: yarn playwright install chromium --with-deps
|
|
||||||
|
|
||||||
- name: Run Playwright tests (fsperfbaseline)
|
|
||||||
id: pw-fsperfbaseline
|
|
||||||
continue-on-error: true
|
|
||||||
env:
|
|
||||||
PLAYWRIGHT_JSON_OUTPUT_NAME: ./fsperfbaseline-pw-results.json
|
|
||||||
METRICS_OUTPUT_PATH: ./fsperfbaseline-metrics.txt
|
|
||||||
GRAFANA_URL: https://fsperfbaseline.grafana-dev.net
|
|
||||||
GRAFANA_ADMIN_USER: ${{ env.FSPERFBASELINE_USERNAME }}
|
|
||||||
GRAFANA_ADMIN_PASSWORD: ${{ env.FSPERFBASELINE_PASSWORD }}
|
|
||||||
run: yarn e2e:playwright --grep @performance --reporter json
|
|
||||||
|
|
||||||
- name: Run Playwright tests (fsperf)
|
|
||||||
id: pw-fsperf
|
|
||||||
continue-on-error: true
|
|
||||||
env:
|
|
||||||
PLAYWRIGHT_JSON_OUTPUT_NAME: ./fsperf-pw-results.json
|
|
||||||
METRICS_OUTPUT_PATH: ./fsperf-metrics.txt
|
|
||||||
GRAFANA_URL: https://fsperf.grafana-dev.net
|
|
||||||
GRAFANA_ADMIN_USER: ${{ env.FSPERF_USERNAME }}
|
|
||||||
GRAFANA_ADMIN_PASSWORD: ${{ env.FSPERF_PASSWORD }}
|
|
||||||
run: yarn e2e:playwright --grep @performance --reporter json
|
|
||||||
|
|
||||||
- name: Bench report (fsperfbaseline)
|
|
||||||
id: bench-fsperfbaseline
|
|
||||||
if: always()
|
|
||||||
continue-on-error: true
|
|
||||||
run: |
|
|
||||||
docker run \
|
|
||||||
--rm \
|
|
||||||
--volume="./fsperfbaseline-pw-results.json:/pw-results.json" \
|
|
||||||
--volume="./fsperfbaseline-metrics.txt:/metrics.txt" \
|
|
||||||
-e PROMETHEUS_URL="$PROMETHEUS_URL" \
|
|
||||||
-e PROMETHEUS_USER="$PROMETHEUS_USER" \
|
|
||||||
-e PROMETHEUS_PASSWORD="$PROMETHEUS_TOKEN" \
|
|
||||||
us-docker.pkg.dev/grafanalabs-global/docker-grafana-bench-prod/grafana-bench:v0.6.1 report \
|
|
||||||
--grafana-url "http://fsperfbaseline.grafana-dev.net" \
|
|
||||||
--test-suite-name "FrontendPerfTests" \
|
|
||||||
--report-input playwright \
|
|
||||||
--report-output log \
|
|
||||||
--prometheus-metrics \
|
|
||||||
--run-metrics-file "/metrics.txt" \
|
|
||||||
--log-level DEBUG \
|
|
||||||
/pw-results.json
|
|
||||||
|
|
||||||
- name: Bench report (fsperf)
|
|
||||||
id: bench-fsperf
|
|
||||||
if: always()
|
|
||||||
continue-on-error: true
|
|
||||||
run: |
|
|
||||||
docker run \
|
|
||||||
--rm \
|
|
||||||
--volume="./fsperf-pw-results.json:/pw-results.json" \
|
|
||||||
--volume="./fsperf-metrics.txt:/metrics.txt" \
|
|
||||||
-e PROMETHEUS_URL="$PROMETHEUS_URL" \
|
|
||||||
-e PROMETHEUS_USER="$PROMETHEUS_USER" \
|
|
||||||
-e PROMETHEUS_PASSWORD="$PROMETHEUS_TOKEN" \
|
|
||||||
us-docker.pkg.dev/grafanalabs-global/docker-grafana-bench-prod/grafana-bench:v0.6.1 report \
|
|
||||||
--grafana-url "http://fsperf.grafana-dev.net" \
|
|
||||||
--test-suite-name "FrontendPerfTests" \
|
|
||||||
--report-input playwright \
|
|
||||||
--report-output log \
|
|
||||||
--prometheus-metrics \
|
|
||||||
--run-metrics-file "/metrics.txt" \
|
|
||||||
--log-level DEBUG \
|
|
||||||
/pw-results.json
|
|
||||||
|
|
||||||
- name: Check status
|
|
||||||
env:
|
|
||||||
FSPERF_PW_OUTCOME: ${{ steps.pw-fsperf.outcome }}
|
|
||||||
FSPERF_PW_BASELINE_OUTCOME: ${{ steps.pw-fsperfbaseline.outcome }}
|
|
||||||
FSPERF_BENCH_OUTCOME: ${{ steps.bench-fsperf.outcome }}
|
|
||||||
FSPERF_BENCH_BASELINE_OUTCOME: ${{ steps.bench-fsperfbaseline.outcome }}
|
|
||||||
|
|
||||||
run: |
|
|
||||||
echo "FSPERF_PW_OUTCOME: $FSPERF_PW_OUTCOME"
|
|
||||||
echo "FSPERF_PW_BASELINE_OUTCOME: $FSPERF_PW_BASELINE_OUTCOME"
|
|
||||||
echo "FSPERF_BENCH_OUTCOME: $FSPERF_BENCH_OUTCOME"
|
|
||||||
echo "FSPERF_BENCH_BASELINE_OUTCOME: $FSPERF_BENCH_BASELINE_OUTCOME"
|
|
||||||
|
|
||||||
if [[ "$FSPERF_PW_OUTCOME" != "success" || "$FSPERF_PW_BASELINE_OUTCOME" != "success" || "$FSPERF_BENCH_OUTCOME" != "success" || "$FSPERF_BENCH_BASELINE_OUTCOME" != "success" ]]; then
|
|
||||||
echo "One or more test steps failed."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
51
.github/workflows/go-lint.yml
vendored
51
.github/workflows/go-lint.yml
vendored
@@ -13,60 +13,17 @@ permissions:
|
|||||||
contents: read
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
detect-changes:
|
|
||||||
# Run on `grafana/grafana` main branch, or on pull requests to prevent double-running on mirrors
|
|
||||||
if: (github.event_name == 'pull_request' || (github.event_name == 'push' && github.repository == 'grafana/grafana'))
|
|
||||||
name: Detect whether code changed
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
outputs:
|
|
||||||
changed: ${{ steps.detect-changes.outputs.backend }}
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
persist-credentials: true # required to get more history in the changed-files action
|
|
||||||
fetch-depth: 2
|
|
||||||
- name: Detect changes
|
|
||||||
id: detect-changes
|
|
||||||
uses: ./.github/actions/change-detection
|
|
||||||
with:
|
|
||||||
self: .github/workflows/go-lint.yml
|
|
||||||
|
|
||||||
go-fmt:
|
|
||||||
needs: detect-changes
|
|
||||||
if: needs.detect-changes.outputs.changed == 'true'
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
- uses: actions/setup-go@v6.0.0
|
|
||||||
with:
|
|
||||||
go-version-file: ./go.mod
|
|
||||||
- name: Run gofmt
|
|
||||||
run: |
|
|
||||||
GOFMT="$(go list -m -f '{{.Dir}}' | xargs -I{} sh -c 'test ! -f {}/.nolint && echo {}' | xargs gofmt -s -e -l 2>&1 | grep -v '/pkg/build/' || true)"
|
|
||||||
if [ -n "$GOFMT" ]; then
|
|
||||||
echo "Found files that are not gofmt'ed"
|
|
||||||
echo "Run 'gofmt -s -w .' or 'make gofmt' or install the pre-commit hook with 'make lefthook-install'"
|
|
||||||
echo "${GOFMT}"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
lint-go:
|
lint-go:
|
||||||
needs: detect-changes
|
runs-on: ubuntu-latest
|
||||||
if: needs.detect-changes.outputs.changed == 'true'
|
|
||||||
runs-on: ubuntu-x64-large-io
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-go@v6.0.0
|
- uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
go-version-file: ./go.mod
|
go-version-file: ./go.mod
|
||||||
- name: golangci-lint
|
- name: golangci-lint
|
||||||
uses: golangci/golangci-lint-action@4afd733a84b1f43292c63897423277bb7f4313a9
|
uses: golangci/golangci-lint-action@1481404843c368bc19ca9406f87d6e0fc97bdcfd
|
||||||
with:
|
with:
|
||||||
version: v2.5.0
|
version: v2.5.0
|
||||||
args: |
|
args: |
|
||||||
|
|||||||
2
.github/workflows/i18n-verify.yml
vendored
2
.github/workflows/i18n-verify.yml
vendored
@@ -12,6 +12,4 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
verify-i18n:
|
verify-i18n:
|
||||||
# Run on `grafana/grafana` main branch, or on pull requests to prevent double-running on mirrors
|
|
||||||
if: (github.event_name == 'pull_request' || (github.event_name == 'push' && github.repository == 'grafana/grafana'))
|
|
||||||
uses: grafana/grafana-github-actions/.github/workflows/verify-i18n.yml@main
|
uses: grafana/grafana-github-actions/.github/workflows/verify-i18n.yml@main
|
||||||
|
|||||||
68
.github/workflows/issue-opened.yml
vendored
68
.github/workflows/issue-opened.yml
vendored
@@ -22,7 +22,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
|
|
||||||
- name: Checkout Actions
|
- name: Checkout Actions
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4 # v4.2.2
|
||||||
with:
|
with:
|
||||||
repository: "grafana/grafana-github-actions"
|
repository: "grafana/grafana-github-actions"
|
||||||
path: ./actions
|
path: ./actions
|
||||||
@@ -39,7 +39,7 @@ jobs:
|
|||||||
|
|
||||||
- name: "Get vault secrets"
|
- name: "Get vault secrets"
|
||||||
id: vault-secrets
|
id: vault-secrets
|
||||||
uses: grafana/shared-workflows/actions/get-vault-secrets@get-vault-secrets/v1.3.0 # zizmor: ignore[unpinned-uses]
|
uses: grafana/shared-workflows/actions/get-vault-secrets@main # zizmor: ignore[unpinned-uses]
|
||||||
with:
|
with:
|
||||||
# Secrets placed in the ci/repo/grafana/grafana/plugins_platform_issue_commands_github_bot path in Vault
|
# Secrets placed in the ci/repo/grafana/grafana/plugins_platform_issue_commands_github_bot path in Vault
|
||||||
repo_secrets: |
|
repo_secrets: |
|
||||||
@@ -48,11 +48,10 @@ jobs:
|
|||||||
|
|
||||||
- name: Generate token
|
- name: Generate token
|
||||||
id: generate_token
|
id: generate_token
|
||||||
uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6
|
uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2
|
||||||
with:
|
with:
|
||||||
app-id: ${{ env.GITHUB_APP_ID }}
|
app-id: ${{ env.GITHUB_APP_ID }}
|
||||||
private-key: ${{ env.GITHUB_APP_PRIVATE_KEY }}
|
private-key: ${{ env.GITHUB_APP_PRIVATE_KEY }}
|
||||||
permission-issues: write
|
|
||||||
|
|
||||||
- name: Run Commands
|
- name: Run Commands
|
||||||
uses: ./actions/commands
|
uses: ./actions/commands
|
||||||
@@ -65,13 +64,13 @@ jobs:
|
|||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
id-token: write
|
id-token: write
|
||||||
if: github.repository == 'grafana/grafana'
|
if: github.repository == 'grafana/grafana' && github.event.issue.author_association != 'MEMBER' && github.event.issue.author_association != 'OWNER'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
- name: "Get vault secrets"
|
- name: "Get vault secrets"
|
||||||
id: vault-secrets
|
id: vault-secrets
|
||||||
uses: grafana/shared-workflows/actions/get-vault-secrets@get-vault-secrets/v1.3.0 # zizmor: ignore[unpinned-uses]
|
uses: grafana/shared-workflows/actions/get-vault-secrets@main # zizmor: ignore[unpinned-uses]
|
||||||
with:
|
with:
|
||||||
# Secrets placed in the ci/repo/grafana/grafana/plugins_platform_issue_triager path in Vault
|
# Secrets placed in the ci/repo/grafana/grafana/plugins_platform_issue_triager path in Vault
|
||||||
repo_secrets: |
|
repo_secrets: |
|
||||||
@@ -82,29 +81,18 @@ jobs:
|
|||||||
|
|
||||||
- name: Generate token
|
- name: Generate token
|
||||||
id: generate_token
|
id: generate_token
|
||||||
uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6
|
uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2
|
||||||
with:
|
with:
|
||||||
app-id: ${{ env.GITHUB_APP_ID }}
|
app-id: ${{ env.GITHUB_APP_ID }}
|
||||||
private-key: ${{ env.GITHUB_APP_PRIVATE_KEY }}
|
private-key: ${{ env.GITHUB_APP_PRIVATE_KEY }}
|
||||||
permission-members: read
|
|
||||||
permission-issues: write
|
|
||||||
- name: Check if member of grafana org
|
|
||||||
id: check-if-grafana-org-member
|
|
||||||
continue-on-error: true
|
|
||||||
run: gh api https://api.github.com/orgs/grafana/members/${{ env.ACTOR }} >/dev/null 2>&1 && echo "is_grafana_org_member=true" >> "$GITHUB_OUTPUT"
|
|
||||||
env:
|
|
||||||
GH_TOKEN: ${{ steps.generate_token.outputs.token }}
|
|
||||||
ACTOR: ${{ github.actor }}
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
if: steps.check-if-grafana-org-member.outputs.is_grafana_org_member != 'true' && github.event.issue.author_association != 'MEMBER' && github.event.issue.author_association != 'OWNER'
|
uses: actions/checkout@v4 # v4.2.2
|
||||||
uses: actions/checkout@v5
|
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
sparse-checkout: |
|
|
||||||
.github/workflows/auto-triager
|
|
||||||
- name: Send issue to the auto triager action
|
- name: Send issue to the auto triager action
|
||||||
id: auto_triage
|
id: auto_triage
|
||||||
if: steps.check-if-grafana-org-member.outputs.is_grafana_org_member != 'true' && github.event.issue.author_association != 'MEMBER' && github.event.issue.author_association != 'OWNER'
|
|
||||||
uses: grafana/auto-triager@main # zizmor: ignore[unpinned-uses]
|
uses: grafana/auto-triager@main # zizmor: ignore[unpinned-uses]
|
||||||
with:
|
with:
|
||||||
token: ${{ steps.generate_token.outputs.token }}
|
token: ${{ steps.generate_token.outputs.token }}
|
||||||
@@ -129,41 +117,3 @@ jobs:
|
|||||||
}
|
}
|
||||||
env:
|
env:
|
||||||
SLACK_WEBHOOK_URL: ${{ env.AUTOTRIAGER_SLACK_WEBHOOK_URL }}
|
SLACK_WEBHOOK_URL: ${{ env.AUTOTRIAGER_SLACK_WEBHOOK_URL }}
|
||||||
auto-label-internal-issues:
|
|
||||||
needs: [main]
|
|
||||||
if: github.repository == 'grafana/grafana'
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
issues: write
|
|
||||||
id-token: write
|
|
||||||
steps:
|
|
||||||
- name: "Get vault secrets"
|
|
||||||
id: vault-secrets
|
|
||||||
uses: grafana/shared-workflows/actions/get-vault-secrets@get-vault-secrets/v1.3.0 # zizmor: ignore[unpinned-uses]
|
|
||||||
with:
|
|
||||||
# Secrets placed in the ci/repo/grafana/grafana/plugins_platform_issue_triager path in Vault
|
|
||||||
repo_secrets: |
|
|
||||||
GITHUB_APP_ID=plugins_platform_issue_triager_github_bot:app_id
|
|
||||||
GITHUB_APP_PRIVATE_KEY=plugins_platform_issue_triager_github_bot:app_pem
|
|
||||||
- name: Generate token
|
|
||||||
id: generate_token
|
|
||||||
uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6
|
|
||||||
with:
|
|
||||||
app-id: ${{ env.GITHUB_APP_ID }}
|
|
||||||
private-key: ${{ env.GITHUB_APP_PRIVATE_KEY }}
|
|
||||||
permission-members: read
|
|
||||||
- name: Check if member of grafana org
|
|
||||||
id: check-if-grafana-org-member
|
|
||||||
continue-on-error: true
|
|
||||||
run: gh api https://api.github.com/orgs/grafana/members/${{ env.ACTOR }} >/dev/null 2>&1 && echo "is_grafana_org_member=true" >> "$GITHUB_OUTPUT"
|
|
||||||
env:
|
|
||||||
GH_TOKEN: ${{ steps.generate_token.outputs.token }}
|
|
||||||
ACTOR: ${{ github.actor }}
|
|
||||||
- name: "Auto label internal issues"
|
|
||||||
if: steps.check-if-grafana-org-member.outputs.is_grafana_org_member == 'true' || github.event.issue.author_association == 'MEMBER' || github.event.issue.author_association == 'OWNER'
|
|
||||||
run: gh issue edit "$NUMBER" --add-label "$LABELS"
|
|
||||||
env:
|
|
||||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
GH_REPO: ${{ github.repository }}
|
|
||||||
NUMBER: ${{ github.event.issue.number }}
|
|
||||||
LABELS: internal
|
|
||||||
|
|||||||
6
.github/workflows/lint-build-docs.yml
vendored
6
.github/workflows/lint-build-docs.yml
vendored
@@ -20,8 +20,6 @@ permissions: {}
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
docs:
|
docs:
|
||||||
# Run on `grafana/grafana` main branch, or on pull requests to prevent double-running on mirrors
|
|
||||||
if: (github.event_name == 'pull_request' || (github.event_name == 'push' && github.repository == 'grafana/grafana'))
|
|
||||||
name: Build & Verify Docs
|
name: Build & Verify Docs
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
@@ -30,12 +28,12 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Setup Node.js
|
- name: Setup Node.js
|
||||||
uses: actions/setup-node@v6
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'yarn'
|
cache: 'yarn'
|
||||||
|
|||||||
2
.github/workflows/pr-checks.yml
vendored
2
.github/workflows/pr-checks.yml
vendored
@@ -31,7 +31,7 @@ jobs:
|
|||||||
if: github.event.pull_request.draft == false
|
if: github.event.pull_request.draft == false
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Actions
|
- name: Checkout Actions
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4 # v4.2.2
|
||||||
with:
|
with:
|
||||||
repository: "grafana/grafana-github-actions"
|
repository: "grafana/grafana-github-actions"
|
||||||
path: ./actions
|
path: ./actions
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
# We must fetch at least the immediate parents so that if this is
|
# We must fetch at least the immediate parents so that if this is
|
||||||
# a pull request then we can checkout the head.
|
# a pull request then we can checkout the head.
|
||||||
@@ -29,9 +29,9 @@ jobs:
|
|||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@v4
|
uses: github/codeql-action/init@v3
|
||||||
with:
|
with:
|
||||||
languages: "javascript"
|
languages: "javascript"
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@v4
|
uses: github/codeql-action/analyze@v3
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
# We must fetch at least the immediate parents so that if this is
|
# We must fetch at least the immediate parents so that if this is
|
||||||
# a pull request then we can checkout the head.
|
# a pull request then we can checkout the head.
|
||||||
@@ -39,10 +39,10 @@ jobs:
|
|||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
if: steps.check-python.outputs.skip != 'true'
|
if: steps.check-python.outputs.skip != 'true'
|
||||||
uses: github/codeql-action/init@v4
|
uses: github/codeql-action/init@v3
|
||||||
with:
|
with:
|
||||||
languages: "python"
|
languages: "python"
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
if: steps.check-python.outputs.skip != 'true'
|
if: steps.check-python.outputs.skip != 'true'
|
||||||
uses: github/codeql-action/analyze@v4
|
uses: github/codeql-action/analyze@v3
|
||||||
|
|||||||
2
.github/workflows/pr-commands.yml
vendored
2
.github/workflows/pr-commands.yml
vendored
@@ -16,7 +16,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Actions
|
- name: Checkout Actions
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4 # v4.2.2
|
||||||
with:
|
with:
|
||||||
repository: "grafana/grafana-github-actions"
|
repository: "grafana/grafana-github-actions"
|
||||||
path: ./actions
|
path: ./actions
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ permissions:
|
|||||||
jobs:
|
jobs:
|
||||||
update:
|
update:
|
||||||
runs-on: "ubuntu-latest"
|
runs-on: "ubuntu-latest"
|
||||||
if: ${{ github.event.pull_request.user.login == 'dependabot[bot]' && github.event.pull_request.head.repo.full_name == github.repository }}
|
if: ${{ github.actor == 'dependabot[bot]' && github.event.pull_request.head.repo.full_name == github.repository }}
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
steps:
|
steps:
|
||||||
- name: Retrieve GitHub App secrets
|
- name: Retrieve GitHub App secrets
|
||||||
@@ -37,7 +37,7 @@ jobs:
|
|||||||
private-key: ${{ env.PRIVATE_KEY }}
|
private-key: ${{ env.PRIVATE_KEY }}
|
||||||
|
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
repository: ${{ github.event.pull_request.head.repo.full_name }}
|
repository: ${{ github.event.pull_request.head.repo.full_name }}
|
||||||
ref: ${{ github.event.pull_request.head.ref }}
|
ref: ${{ github.event.pull_request.head.ref }}
|
||||||
@@ -45,7 +45,7 @@ jobs:
|
|||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Set go version
|
- name: Set go version
|
||||||
uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00
|
uses: actions/setup-go@19bb51245e9c80abacb2e91cc42b33fa478b8639
|
||||||
with:
|
with:
|
||||||
go-version-file: go.mod
|
go-version-file: go.mod
|
||||||
|
|
||||||
|
|||||||
445
.github/workflows/pr-e2e-tests.yml
vendored
445
.github/workflows/pr-e2e-tests.yml
vendored
@@ -7,30 +7,22 @@ on:
|
|||||||
- main
|
- main
|
||||||
- release-*.*.*
|
- release-*.*.*
|
||||||
|
|
||||||
# TODO: re-enable this before merging
|
concurrency:
|
||||||
# concurrency:
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
# group: ${{ github.workflow }}-${{ github.ref }}
|
cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }}
|
||||||
# cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }}
|
|
||||||
|
|
||||||
permissions: {}
|
permissions: {}
|
||||||
|
|
||||||
env:
|
|
||||||
ACTIONS_STEP_DEBUG: true
|
|
||||||
RUNNER_DEBUG: 1
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
detect-changes:
|
detect-changes:
|
||||||
# Run on `grafana/grafana` main branch, or on pull requests to prevent double-running on mirrors
|
|
||||||
if: (github.event_name == 'pull_request' || (github.event_name == 'push' && github.repository == 'grafana/grafana'))
|
|
||||||
name: Detect whether code changed
|
name: Detect whether code changed
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
outputs:
|
outputs:
|
||||||
changed: ${{ steps.detect-changes.outputs.e2e }}
|
changed: ${{ steps.detect-changes.outputs.e2e }}
|
||||||
cloud_plugins_changed: ${{ steps.detect-changes.outputs.e2e-cloud-plugins }}
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: true # required to get more history in the changed-files action
|
persist-credentials: true # required to get more history in the changed-files action
|
||||||
fetch-depth: 2
|
fetch-depth: 2
|
||||||
@@ -47,67 +39,28 @@ jobs:
|
|||||||
runs-on: ubuntu-latest-16-cores
|
runs-on: ubuntu-latest-16-cores
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
|
outputs:
|
||||||
|
artifact: ${{ steps.artifact.outputs.artifact }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
|
path: ./grafana
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
- uses: dagger/dagger-for-github@e47aba410ef9bb9ed81a4d2a97df31061e5e842e
|
||||||
# TODO: add a cleanup workflow to remove the cache when the PR is closed
|
|
||||||
# https://github.com/actions/cache/blob/main/tips-and-workarounds.md#force-deletion-of-caches-overriding-default-cache-eviction-policy
|
|
||||||
# TODO: maybe we could just use the cache to store the build, instead of uploading as an artifact?
|
|
||||||
- uses: actions/cache@v4
|
|
||||||
id: cache
|
|
||||||
with:
|
|
||||||
key: "build-grafana-${{ runner.os }}-${{ hashFiles('yarn.lock', 'public/*', 'packages/*', 'conf/*', 'pkg/**/*.go', '**/go.mod', '**/go.sum', '!**_test.go', '!**.test.ts', '!**.test.tsx', 'Dockerfile') }}"
|
|
||||||
path: |
|
|
||||||
build-dir
|
|
||||||
|
|
||||||
# If no cache hit, build Grafana
|
|
||||||
- name: Build Grafana
|
|
||||||
if: steps.cache.outputs.cache-hit != 'true'
|
|
||||||
uses: dagger/dagger-for-github@d913e70051faf3b907d4dd96ef1161083c88c644
|
|
||||||
with:
|
with:
|
||||||
version: 0.18.8
|
version: 0.18.8
|
||||||
verb: run
|
verb: run
|
||||||
args: go run ./pkg/build/cmd artifacts -a targz:grafana:linux/amd64 -a docker:grafana:linux/amd64 --grafana-dir="${PWD}" > out.txt
|
args: go -C grafana run ./pkg/build/cmd artifacts -a targz:grafana:linux/amd64 --grafana-dir="${PWD}/grafana" > out.txt
|
||||||
- name: Cat built artifact
|
- run: mv "$(cat out.txt)" grafana.tar.gz
|
||||||
if: steps.cache.outputs.cache-hit != 'true'
|
- run: echo "artifact=grafana-e2e-${{github.run_number}}" >> "$GITHUB_OUTPUT"
|
||||||
run: cat out.txt
|
|
||||||
- name: Move built artifacts
|
|
||||||
if: steps.cache.outputs.cache-hit != 'true'
|
|
||||||
run: |
|
|
||||||
mkdir -p build-dir
|
|
||||||
mv "$(grep 'grafana_.*tar.gz$' out.txt | grep -Fv -m1 'docker')" build-dir/grafana.tar.gz
|
|
||||||
mv "$(grep 'grafana_.*docker.tar.gz$' out.txt)" build-dir/grafana.docker.tar.gz
|
|
||||||
|
|
||||||
# If cache hit, validate the artifact is present
|
|
||||||
- name: Validate artifact
|
|
||||||
if: steps.cache.outputs.cache-hit == 'true'
|
|
||||||
run: |
|
|
||||||
if [ ! -f build-dir/grafana.tar.gz ]; then
|
|
||||||
echo "Error: build-dir/grafana.tar.gz not found in cache"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Set artifact name
|
|
||||||
run: echo "artifact=grafana-server-${{github.run_number}}" >> "$GITHUB_OUTPUT"
|
|
||||||
id: artifact
|
id: artifact
|
||||||
|
- uses: actions/upload-artifact@v4
|
||||||
- name: Upload grafana.tar.gz
|
id: upload
|
||||||
uses: actions/upload-artifact@v5
|
|
||||||
with:
|
with:
|
||||||
retention-days: 1
|
retention-days: 1
|
||||||
name: grafana-tar-gz
|
name: ${{ steps.artifact.outputs.artifact }}
|
||||||
path: build-dir/grafana.tar.gz
|
path: grafana.tar.gz
|
||||||
|
|
||||||
- name: Upload grafana docker tarball
|
|
||||||
uses: actions/upload-artifact@v5
|
|
||||||
with:
|
|
||||||
retention-days: 1
|
|
||||||
name: grafana-docker-tar-gz
|
|
||||||
path: build-dir/grafana.docker.tar.gz
|
|
||||||
|
|
||||||
# TODO: we won't need this when we only have playwright
|
|
||||||
build-e2e-runner:
|
build-e2e-runner:
|
||||||
needs: detect-changes
|
needs: detect-changes
|
||||||
if: needs.detect-changes.outputs.changed == 'true'
|
if: needs.detect-changes.outputs.changed == 'true'
|
||||||
@@ -118,11 +71,11 @@ jobs:
|
|||||||
outputs:
|
outputs:
|
||||||
artifact: ${{ steps.artifact.outputs.artifact }}
|
artifact: ${{ steps.artifact.outputs.artifact }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- name: Setup Go
|
- name: Setup Go
|
||||||
uses: actions/setup-go@v6.0.0
|
uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
go-version-file: go.mod
|
go-version-file: go.mod
|
||||||
cache: ${{ !github.event.pull_request.head.repo.fork }}
|
cache: ${{ !github.event.pull_request.head.repo.fork }}
|
||||||
@@ -133,65 +86,13 @@ jobs:
|
|||||||
# We want a static binary, so we need to set CGO_ENABLED=0
|
# We want a static binary, so we need to set CGO_ENABLED=0
|
||||||
CGO_ENABLED=0 go build -o ./e2e-runner ./e2e/
|
CGO_ENABLED=0 go build -o ./e2e-runner ./e2e/
|
||||||
echo "artifact=e2e-runner-${{github.run_number}}" >> "$GITHUB_OUTPUT"
|
echo "artifact=e2e-runner-${{github.run_number}}" >> "$GITHUB_OUTPUT"
|
||||||
- uses: actions/upload-artifact@v5
|
- uses: actions/upload-artifact@v4
|
||||||
id: upload
|
id: upload
|
||||||
with:
|
with:
|
||||||
retention-days: 1
|
retention-days: 1
|
||||||
name: ${{ steps.artifact.outputs.artifact }}
|
name: ${{ steps.artifact.outputs.artifact }}
|
||||||
path: e2e-runner
|
path: e2e-runner
|
||||||
|
|
||||||
push-docker-image:
|
|
||||||
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork == false
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
id-token: write
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs:
|
|
||||||
- build-grafana
|
|
||||||
steps:
|
|
||||||
- id: get-github-token
|
|
||||||
name: "create github app token"
|
|
||||||
uses: grafana/shared-workflows/actions/create-github-app-token@eb02241ed0a92aff205feab8ac3afcdf51c757c8 # create-github-app-token-v0.2.0
|
|
||||||
with:
|
|
||||||
github_app: "delivery-bot-app"
|
|
||||||
- uses: grafana/shared-workflows/actions/login-to-gar@main
|
|
||||||
id: login-to-gar
|
|
||||||
with:
|
|
||||||
registry: 'us-docker.pkg.dev'
|
|
||||||
environment: 'dev'
|
|
||||||
- uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53
|
|
||||||
with:
|
|
||||||
name: grafana-docker-tar-gz
|
|
||||||
path: .
|
|
||||||
- name: Load & Push Docker image
|
|
||||||
env:
|
|
||||||
BUILD_ID: ${{ github.run_id }}
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
LOADED_IMAGE_NAME=$(docker load -i grafana.docker.tar.gz | sed 's/Loaded image: //g')
|
|
||||||
VERSION=$(echo "${LOADED_IMAGE_NAME}" | cut -d ':' -f 2 | cut -d '-' -f 1)
|
|
||||||
DOCKER_IMAGE="us-docker.pkg.dev/grafanalabs-dev/docker-grafana-dev/grafana:${VERSION}-${BUILD_ID}"
|
|
||||||
docker tag "${LOADED_IMAGE_NAME}" "${DOCKER_IMAGE}"
|
|
||||||
docker push "${DOCKER_IMAGE}"
|
|
||||||
echo "IMAGE=${DOCKER_IMAGE}" >> "$GITHUB_ENV"
|
|
||||||
- name: Add PR status check
|
|
||||||
env:
|
|
||||||
GH_TOKEN: ${{ steps.get-github-token.outputs.token }}
|
|
||||||
SHA: ${{ github.event.pull_request.head.sha }}
|
|
||||||
run: |
|
|
||||||
gh api \
|
|
||||||
--method POST \
|
|
||||||
-H "Accept: application/vnd.github+json" \
|
|
||||||
-H "X-GitHub-Api-Version: 2022-11-28" \
|
|
||||||
/repos/grafana/grafana/check-runs \
|
|
||||||
-f "name=${IMAGE}" \
|
|
||||||
-f "head_sha=${SHA}" \
|
|
||||||
-f 'status=completed' \
|
|
||||||
-f 'conclusion=neutral' \
|
|
||||||
-f 'output[title]=Docker image' \
|
|
||||||
-f "output[summary]=${IMAGE}" \
|
|
||||||
-f "output[text]=${IMAGE}"
|
|
||||||
|
|
||||||
run-e2e-tests:
|
run-e2e-tests:
|
||||||
needs:
|
needs:
|
||||||
- build-grafana
|
- build-grafana
|
||||||
@@ -200,6 +101,14 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
|
- suite: various-suite
|
||||||
|
path: e2e/various-suite
|
||||||
|
- suite: dashboards-suite
|
||||||
|
path: e2e/dashboards-suite
|
||||||
|
- suite: smoke-tests-suite
|
||||||
|
path: e2e/smoke-tests-suite
|
||||||
|
- suite: panels-suite
|
||||||
|
path: e2e/panels-suite
|
||||||
- suite: various-suite (old arch)
|
- suite: various-suite (old arch)
|
||||||
path: e2e/old-arch/various-suite
|
path: e2e/old-arch/various-suite
|
||||||
flags: --flags="--env dashboardScene=false"
|
flags: --flags="--env dashboardScene=false"
|
||||||
@@ -218,19 +127,19 @@ jobs:
|
|||||||
contents: read
|
contents: read
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/download-artifact@v6
|
- uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: grafana-tar-gz
|
name: ${{ needs.build-grafana.outputs.artifact }}
|
||||||
- uses: actions/download-artifact@v6
|
- uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: ${{ needs.build-e2e-runner.outputs.artifact }}
|
name: ${{ needs.build-e2e-runner.outputs.artifact }}
|
||||||
- name: chmod +x
|
- name: chmod +x
|
||||||
run: chmod +x ./e2e-runner
|
run: chmod +x ./e2e-runner
|
||||||
- name: Run E2E tests
|
- name: Run E2E tests
|
||||||
uses: dagger/dagger-for-github@d913e70051faf3b907d4dd96ef1161083c88c644
|
uses: dagger/dagger-for-github@e47aba410ef9bb9ed81a4d2a97df31061e5e842e
|
||||||
with:
|
with:
|
||||||
version: 0.18.8
|
version: 0.18.8
|
||||||
verb: run
|
verb: run
|
||||||
@@ -245,228 +154,13 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
echo "suite=$(echo "$SUITE" | sed 's/\//-/g')" >> "$GITHUB_OUTPUT"
|
echo "suite=$(echo "$SUITE" | sed 's/\//-/g')" >> "$GITHUB_OUTPUT"
|
||||||
- uses: actions/upload-artifact@v5
|
- uses: actions/upload-artifact@v4
|
||||||
if: success() || failure()
|
if: success() || failure()
|
||||||
with:
|
with:
|
||||||
name: ${{ steps.set-suite-name.outputs.suite }}-${{ github.run_number }}
|
name: ${{ steps.set-suite-name.outputs.suite }}-${{ github.run_number }}
|
||||||
path: videos
|
path: videos
|
||||||
retention-days: 1
|
retention-days: 1
|
||||||
|
|
||||||
run-storybook-test:
|
|
||||||
name: Verify Storybook (Playwright)
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: detect-changes
|
|
||||||
if: needs.detect-changes.outputs.changed == 'true'
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
|
|
||||||
- name: Setup Node.js
|
|
||||||
uses: actions/setup-node@v6
|
|
||||||
with:
|
|
||||||
node-version-file: '.nvmrc'
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: yarn install --immutable
|
|
||||||
|
|
||||||
- name: Install Playwright browsers
|
|
||||||
run: npx playwright install --with-deps
|
|
||||||
|
|
||||||
- name: Run Storybook and E2E tests
|
|
||||||
run: yarn e2e:playwright:storybook
|
|
||||||
|
|
||||||
run-playwright-tests:
|
|
||||||
needs:
|
|
||||||
- build-grafana
|
|
||||||
name: Playwright E2E tests (${{ matrix.shard }}/${{ matrix.shardTotal }})
|
|
||||||
runs-on: ubuntu-latest-8-cores
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
shard: [1, 2, 3, 4, 5, 6, 7, 8]
|
|
||||||
shardTotal: [8]
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
- uses: actions/download-artifact@v6
|
|
||||||
with:
|
|
||||||
name: grafana-tar-gz
|
|
||||||
- name: Run E2E tests
|
|
||||||
uses: dagger/dagger-for-github@d913e70051faf3b907d4dd96ef1161083c88c644
|
|
||||||
with:
|
|
||||||
version: 0.18.8
|
|
||||||
verb: run
|
|
||||||
args: go run ./pkg/build/e2e-playwright --package=grafana.tar.gz --shard=${{ matrix.shard }}/${{ matrix.shardTotal }} --blob-dir=./blob-report
|
|
||||||
- uses: actions/upload-artifact@v5
|
|
||||||
if: success() || failure()
|
|
||||||
with:
|
|
||||||
name: playwright-blob-${{ github.run_number }}-${{ matrix.shard }}
|
|
||||||
path: ./blob-report
|
|
||||||
retention-days: 1
|
|
||||||
|
|
||||||
run-azure-monitor-e2e:
|
|
||||||
if: needs.detect-changes.outputs.cloud_plugins_changed == 'true' && github.event.pull_request.head.repo.fork == false && github.event_name == 'pull_request'
|
|
||||||
runs-on: ubuntu-x64-large
|
|
||||||
needs:
|
|
||||||
- build-grafana
|
|
||||||
- detect-changes
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
id-token: write
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
|
|
||||||
- uses: grafana/shared-workflows/actions/login-to-gar@login-to-gar-v0.4.0
|
|
||||||
id: login-to-gar
|
|
||||||
with:
|
|
||||||
registry: "us-docker.pkg.dev"
|
|
||||||
environment: "dev"
|
|
||||||
|
|
||||||
- id: pull-docker-image
|
|
||||||
run: |
|
|
||||||
docker pull us-docker.pkg.dev/grafanalabs-dev/docker-oss-plugin-partnerships-dev/e2e-playwright:latest
|
|
||||||
|
|
||||||
- id: vault-secrets
|
|
||||||
uses: grafana/shared-workflows/actions/get-vault-secrets@main
|
|
||||||
with:
|
|
||||||
repo_secrets: |
|
|
||||||
AZURE_SP_APP_ID=cpp-azure-resourcemanager-credentials:application_id
|
|
||||||
AZURE_SP_PASSWORD=cpp-azure-resourcemanager-credentials:application_secret
|
|
||||||
AZURE_TENANT=cpp-azure-resourcemanager-credentials:tenant_id
|
|
||||||
|
|
||||||
- id: deploy-resources
|
|
||||||
env:
|
|
||||||
AZURE_SP_APP_ID: ${{ env.AZURE_SP_APP_ID}}
|
|
||||||
AZURE_SP_PASSWORD: ${{ env.AZURE_SP_PASSWORD}}
|
|
||||||
AZURE_TENANT: ${{ env.AZURE_TENANT }}
|
|
||||||
NAME: ${{ github.ref_name }}
|
|
||||||
run: |
|
|
||||||
docker container run --name cpp-e2e-deploy -e AZURE_SP_APP_ID -e AZURE_SP_PASSWORD -e AZURE_TENANT -e PLAYWRIGHT_CI=true us-docker.pkg.dev/grafanalabs-dev/docker-oss-plugin-partnerships-dev/e2e-playwright:latest ./cpp-e2e/scripts/ci-run-playwright.sh azure "${NAME}" deploy
|
|
||||||
|
|
||||||
- id: extract-creds
|
|
||||||
# see https://github.com/grafana/oss-plugin-partnerships/blob/a77040d0456003cd258668b61d542dc7c75db5b5/e2e/scripts/deploy.sh#L25 for path
|
|
||||||
run: |
|
|
||||||
docker cp cpp-e2e-deploy:/outputs.json /tmp/outputs.json
|
|
||||||
|
|
||||||
- uses: actions/download-artifact@v6
|
|
||||||
with:
|
|
||||||
name: grafana-tar-gz
|
|
||||||
|
|
||||||
- name: Run E2E tests
|
|
||||||
uses: dagger/dagger-for-github@d913e70051faf3b907d4dd96ef1161083c88c644
|
|
||||||
with:
|
|
||||||
version: 0.18.8
|
|
||||||
verb: run
|
|
||||||
args: go run ./pkg/build/e2e-playwright --package=grafana.tar.gz --playwright-command="yarn e2e:playwright:cloud-plugins" --cloud-plugin-creds=/tmp/outputs.json
|
|
||||||
|
|
||||||
- name: Destroy resources
|
|
||||||
if: always() && steps.deploy-resources.outcome == 'success'
|
|
||||||
env:
|
|
||||||
AZURE_SP_APP_ID: ${{ env.AZURE_SP_APP_ID }}
|
|
||||||
AZURE_SP_PASSWORD: ${{ env.AZURE_SP_PASSWORD }}
|
|
||||||
AZURE_TENANT: ${{ env.AZURE_TENANT }}
|
|
||||||
NAME: ${{ github.ref_name }}
|
|
||||||
run: |
|
|
||||||
docker container run --name cpp-e2e-destroy -e AZURE_SP_APP_ID -e AZURE_SP_PASSWORD -e AZURE_TENANT us-docker.pkg.dev/grafanalabs-dev/docker-oss-plugin-partnerships-dev/e2e-playwright:latest ./cpp-e2e/scripts/ci-run-playwright.sh azure "${NAME}" destroy
|
|
||||||
|
|
||||||
required-playwright-tests:
|
|
||||||
needs:
|
|
||||||
- run-playwright-tests
|
|
||||||
- run-azure-monitor-e2e
|
|
||||||
- run-storybook-test
|
|
||||||
- build-grafana
|
|
||||||
if: ${{ !cancelled() }}
|
|
||||||
name: All Playwright tests complete
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
|
|
||||||
- uses: actions/setup-node@v6
|
|
||||||
with:
|
|
||||||
node-version-file: '.nvmrc'
|
|
||||||
|
|
||||||
- name: Download blob reports from GitHub Actions Artifacts
|
|
||||||
uses: actions/download-artifact@v6
|
|
||||||
with:
|
|
||||||
path: blobs
|
|
||||||
pattern: playwright-blob-*
|
|
||||||
merge-multiple: true
|
|
||||||
|
|
||||||
- name: Check blob reports
|
|
||||||
run: |
|
|
||||||
if [ ! "$(ls -A ./blobs)" ]; then
|
|
||||||
echo "Error: No blob reports found in ./blobs directory"
|
|
||||||
echo "Did the Playwright tests run at all?"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo "Found blob reports in ./blobs:"
|
|
||||||
ls -lah ./blobs
|
|
||||||
|
|
||||||
- name: Merge into HTML Report
|
|
||||||
run: npx playwright merge-reports --reporter html ./blobs
|
|
||||||
|
|
||||||
- name: Merge into JSON Report
|
|
||||||
env:
|
|
||||||
PLAYWRIGHT_JSON_OUTPUT_NAME: /tmp/playwright-results.json
|
|
||||||
run: npx playwright merge-reports --reporter=json ./blobs
|
|
||||||
|
|
||||||
- name: Bench report
|
|
||||||
run: |
|
|
||||||
docker run --rm \
|
|
||||||
--volume="/tmp/playwright-results.json:/home/bench/tests/playwright-results.json" \
|
|
||||||
us-docker.pkg.dev/grafanalabs-global/docker-grafana-bench-prod/grafana-bench:v0.5.1 report \
|
|
||||||
--grafana-url "http://localhost:3000" \
|
|
||||||
--grafana-version "CI- ${{ github.sha }}" \
|
|
||||||
--test-suite-name "FrontendCore" \
|
|
||||||
--report-input playwright \
|
|
||||||
--report-output log \
|
|
||||||
--log-level DEBUG \
|
|
||||||
/home/bench/tests/playwright-results.json
|
|
||||||
|
|
||||||
- name: Upload HTML report
|
|
||||||
id: upload-html
|
|
||||||
uses: actions/upload-artifact@v5
|
|
||||||
with:
|
|
||||||
name: playwright-html-${{ github.run_number }}
|
|
||||||
path: playwright-report
|
|
||||||
retention-days: 7
|
|
||||||
|
|
||||||
- name: Check test suites
|
|
||||||
id: check-jobs
|
|
||||||
uses: ./.github/actions/check-jobs
|
|
||||||
continue-on-error: true # Failure will be reported on Show test results step
|
|
||||||
with:
|
|
||||||
needs: ${{ toJson(needs) }}
|
|
||||||
failure-message: "One or more E2E test suites have failed"
|
|
||||||
success-message: "All E2E test suites completed successfully"
|
|
||||||
|
|
||||||
- name: Show test results
|
|
||||||
env:
|
|
||||||
FAILED: ${{ steps.check-jobs.outputs.any-failed }}
|
|
||||||
REPORT_URL: ${{ steps.upload-html.outputs.artifact-url }}
|
|
||||||
# sed removes the leading `../../src/` from the paths
|
|
||||||
run: |
|
|
||||||
npx playwright merge-reports --reporter list ./blobs | sed 's|\(\.\./\)\{1,\}src/|/|g'
|
|
||||||
if [ "$FAILED" = "true" ]; then
|
|
||||||
echo ""
|
|
||||||
echo "Download the test report from $REPORT_URL"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
run-a11y-test:
|
run-a11y-test:
|
||||||
needs:
|
needs:
|
||||||
- build-grafana
|
- build-grafana
|
||||||
@@ -476,68 +170,26 @@ jobs:
|
|||||||
contents: read
|
contents: read
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/download-artifact@v6
|
- uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: grafana-tar-gz
|
name: ${{ needs.build-grafana.outputs.artifact }}
|
||||||
- name: Run PR a11y test
|
- name: Run PR a11y test
|
||||||
if: github.event_name == 'pull_request'
|
if: github.event_name == 'pull_request'
|
||||||
uses: dagger/dagger-for-github@d913e70051faf3b907d4dd96ef1161083c88c644
|
uses: dagger/dagger-for-github@e47aba410ef9bb9ed81a4d2a97df31061e5e842e
|
||||||
with:
|
with:
|
||||||
version: 0.18.8
|
version: 0.18.8
|
||||||
verb: run
|
verb: run
|
||||||
args: go run ./pkg/build/a11y --package=grafana.tar.gz
|
args: go run ./pkg/build/a11y --package=grafana.tar.gz
|
||||||
- name: Run non-PR a11y test
|
- name: Run non-PR a11y test
|
||||||
if: github.event_name != 'pull_request'
|
if: github.event_name != 'pull_request'
|
||||||
uses: dagger/dagger-for-github@d913e70051faf3b907d4dd96ef1161083c88c644
|
uses: dagger/dagger-for-github@e47aba410ef9bb9ed81a4d2a97df31061e5e842e
|
||||||
with:
|
with:
|
||||||
version: 0.18.8
|
version: 0.18.8
|
||||||
verb: run
|
verb: run
|
||||||
args: go run ./pkg/build/a11y --package=grafana.tar.gz --no-threshold-fail --results=./pa11y-ci-results.json
|
args: go run ./pkg/build/a11y --package=grafana.tar.gz --no-threshold-fail
|
||||||
- name: Upload pa11y results
|
|
||||||
if: github.event_name != 'pull_request'
|
|
||||||
uses: actions/upload-artifact@v5
|
|
||||||
with:
|
|
||||||
retention-days: 1
|
|
||||||
name: pa11y-ci-results
|
|
||||||
path: pa11y-ci-results.json
|
|
||||||
|
|
||||||
publish-metrics:
|
|
||||||
needs:
|
|
||||||
- run-a11y-test
|
|
||||||
name: Publish metrics
|
|
||||||
# Run on `grafana/grafana` main branch only
|
|
||||||
if: github.event_name == 'push' && github.repository == 'grafana/grafana' && github.ref_name == 'main'
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
id-token: write
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- id: vault-secrets
|
|
||||||
uses: grafana/shared-workflows/actions/get-vault-secrets@main
|
|
||||||
with:
|
|
||||||
repo_secrets: |
|
|
||||||
GRAFANA_MISC_STATS_API_KEY=grafana-misc-stats:api_key
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
- name: Setup Node.js
|
|
||||||
uses: actions/setup-node@v6
|
|
||||||
with:
|
|
||||||
node-version-file: '.nvmrc'
|
|
||||||
- name: Install dependencies
|
|
||||||
run: yarn install --immutable
|
|
||||||
- name: Get pa11y results
|
|
||||||
uses: actions/download-artifact@v6
|
|
||||||
with:
|
|
||||||
name: pa11y-ci-results
|
|
||||||
- name: Extract and publish metrics
|
|
||||||
run: ./scripts/ci-frontend-metrics.sh | node --experimental-strip-types .github/workflows/scripts/publish-frontend-metrics.mts
|
|
||||||
env:
|
|
||||||
GRAFANA_MISC_STATS_API_KEY: ${{ env.GRAFANA_MISC_STATS_API_KEY}}
|
|
||||||
|
|
||||||
# This is the job that is actually required by rulesets.
|
# This is the job that is actually required by rulesets.
|
||||||
# We want to only require one job instead of all the individual tests.
|
# We want to only require one job instead of all the individual tests.
|
||||||
@@ -545,7 +197,6 @@ jobs:
|
|||||||
required-e2e-tests:
|
required-e2e-tests:
|
||||||
needs:
|
needs:
|
||||||
- run-e2e-tests
|
- run-e2e-tests
|
||||||
- build-grafana
|
|
||||||
# a11y test is not listed on purpose: it is not an important E2E test.
|
# a11y test is not listed on purpose: it is not an important E2E test.
|
||||||
# It is also totally fine to fail right now.
|
# It is also totally fine to fail right now.
|
||||||
# always() is the best function here.
|
# always() is the best function here.
|
||||||
@@ -556,13 +207,13 @@ jobs:
|
|||||||
name: All E2E tests complete
|
name: All E2E tests complete
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
|
|
||||||
- name: Check test suites
|
- name: Check test suites
|
||||||
uses: ./.github/actions/check-jobs
|
env:
|
||||||
with:
|
NEEDS: ${{ toJson(needs) }}
|
||||||
needs: ${{ toJson(needs) }}
|
run: |
|
||||||
failure-message: "One or more E2E test suites have failed"
|
FAILURES="$(echo "$NEEDS" | jq 'with_entries(select(.value.result == "failure")) | map_values(.result)')"
|
||||||
success-message: "All E2E test suites completed successfully"
|
echo "$FAILURES"
|
||||||
|
if [ "$(echo "$FAILURES" | jq '. | length')" != "0" ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "All OK!"
|
||||||
|
|||||||
155
.github/workflows/pr-frontend-unit-tests.yml
vendored
155
.github/workflows/pr-frontend-unit-tests.yml
vendored
@@ -10,17 +10,14 @@ permissions: {}
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
detect-changes:
|
detect-changes:
|
||||||
# Run on `grafana/grafana` main branch, or on pull requests to prevent double-running on mirrors
|
|
||||||
if: (github.event_name == 'pull_request' || (github.event_name == 'push' && github.repository == 'grafana/grafana'))
|
|
||||||
name: Detect whether code changed
|
name: Detect whether code changed
|
||||||
runs-on: ubuntu-x64-small
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
outputs:
|
outputs:
|
||||||
changed: ${{ steps.detect-changes.outputs.frontend }}
|
changed: ${{ steps.detect-changes.outputs.frontend }}
|
||||||
devenv-changed: ${{ steps.detect-changes.outputs.devenv }}
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: true # required to get more history in the changed-files action
|
persist-credentials: true # required to get more history in the changed-files action
|
||||||
fetch-depth: 2
|
fetch-depth: 2
|
||||||
@@ -34,114 +31,64 @@ jobs:
|
|||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
id-token: write
|
id-token: write
|
||||||
needs:
|
|
||||||
- detect-changes
|
|
||||||
# Run this workflow only for PRs from forks; if it gets merged into `main` or `release-*`,
|
# Run this workflow only for PRs from forks; if it gets merged into `main` or `release-*`,
|
||||||
# the `frontend-unit-tests-enterprise` workflow will run instead
|
# the `frontend-unit-tests-enterprise` workflow will run instead
|
||||||
|
needs: detect-changes
|
||||||
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork == true && needs.detect-changes.outputs.changed == 'true'
|
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork == true && needs.detect-changes.outputs.changed == 'true'
|
||||||
runs-on: ubuntu-x64-large
|
runs-on: ubuntu-latest-8-cores
|
||||||
name: "Unit tests (${{ matrix.shard }} / ${{ matrix.total }})"
|
name: "Unit tests (${{ matrix.chunk }} / 8)"
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
shard: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
|
chunk: [1, 2, 3, 4, 5, 6, 7, 8]
|
||||||
total: [16]
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- name: Setup Node.js
|
- uses: actions/setup-node@v4
|
||||||
uses: ./.github/actions/setup-node
|
with:
|
||||||
- name: Yarn install
|
node-version-file: '.nvmrc'
|
||||||
run: yarn install --immutable
|
cache: 'yarn'
|
||||||
env:
|
cache-dependency-path: 'yarn.lock'
|
||||||
PUPPETEER_SKIP_DOWNLOAD: true
|
- run: yarn install --immutable --check-cache
|
||||||
CYPRESS_INSTALL_BINARY: 0
|
|
||||||
- run: yarn run test:ci
|
- run: yarn run test:ci
|
||||||
env:
|
env:
|
||||||
TEST_MAX_WORKERS: 4
|
TEST_MAX_WORKERS: 2
|
||||||
TEST_SHARD: ${{ matrix.shard }}
|
TEST_SHARD: ${{ matrix.chunk }}
|
||||||
TEST_SHARD_TOTAL: ${{ matrix.total }}
|
TEST_SHARD_TOTAL: 8
|
||||||
|
|
||||||
frontend-unit-tests-enterprise:
|
frontend-unit-tests-enterprise:
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
id-token: write
|
id-token: write
|
||||||
needs:
|
|
||||||
- detect-changes
|
|
||||||
# Run this workflow for non-PR events (like pushes to `main` or `release-*`) OR for internal PRs (PRs not from forks)
|
# Run this workflow for non-PR events (like pushes to `main` or `release-*`) OR for internal PRs (PRs not from forks)
|
||||||
|
needs: detect-changes
|
||||||
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false && needs.detect-changes.outputs.changed == 'true'
|
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false && needs.detect-changes.outputs.changed == 'true'
|
||||||
runs-on: ubuntu-x64-large
|
runs-on: ubuntu-latest-8-cores
|
||||||
name: "Unit tests (${{ matrix.shard }} / ${{ matrix.total }})"
|
name: "Unit tests (${{ matrix.chunk }} / 8)"
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
shard: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
|
chunk: [1, 2, 3, 4, 5, 6, 7, 8]
|
||||||
total: [16]
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
cache: 'yarn'
|
||||||
|
cache-dependency-path: 'yarn.lock'
|
||||||
- name: Setup Enterprise
|
- name: Setup Enterprise
|
||||||
uses: ./.github/actions/setup-enterprise
|
uses: ./.github/actions/setup-enterprise
|
||||||
with:
|
with:
|
||||||
github-app-name: 'grafana-ci-bot'
|
github-app-name: 'grafana-ci-bot'
|
||||||
- name: Setup Node.js
|
- run: yarn install --immutable --check-cache
|
||||||
uses: ./.github/actions/setup-node
|
|
||||||
- name: Yarn install
|
|
||||||
run: yarn install --immutable
|
|
||||||
env:
|
|
||||||
# Switch from default hardened mode to faster mode for internal PRs
|
|
||||||
YARN_ENABLE_HARDENED_MODE: ${{ github.event.pull_request.head.repo.fork == false && '1' || '0' }}
|
|
||||||
PUPPETEER_SKIP_DOWNLOAD: true
|
|
||||||
CYPRESS_INSTALL_BINARY: 0
|
|
||||||
- run: yarn run test:ci
|
- run: yarn run test:ci
|
||||||
env:
|
env:
|
||||||
TEST_MAX_WORKERS: 4
|
TEST_MAX_WORKERS: 2
|
||||||
TEST_SHARD: ${{ matrix.shard }}
|
TEST_SHARD: ${{ matrix.chunk }}
|
||||||
TEST_SHARD_TOTAL: ${{ matrix.total }}
|
TEST_SHARD_TOTAL: 8
|
||||||
|
|
||||||
frontend-decoupled-plugin-tests:
|
|
||||||
needs:
|
|
||||||
- detect-changes
|
|
||||||
if: needs.detect-changes.outputs.changed == 'true'
|
|
||||||
runs-on: ubuntu-x64-large
|
|
||||||
name: "Decoupled plugin tests"
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
- name: Setup Node.js
|
|
||||||
uses: ./.github/actions/setup-node
|
|
||||||
- name: Yarn install
|
|
||||||
run: yarn install --immutable
|
|
||||||
env:
|
|
||||||
# Switch from default hardened mode to faster mode for internal PRs
|
|
||||||
YARN_ENABLE_HARDENED_MODE: ${{ github.event.pull_request.head.repo.fork == false && '1' || '0' }}
|
|
||||||
PUPPETEER_SKIP_DOWNLOAD: true
|
|
||||||
CYPRESS_INSTALL_BINARY: 0
|
|
||||||
- run: yarn run plugin:test:ci
|
|
||||||
|
|
||||||
frontend-packages-unit-tests:
|
|
||||||
needs:
|
|
||||||
- detect-changes
|
|
||||||
if: needs.detect-changes.outputs.changed == 'true'
|
|
||||||
runs-on: ubuntu-x64-large
|
|
||||||
name: "Packages unit tests"
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
- name: Setup Node.js
|
|
||||||
uses: ./.github/actions/setup-node
|
|
||||||
- name: Yarn install
|
|
||||||
run: yarn install --immutable
|
|
||||||
env:
|
|
||||||
# Switch from default hardened mode to faster mode for internal PRs
|
|
||||||
YARN_ENABLE_HARDENED_MODE: ${{ github.event.pull_request.head.repo.fork == false && '1' || '0' }}
|
|
||||||
PUPPETEER_SKIP_DOWNLOAD: true
|
|
||||||
CYPRESS_INSTALL_BINARY: 0
|
|
||||||
- run: yarn run packages:test:ci
|
|
||||||
|
|
||||||
# This is the job that is actually required by rulesets.
|
# This is the job that is actually required by rulesets.
|
||||||
# We need to require EITHER the OSS or the Enterprise job to pass.
|
# We need to require EITHER the OSS or the Enterprise job to pass.
|
||||||
@@ -151,45 +98,21 @@ jobs:
|
|||||||
needs:
|
needs:
|
||||||
- frontend-unit-tests
|
- frontend-unit-tests
|
||||||
- frontend-unit-tests-enterprise
|
- frontend-unit-tests-enterprise
|
||||||
- frontend-decoupled-plugin-tests
|
|
||||||
- frontend-packages-unit-tests
|
|
||||||
# always() is the best function here.
|
# always() is the best function here.
|
||||||
# success() || failure() will skip this function if any need is also skipped.
|
# success() || failure() will skip this function if any need is also skipped.
|
||||||
# That means conditional test suites will fail the entire requirement check.
|
# That means conditional test suites will fail the entire requirement check.
|
||||||
if: always()
|
if: always()
|
||||||
|
|
||||||
name: All frontend unit tests complete
|
name: All frontend unit tests complete
|
||||||
runs-on: ubuntu-x64-small
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
- name: Check test suites
|
- name: Check test suites
|
||||||
uses: ./.github/actions/check-jobs
|
env:
|
||||||
with:
|
NEEDS: ${{ toJson(needs) }}
|
||||||
needs: ${{ toJson(needs) }}
|
|
||||||
failure-message: "One or more unit test jobs have failed"
|
|
||||||
success-message: "All unit tests completed successfully"
|
|
||||||
|
|
||||||
devenv:
|
|
||||||
needs:
|
|
||||||
- detect-changes
|
|
||||||
if: needs.detect-changes.outputs.devenv-changed == 'true'
|
|
||||||
runs-on: ubuntu-x64-large
|
|
||||||
name: "Devenv frontend-service build"
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
- name: Setup Docker
|
|
||||||
uses: docker/setup-docker-action@3fb92d6d9c634363128c8cce4bc3b2826526370a # v4
|
|
||||||
- name: Setup Node.js
|
|
||||||
uses: ./.github/actions/setup-node
|
|
||||||
- name: Install Tilt
|
|
||||||
run: curl -fsSL https://raw.githubusercontent.com/tilt-dev/tilt/master/scripts/install.sh | bash
|
|
||||||
- name: Create empty config files # TODO: the tiltfile should conditionally mount these only if they exist, like the enterprise license
|
|
||||||
run: |
|
run: |
|
||||||
touch devenv/frontend-service/configs/grafana-api.local.ini
|
FAILURES="$(echo "$NEEDS" | jq 'with_entries(select(.value.result == "failure")) | map_values(.result)')"
|
||||||
touch devenv/frontend-service/configs/frontend-service.local.ini
|
echo "$FAILURES"
|
||||||
- name: Test frontend-service Tiltfile
|
if [ "$(echo "$FAILURES" | jq '. | length')" != "0" ]; then
|
||||||
run: tilt ci --file devenv/frontend-service/Tiltfile
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "All OK!"
|
||||||
|
|||||||
144
.github/workflows/pr-go-workspace-check.yml
vendored
144
.github/workflows/pr-go-workspace-check.yml
vendored
@@ -4,42 +4,29 @@ on:
|
|||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [main]
|
branches: [main]
|
||||||
|
paths:
|
||||||
permissions: {}
|
- .github/workflows/pr-go-workspace-check.yml
|
||||||
|
- go.mod
|
||||||
|
- go.sum
|
||||||
|
- go.work
|
||||||
|
- go.work.sum
|
||||||
|
- '**/go.mod'
|
||||||
|
- '**/go.sum'
|
||||||
|
- '**.go'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
detect-changes:
|
check:
|
||||||
name: Detect whether code changed
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
outputs:
|
|
||||||
changed: ${{ steps.detect-changes.outputs.backend }}
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
persist-credentials: true # required to get more history in the changed-files action
|
|
||||||
fetch-depth: 2
|
|
||||||
- name: Detect changes
|
|
||||||
id: detect-changes
|
|
||||||
uses: ./.github/actions/change-detection
|
|
||||||
with:
|
|
||||||
self: .github/workflows/pr-go-workspace-check.yml
|
|
||||||
|
|
||||||
check-workspace:
|
|
||||||
needs: detect-changes
|
|
||||||
if: needs.detect-changes.outputs.changed == 'true'
|
|
||||||
name: Go Workspace Check
|
name: Go Workspace Check
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Set go version
|
- name: Set go version
|
||||||
uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00
|
uses: actions/setup-go@19bb51245e9c80abacb2e91cc42b33fa478b8639
|
||||||
with:
|
with:
|
||||||
cache: false
|
cache: false
|
||||||
go-version-file: go.mod
|
go-version-file: go.mod
|
||||||
@@ -58,110 +45,3 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
- name: Ensure Dockerfile contains submodule COPY commands
|
- name: Ensure Dockerfile contains submodule COPY commands
|
||||||
run: ./scripts/go-workspace/validate-dockerfile.sh
|
run: ./scripts/go-workspace/validate-dockerfile.sh
|
||||||
|
|
||||||
check-wire:
|
|
||||||
needs: detect-changes
|
|
||||||
if: needs.detect-changes.outputs.changed == 'true'
|
|
||||||
name: Check Wire Changes
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
id-token: write
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
|
|
||||||
- name: Set go version
|
|
||||||
uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00
|
|
||||||
with:
|
|
||||||
cache: false
|
|
||||||
go-version-file: go.mod
|
|
||||||
|
|
||||||
- name: Setup Enterprise
|
|
||||||
if: github.event.pull_request.head.repo.fork == false
|
|
||||||
uses: ./.github/actions/setup-enterprise
|
|
||||||
|
|
||||||
- name: Calculate generated wire checksums
|
|
||||||
id: pre_gen_oss
|
|
||||||
run: |
|
|
||||||
OSS_WIRE_CHECKSUM="$(sha256sum pkg/server/wire_gen.go | cut -d' ' -f1)"
|
|
||||||
echo "wire_checksum=$OSS_WIRE_CHECKSUM" >> "$GITHUB_OUTPUT"
|
|
||||||
|
|
||||||
- name: Calculate generated enterprise wire checksums
|
|
||||||
id: pre_gen_enterprise
|
|
||||||
if: github.event.pull_request.head.repo.fork == false
|
|
||||||
run: |
|
|
||||||
ENTERPRISE_WIRE_CHECKSUM="$(sha256sum pkg/server/enterprise_wire_gen.go | cut -d' ' -f1)"
|
|
||||||
echo "wire_checksum=$ENTERPRISE_WIRE_CHECKSUM" >> "$GITHUB_OUTPUT"
|
|
||||||
|
|
||||||
- name: Generate Go files
|
|
||||||
run: make gen-go
|
|
||||||
|
|
||||||
- name: Check for generated file changes
|
|
||||||
run: |
|
|
||||||
OSS_WIRE_CHANGED=false
|
|
||||||
CURRENT_OSS_WIRE_CHECKSUM=$(sha256sum pkg/server/wire_gen.go | cut -d' ' -f1)
|
|
||||||
if [ "$CURRENT_OSS_WIRE_CHECKSUM" != "${{ steps.pre_gen_oss.outputs.wire_checksum }}" ]; then
|
|
||||||
OSS_WIRE_CHANGED=true
|
|
||||||
OSS_DIFF=$(git diff pkg/server/wire_gen.go)
|
|
||||||
echo "Uncomitted changes detected in pkg/server/wire_gen.go"
|
|
||||||
fi
|
|
||||||
|
|
||||||
ENTERPRISE_WIRE_CHANGED=false
|
|
||||||
if [ -f "pkg/server/enterprise_wire_gen.go" ]; then
|
|
||||||
CURRENT_ENTERPRISE_WIRE_CHECKSUM=$(sha256sum pkg/server/enterprise_wire_gen.go | cut -d' ' -f1)
|
|
||||||
if [ "$CURRENT_ENTERPRISE_WIRE_CHECKSUM" != "${{ steps.pre_gen_enterprise.outputs.wire_checksum }}" ]; then
|
|
||||||
ENTERPRISE_WIRE_CHANGED=true
|
|
||||||
ENTERPRISE_DIFF=$(git diff pkg/server/enterprise_wire_gen.go)
|
|
||||||
echo "Uncomitted changes detected in pkg/server/enterprise_wire_gen.go"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$OSS_WIRE_CHANGED" = "false" ] && [ "$ENTERPRISE_WIRE_CHANGED" = "false" ]; then
|
|
||||||
echo "No changes in generated Go files"
|
|
||||||
else
|
|
||||||
if [[ "${{ github.event.pull_request.head.repo.fork }}" == "false" ]]; then
|
|
||||||
echo "> !!! Please synchronize the grafana OSS and grafana enterprise code bases as defined in the enterprise readme, then run 'make gen-go' in the OSS folder and commit the changes to both repositories."
|
|
||||||
if [[ "$OSS_WIRE_CHANGED" == "true" ]]; then
|
|
||||||
echo "OSS changes:"
|
|
||||||
echo "$OSS_DIFF"
|
|
||||||
fi
|
|
||||||
if [[ "$ENTERPRISE_WIRE_CHANGED" == "true" ]]; then
|
|
||||||
echo "Enterprise changes:"
|
|
||||||
echo "$ENTERPRISE_DIFF"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "> !!! Please run 'make gen-go' and commit the changes."
|
|
||||||
fi
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# This is the job that is actually required by rulesets.
|
|
||||||
# We want to only require one job instead of all the individual tests.
|
|
||||||
# Future work also allows us to start skipping some tests based on changed files.
|
|
||||||
required-go-workspace-check:
|
|
||||||
needs:
|
|
||||||
- check-workspace
|
|
||||||
- check-wire
|
|
||||||
# always() is the best function here.
|
|
||||||
# success() || failure() will skip this function if any need is also skipped.
|
|
||||||
# That means conditional jobs will fail the entire requirement check.
|
|
||||||
if: always()
|
|
||||||
|
|
||||||
name: All Go Workspace Checks complete
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Check the checks
|
|
||||||
env:
|
|
||||||
NEEDS: ${{ toJson(needs) }}
|
|
||||||
run: |
|
|
||||||
FAILURES="$(echo "$NEEDS" | jq 'with_entries(select(.value.result == "failure")) | map_values(.result)')"
|
|
||||||
echo "$FAILURES"
|
|
||||||
if [ "$(echo "$FAILURES" | jq '. | length')" != "0" ]; then
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo "All OK!"
|
|
||||||
|
|||||||
4
.github/workflows/pr-k8s-codegen-check.yml
vendored
4
.github/workflows/pr-k8s-codegen-check.yml
vendored
@@ -19,12 +19,12 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Set go version
|
- name: Set go version
|
||||||
uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00
|
uses: actions/setup-go@19bb51245e9c80abacb2e91cc42b33fa478b8639
|
||||||
with:
|
with:
|
||||||
go-version-file: go.mod
|
go-version-file: go.mod
|
||||||
|
|
||||||
|
|||||||
1
.github/workflows/pr-patch-check-event.yml
vendored
1
.github/workflows/pr-patch-check-event.yml
vendored
@@ -12,6 +12,7 @@ on:
|
|||||||
permissions:
|
permissions:
|
||||||
id-token: write
|
id-token: write
|
||||||
contents: read
|
contents: read
|
||||||
|
statuses: write
|
||||||
|
|
||||||
# Since this is run on a pull request, we want to apply the patches intended for the
|
# Since this is run on a pull request, we want to apply the patches intended for the
|
||||||
# target branch onto the source branch, to verify compatibility before merging.
|
# target branch onto the source branch, to verify compatibility before merging.
|
||||||
|
|||||||
23
.github/workflows/pr-patch-check.yml
vendored
23
.github/workflows/pr-patch-check.yml
vendored
@@ -29,6 +29,10 @@ permissions:
|
|||||||
# target branch onto the source branch, to verify compatibility before merging.
|
# target branch onto the source branch, to verify compatibility before merging.
|
||||||
jobs:
|
jobs:
|
||||||
dispatch-job:
|
dispatch-job:
|
||||||
|
# If the source is not from a fork then dispatch the job to the workflow.
|
||||||
|
# This will fail on forks when trying to broker a token, so instead, forks will create the required status and mark
|
||||||
|
# it as a success
|
||||||
|
if: ${{ ! github.event.pull_request.head.repo.fork }}
|
||||||
env:
|
env:
|
||||||
HEAD_REF: ${{ inputs.head_ref }}
|
HEAD_REF: ${{ inputs.head_ref }}
|
||||||
BASE_REF: ${{ github.base_ref }}
|
BASE_REF: ${{ github.base_ref }}
|
||||||
@@ -55,7 +59,7 @@ jobs:
|
|||||||
permissions: "{\"actions\": \"write\", \"workflows\": \"write\"}"
|
permissions: "{\"actions\": \"write\", \"workflows\": \"write\"}"
|
||||||
repositories: "[\"security-patch-actions\"]"
|
repositories: "[\"security-patch-actions\"]"
|
||||||
- name: "Dispatch job"
|
- name: "Dispatch job"
|
||||||
uses: actions/github-script@v8
|
uses: actions/github-script@v7
|
||||||
with:
|
with:
|
||||||
github-token: ${{ steps.generate_token.outputs.token }}
|
github-token: ${{ steps.generate_token.outputs.token }}
|
||||||
script: |
|
script: |
|
||||||
@@ -76,3 +80,20 @@ jobs:
|
|||||||
triggering_github_handle: SENDER
|
triggering_github_handle: SENDER
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
dispatch-job-fork:
|
||||||
|
# If the source is from a fork then use the built-in workflow token to create the same status and unconditionally
|
||||||
|
# mark it as a success.
|
||||||
|
if: ${{ github.event.pull_request.head.repo.fork }}
|
||||||
|
permissions:
|
||||||
|
statuses: write
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Create status
|
||||||
|
uses: myrotvorets/set-commit-status-action@6d6905c99cd24a4a2cbccc720b62dc6ca5587141
|
||||||
|
with:
|
||||||
|
token: ${{ github.token }}
|
||||||
|
sha: ${{ inputs.pr_commit_sha }}
|
||||||
|
repo: ${{ inputs.repo }}
|
||||||
|
status: success
|
||||||
|
context: "Test Patches (event)"
|
||||||
|
description: "Test Patches (event) on a fork"
|
||||||
|
|||||||
39
.github/workflows/pr-test-docker.yml
vendored
39
.github/workflows/pr-test-docker.yml
vendored
@@ -1,39 +0,0 @@
|
|||||||
name: Test Dockerfile
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
detect-changes:
|
|
||||||
# Run on `grafana/grafana` main branch, or on pull requests to prevent double-running on mirrors
|
|
||||||
name: Detect whether code changed
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
outputs:
|
|
||||||
changed: ${{ steps.detect-changes.outputs.backend || steps.detect-changes.outputs.frontend || steps.detect-changes.outputs.dockerfile }}
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
persist-credentials: true # required to get more history in the changed-files action
|
|
||||||
fetch-depth: 2
|
|
||||||
- name: Detect changes
|
|
||||||
id: detect-changes
|
|
||||||
uses: ./.github/actions/change-detection
|
|
||||||
with:
|
|
||||||
self: .github/workflows/pr-test-docker.yml
|
|
||||||
|
|
||||||
build-dockerfile:
|
|
||||||
needs: detect-changes
|
|
||||||
if: needs.detect-changes.outputs.changed == 'true'
|
|
||||||
runs-on: ubuntu-x64-large-io
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
- uses: docker/setup-docker-action@3fb92d6d9c634363128c8cce4bc3b2826526370a # v4
|
|
||||||
- name: Build Dockerfile
|
|
||||||
run: make build-docker-full
|
|
||||||
165
.github/workflows/pr-test-integration.yml
vendored
165
.github/workflows/pr-test-integration.yml
vendored
@@ -18,47 +18,26 @@ concurrency:
|
|||||||
permissions: {}
|
permissions: {}
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
detect-changes:
|
|
||||||
# Run on `grafana/grafana` main branch, or on pull requests to prevent double-running on mirrors
|
|
||||||
if: (github.event_name == 'pull_request' || (github.event_name == 'push' && github.repository == 'grafana/grafana'))
|
|
||||||
name: Detect whether code changed
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
outputs:
|
|
||||||
changed: ${{ steps.detect-changes.outputs.backend }}
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
persist-credentials: true # required to get more history in the changed-files action
|
|
||||||
fetch-depth: 2
|
|
||||||
- name: Detect changes
|
|
||||||
id: detect-changes
|
|
||||||
uses: ./.github/actions/change-detection
|
|
||||||
with:
|
|
||||||
self: .github/workflows/pr-test-integration.yml
|
|
||||||
sqlite:
|
sqlite:
|
||||||
needs: detect-changes
|
|
||||||
if: needs.detect-changes.outputs.changed == 'true'
|
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
# We don't need more than this since it has to wait for the other tests.
|
|
||||||
shard: [
|
shard: [
|
||||||
1/4, 2/4, 3/4, 4/4,
|
1/8, 2/8, 3/8, 4/8,
|
||||||
|
5/8, 6/8, 7/8, 8/8,
|
||||||
]
|
]
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
|
|
||||||
name: Sqlite (${{ matrix.shard }})
|
name: Sqlite (${{ matrix.shard }})
|
||||||
runs-on: ubuntu-x64-large-io
|
runs-on: ubuntu-latest-8-cores
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- name: Setup Go
|
- name: Setup Go
|
||||||
uses: actions/setup-go@v6.0.0
|
uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
go-version-file: go.mod
|
go-version-file: go.mod
|
||||||
cache: true
|
cache: true
|
||||||
@@ -68,118 +47,18 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
readarray -t PACKAGES <<< "$(./scripts/ci/backend-tests/pkgs-with-tests-named.sh -b TestIntegration | ./scripts/ci/backend-tests/shard.sh -N"$SHARD" -d-)"
|
readarray -t PACKAGES <<< "$(./scripts/ci/backend-tests/pkgs-with-tests-named.sh -b TestIntegration | ./scripts/ci/backend-tests/shard.sh -N"$SHARD" -d-)"
|
||||||
go test -tags=sqlite -timeout=8m -run '^TestIntegration' "${PACKAGES[@]}"
|
go test -tags=sqlite -timeout=5m -run '^TestIntegration' "${PACKAGES[@]}"
|
||||||
|
|
||||||
sqlite_nocgo:
|
|
||||||
needs: detect-changes
|
|
||||||
if: needs.detect-changes.outputs.changed == 'true'
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
# We don't need more than this since it has to wait for the other tests.
|
|
||||||
shard: [
|
|
||||||
1/4, 2/4, 3/4, 4/4,
|
|
||||||
profiled,
|
|
||||||
]
|
|
||||||
fail-fast: false
|
|
||||||
|
|
||||||
name: Sqlite Without CGo (${{ matrix.shard }})
|
|
||||||
runs-on: ubuntu-x64-large-io
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
- name: Setup Go
|
|
||||||
uses: actions/setup-go@v6.0.0
|
|
||||||
with:
|
|
||||||
go-version-file: go.mod
|
|
||||||
cache: true
|
|
||||||
- name: Run tests
|
|
||||||
if: matrix.shard != 'profiled'
|
|
||||||
env:
|
|
||||||
SHARD: ${{ matrix.shard }}
|
|
||||||
CGO_ENABLED: 0
|
|
||||||
SKIP_PACKAGES: |-
|
|
||||||
pkg/tests/apis/folder
|
|
||||||
pkg/tests/apis/dashboard
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
# Build regex pattern like: pkg1$|pkg2$|pkg3$
|
|
||||||
SKIP_PATTERN=$(echo "$SKIP_PACKAGES" | sed '/^$/d' | sed 's|.*|&$|' | paste -sd '|' -)
|
|
||||||
readarray -t PACKAGES <<< "$(./scripts/ci/backend-tests/pkgs-with-tests-named.sh -b TestIntegration | ./scripts/ci/backend-tests/shard.sh -N "$SHARD" -d - | grep -Ev "($SKIP_PATTERN)")"
|
|
||||||
go test -tags=sqlite -timeout=8m -run '^TestIntegration' "${PACKAGES[@]}"
|
|
||||||
- name: Run profiled tests
|
|
||||||
id: run-profiled-tests
|
|
||||||
if: matrix.shard == 'profiled'
|
|
||||||
env:
|
|
||||||
CGO_ENABLED: 0
|
|
||||||
PROFILED_PACKAGES: |-
|
|
||||||
pkg/tests/apis/folder
|
|
||||||
pkg/tests/apis/dashboard
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
# Build regex pattern line: pkg1$|pkg2$|pkg3$
|
|
||||||
PROFILE_PATTERN=$(echo "$PROFILED_PACKAGES" | sed '/^$/d' | sed 's|.*|&$|' | paste -sd '|' -)
|
|
||||||
readarray -t PACKAGES <<< "$(./scripts/ci/backend-tests/pkgs-with-tests-named.sh -b TestIntegration | grep -E "($PROFILE_PATTERN)")"
|
|
||||||
if [ ${#PACKAGES[@]} -eq 0 ]; then
|
|
||||||
echo "⚠️ No profiled packages found"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
mkdir -p profiles
|
|
||||||
EXIT_CODE=0
|
|
||||||
# Run each profiled package sequentially
|
|
||||||
for full_pkg in "${PACKAGES[@]}"; do
|
|
||||||
# Build valid file name
|
|
||||||
pkg_name=$(basename "$full_pkg" | tr '/' '_' | tr '.' '_')
|
|
||||||
echo "📦 Running $full_pkg"
|
|
||||||
set +e
|
|
||||||
go test -tags=sqlite -timeout=8m -run '^TestIntegration' \
|
|
||||||
-outputdir=profiles \
|
|
||||||
-cpuprofile="cpu_${pkg_name}.prof" \
|
|
||||||
-memprofile="mem_${pkg_name}.prof" \
|
|
||||||
-trace="trace_${pkg_name}.out" \
|
|
||||||
"$full_pkg" 2>&1 | tee "profiles/test_${pkg_name}.log"
|
|
||||||
TEST_EXIT=$?
|
|
||||||
set -e
|
|
||||||
if [ $TEST_EXIT -ne 0 ]; then
|
|
||||||
echo "❌ $full_pkg failed with exit code $TEST_EXIT"
|
|
||||||
EXIT_CODE=1
|
|
||||||
else
|
|
||||||
echo "✅ $full_pkg passed"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
# Set output for artifact upload
|
|
||||||
if [ $EXIT_CODE -ne 0 ]; then
|
|
||||||
echo "upload_artifacts=true" >> "$GITHUB_OUTPUT"
|
|
||||||
else
|
|
||||||
echo "upload_artifacts=false" >> "$GITHUB_OUTPUT"
|
|
||||||
fi
|
|
||||||
exit $EXIT_CODE
|
|
||||||
- name: Output test profiles and traces
|
|
||||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v4
|
|
||||||
if: matrix.shard == 'profiled' && !cancelled() && steps.run-profiled-tests.outputs.upload_artifacts == 'true'
|
|
||||||
with:
|
|
||||||
name: integration-test-profiles-sqlite-nocgo-${{ github.run_number }}
|
|
||||||
path: profiles/
|
|
||||||
retention-days: 7
|
|
||||||
if-no-files-found: ignore
|
|
||||||
mysql:
|
mysql:
|
||||||
needs: detect-changes
|
|
||||||
if: needs.detect-changes.outputs.changed == 'true'
|
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
shard: [
|
shard: [
|
||||||
1/16, 2/16, 3/16, 4/16,
|
1/8, 2/8, 3/8, 4/8,
|
||||||
5/16, 6/16, 7/16, 8/16,
|
5/8, 6/8, 7/8, 8/8,
|
||||||
9/16, 10/16, 11/16, 12/16,
|
|
||||||
13/16, 14/16, 15/16, 16/16,
|
|
||||||
]
|
]
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
|
|
||||||
name: MySQL (${{ matrix.shard }})
|
name: MySQL (${{ matrix.shard }})
|
||||||
runs-on: ubuntu-x64-large-io
|
runs-on: ubuntu-latest-8-cores
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
env:
|
env:
|
||||||
@@ -187,7 +66,7 @@ jobs:
|
|||||||
MYSQL_HOST: 127.0.0.1
|
MYSQL_HOST: 127.0.0.1
|
||||||
services:
|
services:
|
||||||
mysql:
|
mysql:
|
||||||
image: mysql:8.0.43
|
image: mysql:8.0.32
|
||||||
env:
|
env:
|
||||||
MYSQL_ROOT_PASSWORD: rootpass
|
MYSQL_ROOT_PASSWORD: rootpass
|
||||||
MYSQL_DATABASE: grafana_tests
|
MYSQL_DATABASE: grafana_tests
|
||||||
@@ -198,11 +77,11 @@ jobs:
|
|||||||
- 3306:3306
|
- 3306:3306
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- name: Setup Go
|
- name: Setup Go
|
||||||
uses: actions/setup-go@v6.0.0
|
uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
go-version-file: go.mod
|
go-version-file: go.mod
|
||||||
cache: true
|
cache: true
|
||||||
@@ -214,22 +93,18 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
readarray -t PACKAGES <<< "$(./scripts/ci/backend-tests/pkgs-with-tests-named.sh -b TestIntegration | ./scripts/ci/backend-tests/shard.sh -N"$SHARD" -d-)"
|
readarray -t PACKAGES <<< "$(./scripts/ci/backend-tests/pkgs-with-tests-named.sh -b TestIntegration | ./scripts/ci/backend-tests/shard.sh -N"$SHARD" -d-)"
|
||||||
CGO_ENABLED=0 go test -p=1 -tags=mysql -timeout=8m -run '^TestIntegration' "${PACKAGES[@]}"
|
go test -p=1 -tags=mysql -timeout=5m -run '^TestIntegration' "${PACKAGES[@]}"
|
||||||
postgres:
|
postgres:
|
||||||
needs: detect-changes
|
|
||||||
if: needs.detect-changes.outputs.changed == 'true'
|
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
shard: [
|
shard: [
|
||||||
1/16, 2/16, 3/16, 4/16,
|
1/8, 2/8, 3/8, 4/8,
|
||||||
5/16, 6/16, 7/16, 8/16,
|
5/8, 6/8, 7/8, 8/8,
|
||||||
9/16, 10/16, 11/16, 12/16,
|
|
||||||
13/16, 14/16, 15/16, 16/16,
|
|
||||||
]
|
]
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
|
|
||||||
name: Postgres (${{ matrix.shard }})
|
name: Postgres (${{ matrix.shard }})
|
||||||
runs-on: ubuntu-x64-large-io
|
runs-on: ubuntu-latest-8-cores
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
env:
|
env:
|
||||||
@@ -238,7 +113,7 @@ jobs:
|
|||||||
POSTGRES_HOST: 127.0.0.1
|
POSTGRES_HOST: 127.0.0.1
|
||||||
services:
|
services:
|
||||||
postgres:
|
postgres:
|
||||||
image: postgres:17.6
|
image: postgres:12.3-alpine
|
||||||
env:
|
env:
|
||||||
POSTGRES_USER: grafanatest
|
POSTGRES_USER: grafanatest
|
||||||
POSTGRES_PASSWORD: grafanatest
|
POSTGRES_PASSWORD: grafanatest
|
||||||
@@ -247,11 +122,11 @@ jobs:
|
|||||||
- 5432:5432
|
- 5432:5432
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- name: Setup Go
|
- name: Setup Go
|
||||||
uses: actions/setup-go@v6.0.0
|
uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
go-version-file: go.mod
|
go-version-file: go.mod
|
||||||
cache: true
|
cache: true
|
||||||
@@ -263,7 +138,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
readarray -t PACKAGES <<< "$(./scripts/ci/backend-tests/pkgs-with-tests-named.sh -b TestIntegration | ./scripts/ci/backend-tests/shard.sh -N"$SHARD" -d-)"
|
readarray -t PACKAGES <<< "$(./scripts/ci/backend-tests/pkgs-with-tests-named.sh -b TestIntegration | ./scripts/ci/backend-tests/shard.sh -N"$SHARD" -d-)"
|
||||||
CGO_ENABLED=0 go test -p=1 -tags=postgres -timeout=8m -run '^TestIntegration' "${PACKAGES[@]}"
|
go test -p=1 -tags=postgres -timeout=5m -run '^TestIntegration' "${PACKAGES[@]}"
|
||||||
|
|
||||||
# This is the job that is actually required by rulesets.
|
# This is the job that is actually required by rulesets.
|
||||||
# We want to only require one job instead of all the individual tests and shards.
|
# We want to only require one job instead of all the individual tests and shards.
|
||||||
|
|||||||
7
.github/workflows/publish-artifact.yml
vendored
7
.github/workflows/publish-artifact.yml
vendored
@@ -44,7 +44,7 @@ jobs:
|
|||||||
permissions:
|
permissions:
|
||||||
id-token: write
|
id-token: write
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53
|
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093
|
||||||
with:
|
with:
|
||||||
name: ${{ inputs.name }}
|
name: ${{ inputs.name }}
|
||||||
pattern: ${{ inputs.pattern }}
|
pattern: ${{ inputs.pattern }}
|
||||||
@@ -52,7 +52,7 @@ jobs:
|
|||||||
path: ./artifact
|
path: ./artifact
|
||||||
- name: Log in to GCS
|
- name: Log in to GCS
|
||||||
id: login-to-gcs
|
id: login-to-gcs
|
||||||
uses: grafana/shared-workflows/actions/login-to-gcs@main
|
uses: grafana/shared-workflows/actions/login-to-gcs@login-to-gcs/v0.2.1
|
||||||
with:
|
with:
|
||||||
environment: ${{ inputs.environment }}
|
environment: ${{ inputs.environment }}
|
||||||
service_account: ${{ inputs.service-account }}
|
service_account: ${{ inputs.service-account }}
|
||||||
@@ -62,7 +62,7 @@ jobs:
|
|||||||
find ./artifact -mindepth 2 -maxdepth 2 -exec cp -r {} out/ \;
|
find ./artifact -mindepth 2 -maxdepth 2 -exec cp -r {} out/ \;
|
||||||
ls -al out
|
ls -al out
|
||||||
- name: Upload artifacts
|
- name: Upload artifacts
|
||||||
uses: grafana/shared-workflows/actions/push-to-gcs@main
|
uses: grafana/shared-workflows/actions/push-to-gcs@push-to-gcs-v0.2.0
|
||||||
with:
|
with:
|
||||||
bucket: ${{ inputs.bucket }}
|
bucket: ${{ inputs.bucket }}
|
||||||
environment: ${{ inputs.environment }}
|
environment: ${{ inputs.environment }}
|
||||||
@@ -70,4 +70,3 @@ jobs:
|
|||||||
path: out
|
path: out
|
||||||
bucket_path: ${{ inputs.bucket-path }}
|
bucket_path: ${{ inputs.bucket-path }}
|
||||||
service_account: ${{ inputs.service-account }}
|
service_account: ${{ inputs.service-account }}
|
||||||
gzip: false
|
|
||||||
|
|||||||
4
.github/workflows/publish-kinds-next.yml
vendored
4
.github/workflows/publish-kinds-next.yml
vendored
@@ -21,13 +21,13 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: "Checkout Grafana repo"
|
- name: "Checkout Grafana repo"
|
||||||
uses: "actions/checkout@v5"
|
uses: "actions/checkout@v4"
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- name: "Setup Go"
|
- name: "Setup Go"
|
||||||
uses: "actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00"
|
uses: "actions/setup-go@19bb51245e9c80abacb2e91cc42b33fa478b8639"
|
||||||
with:
|
with:
|
||||||
go-version-file: go.mod
|
go-version-file: go.mod
|
||||||
|
|
||||||
|
|||||||
6
.github/workflows/publish-kinds-release.yml
vendored
6
.github/workflows/publish-kinds-release.yml
vendored
@@ -23,14 +23,14 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: "Checkout Grafana repo"
|
- name: "Checkout Grafana repo"
|
||||||
uses: "actions/checkout@v5"
|
uses: "actions/checkout@v4"
|
||||||
with:
|
with:
|
||||||
# required for the `grafana/grafana-github-actions/has-matching-release-tag` action to work
|
# required for the `grafana/grafana-github-actions/has-matching-release-tag` action to work
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- name: "Setup Go"
|
- name: "Setup Go"
|
||||||
uses: "actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00"
|
uses: "actions/setup-go@19bb51245e9c80abacb2e91cc42b33fa478b8639"
|
||||||
with:
|
with:
|
||||||
go-version-file: go.mod
|
go-version-file: go.mod
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ jobs:
|
|||||||
run: go run .github/workflows/scripts/kinds/verify-kinds.go
|
run: go run .github/workflows/scripts/kinds/verify-kinds.go
|
||||||
|
|
||||||
- name: "Checkout Actions library"
|
- name: "Checkout Actions library"
|
||||||
uses: "actions/checkout@v5"
|
uses: "actions/checkout@v4"
|
||||||
with:
|
with:
|
||||||
repository: "grafana/grafana-github-actions"
|
repository: "grafana/grafana-github-actions"
|
||||||
path: "./actions"
|
path: "./actions"
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ jobs:
|
|||||||
id-token: write
|
id-token: write
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: grafana/writers-toolkit/publish-technical-documentation@publish-technical-documentation/v1 # zizmor: ignore[unpinned-uses]
|
- uses: grafana/writers-toolkit/publish-technical-documentation@publish-technical-documentation/v1 # zizmor: ignore[unpinned-uses]
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ jobs:
|
|||||||
id-token: write
|
id-token: write
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|||||||
4
.github/workflows/reject-gh-secrets.yml
vendored
4
.github/workflows/reject-gh-secrets.yml
vendored
@@ -12,15 +12,13 @@ permissions: {}
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
reject-gh-secrets:
|
reject-gh-secrets:
|
||||||
# Run on `grafana/grafana` main branch, or on pull requests to prevent double-running on mirrors
|
|
||||||
if: (github.event_name == 'pull_request' || (github.event_name == 'push' && github.repository == 'grafana/grafana'))
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
|
|||||||
55
.github/workflows/release-build.yml
vendored
55
.github/workflows/release-build.yml
vendored
@@ -96,7 +96,7 @@ jobs:
|
|||||||
private_key: ${{ env.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
private_key: ${{ env.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
||||||
repositories: '["grafana-enterprise"]'
|
repositories: '["grafana-enterprise"]'
|
||||||
permissions: '{"actions": "write"}'
|
permissions: '{"actions": "write"}'
|
||||||
- uses: actions/github-script@v8
|
- uses: actions/github-script@v7
|
||||||
env:
|
env:
|
||||||
REF: ${{ github.ref_name }}
|
REF: ${{ github.ref_name }}
|
||||||
VERSION: ${{ needs.setup.outputs.version }}
|
VERSION: ${{ needs.setup.outputs.version }}
|
||||||
@@ -156,16 +156,16 @@ jobs:
|
|||||||
artifacts: targz:grafana:linux/arm/v6,deb:grafana:linux/arm/v6
|
artifacts: targz:grafana:linux/arm/v6,deb:grafana:linux/arm/v6
|
||||||
verify: true
|
verify: true
|
||||||
- name: windows-amd64
|
- name: windows-amd64
|
||||||
artifacts: targz:grafana:windows/amd64:nocgo,zip:grafana:windows/amd64:nocgo,msi:grafana:windows/amd64:nocgo
|
artifacts: targz:grafana:windows/amd64,zip:grafana:windows/amd64,msi:grafana:windows/amd64
|
||||||
verify: true
|
verify: true
|
||||||
- name: windows-arm64
|
- name: windows-arm64
|
||||||
artifacts: targz:grafana:windows/arm64:nocgo,zip:grafana:windows/arm64:nocgo
|
artifacts: targz:grafana:windows/arm64,zip:grafana:windows/arm64
|
||||||
verify: true
|
verify: true
|
||||||
- name: darwin-amd64
|
- name: darwin-amd64
|
||||||
artifacts: targz:grafana:darwin/amd64:nocgo
|
artifacts: targz:grafana:darwin/amd64
|
||||||
verify: true
|
verify: true
|
||||||
- name: darwin-arm64
|
- name: darwin-arm64
|
||||||
artifacts: targz:grafana:darwin/arm64:nocgo
|
artifacts: targz:grafana:darwin/arm64
|
||||||
verify: true
|
verify: true
|
||||||
steps:
|
steps:
|
||||||
- uses: grafana/shared-workflows/actions/dockerhub-login@dockerhub-login/v1.0.2
|
- uses: grafana/shared-workflows/actions/dockerhub-login@dockerhub-login/v1.0.2
|
||||||
@@ -187,12 +187,12 @@ jobs:
|
|||||||
output: artifacts-${{ matrix.name }}.txt
|
output: artifacts-${{ matrix.name }}.txt
|
||||||
verify: ${{ matrix.verify }}
|
verify: ${{ matrix.verify }}
|
||||||
build-id: ${{ github.run_id }}
|
build-id: ${{ github.run_id }}
|
||||||
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
|
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
|
||||||
with:
|
with:
|
||||||
name: artifacts-list-${{ matrix.name }}
|
name: artifacts-list-${{ matrix.name }}
|
||||||
path: ${{ steps.build.outputs.file }}
|
path: ${{ steps.build.outputs.file }}
|
||||||
retention-days: 1
|
retention-days: 1
|
||||||
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
|
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
|
||||||
with:
|
with:
|
||||||
name: artifacts-${{ matrix.name }}
|
name: artifacts-${{ matrix.name }}
|
||||||
path: ${{ steps.build.outputs.dist-dir }}
|
path: ${{ steps.build.outputs.dist-dir }}
|
||||||
@@ -225,27 +225,27 @@ jobs:
|
|||||||
- build
|
- build
|
||||||
steps:
|
steps:
|
||||||
- uses: grafana/shared-workflows/actions/dockerhub-login@dockerhub-login/v1.0.2
|
- uses: grafana/shared-workflows/actions/dockerhub-login@dockerhub-login/v1.0.2
|
||||||
- uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53
|
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093
|
||||||
with:
|
with:
|
||||||
name: artifacts-list-linux-amd64
|
name: artifacts-list-linux-amd64
|
||||||
path: .
|
path: .
|
||||||
- uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53
|
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093
|
||||||
with:
|
with:
|
||||||
name: artifacts-list-linux-arm64
|
name: artifacts-list-linux-arm64
|
||||||
path: .
|
path: .
|
||||||
- uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53
|
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093
|
||||||
with:
|
with:
|
||||||
name: artifacts-list-linux-armv7
|
name: artifacts-list-linux-armv7
|
||||||
path: .
|
path: .
|
||||||
- uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53
|
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093
|
||||||
with:
|
with:
|
||||||
name: artifacts-linux-amd64
|
name: artifacts-linux-amd64
|
||||||
path: dist
|
path: dist
|
||||||
- uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53
|
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093
|
||||||
with:
|
with:
|
||||||
name: artifacts-linux-arm64
|
name: artifacts-linux-arm64
|
||||||
path: dist
|
path: dist
|
||||||
- uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53
|
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093
|
||||||
with:
|
with:
|
||||||
name: artifacts-linux-armv7
|
name: artifacts-linux-armv7
|
||||||
path: dist
|
path: dist
|
||||||
@@ -272,30 +272,21 @@ jobs:
|
|||||||
docker manifest push "grafana/grafana-dev:${VERSION}"
|
docker manifest push "grafana/grafana-dev:${VERSION}"
|
||||||
docker manifest push "grafana/grafana-dev:${VERSION}-ubuntu"
|
docker manifest push "grafana/grafana-dev:${VERSION}-ubuntu"
|
||||||
|
|
||||||
dispatch-npm-canaries:
|
publish-npm-canaries:
|
||||||
if: github.ref_name == 'main'
|
if: github.ref_name == 'main'
|
||||||
name: Dispatch publish NPM canaries
|
name: Publish NPM canaries
|
||||||
|
uses: ./.github/workflows/release-npm.yml
|
||||||
permissions:
|
permissions:
|
||||||
actions: write
|
|
||||||
contents: read
|
contents: read
|
||||||
runs-on: ubuntu-x64-small
|
id-token: write
|
||||||
needs:
|
needs:
|
||||||
- setup
|
- setup
|
||||||
steps:
|
- build
|
||||||
- name: Dispatch action
|
with:
|
||||||
env:
|
grafana_commit: ${{ needs.setup.outputs.grafana-commit }}
|
||||||
GRAFANA_COMMIT: ${{ needs.setup.outputs.grafana-commit }}
|
version: ${{ needs.setup.outputs.version }}
|
||||||
VERSION: ${{ needs.setup.outputs.version }}
|
build_id: ${{ github.run_id }}
|
||||||
BUILD_ID: ${{ github.run_id }}
|
version_type: "canary"
|
||||||
GH_TOKEN: ${{ github.token }}
|
|
||||||
run: |
|
|
||||||
gh workflow run release-npm.yml \
|
|
||||||
--repo grafana/grafana \
|
|
||||||
--ref main \
|
|
||||||
--field grafana_commit="$GRAFANA_COMMIT" \
|
|
||||||
--field version="$VERSION" \
|
|
||||||
--field build_id="$BUILD_ID"\
|
|
||||||
--field version_type="canary"
|
|
||||||
|
|
||||||
# notify-pr creates (or updates) a comment in a pull request to link to this workflow where the release artifacts are
|
# notify-pr creates (or updates) a comment in a pull request to link to this workflow where the release artifacts are
|
||||||
# being built.
|
# being built.
|
||||||
|
|||||||
4
.github/workflows/release-comms.yml
vendored
4
.github/workflows/release-comms.yml
vendored
@@ -80,7 +80,7 @@ jobs:
|
|||||||
create_security_branch_grafana:
|
create_security_branch_grafana:
|
||||||
name: Create security branch (Grafana Security Mirror)
|
name: Create security branch (Grafana Security Mirror)
|
||||||
needs: setup
|
needs: setup
|
||||||
uses: grafana/grafana/.github/workflows/create-security-branch.yml@main
|
uses: ./.github/workflows/create-security-branch.yml
|
||||||
with:
|
with:
|
||||||
release_branch: ${{ needs.setup.outputs.release_branch }}
|
release_branch: ${{ needs.setup.outputs.release_branch }}
|
||||||
security_branch_number: "01"
|
security_branch_number: "01"
|
||||||
@@ -88,7 +88,7 @@ jobs:
|
|||||||
create_security_branch_enterprise:
|
create_security_branch_enterprise:
|
||||||
name: Create security branch (Enterprise)
|
name: Create security branch (Enterprise)
|
||||||
needs: setup
|
needs: setup
|
||||||
uses: grafana/grafana/.github/workflows/create-security-branch.yml@main
|
uses: ./.github/workflows/create-security-branch.yml
|
||||||
with:
|
with:
|
||||||
release_branch: ${{ needs.setup.outputs.release_branch }}
|
release_branch: ${{ needs.setup.outputs.release_branch }}
|
||||||
security_branch_number: "01"
|
security_branch_number: "01"
|
||||||
|
|||||||
4
.github/workflows/release-npm.yml
vendored
4
.github/workflows/release-npm.yml
vendored
@@ -60,7 +60,7 @@ jobs:
|
|||||||
echo "github.ref: $GITHUB_REF"
|
echo "github.ref: $GITHUB_REF"
|
||||||
|
|
||||||
- name: Checkout workflow ref
|
- name: Checkout workflow ref
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
fetch-depth: 100
|
fetch-depth: 100
|
||||||
@@ -86,7 +86,7 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
- name: Checkout build commit
|
- name: Checkout build commit
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
ref: ${{ inputs.grafana_commit }}
|
ref: ${{ inputs.grafana_commit }}
|
||||||
|
|||||||
12
.github/workflows/release-pr.yml
vendored
12
.github/workflows/release-pr.yml
vendored
@@ -118,14 +118,14 @@ jobs:
|
|||||||
permissions: "{\"contents\": \"write\", \"pull_requests\": \"write\", \"workflows\":\"write\"}"
|
permissions: "{\"contents\": \"write\", \"pull_requests\": \"write\", \"workflows\":\"write\"}"
|
||||||
- run: echo "RELEASE_BRANCH=release-${VERSION}" >> "$GITHUB_ENV"
|
- run: echo "RELEASE_BRANCH=release-${VERSION}" >> "$GITHUB_ENV"
|
||||||
- name: Checkout Grafana
|
- name: Checkout Grafana
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
token: ${{ steps.generate_changelog_token.outputs.token }}
|
token: ${{ steps.generate_changelog_token.outputs.token }}
|
||||||
ref: ${{ env.RELEASE_BRANCH }}
|
ref: ${{ env.RELEASE_BRANCH }}
|
||||||
fetch-tags: true
|
fetch-tags: true
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Checkout Grafana (main)
|
- name: Checkout Grafana (main)
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
token: ${{ steps.generate_changelog_token.outputs.token }}
|
token: ${{ steps.generate_changelog_token.outputs.token }}
|
||||||
ref: main
|
ref: main
|
||||||
@@ -133,10 +133,10 @@ jobs:
|
|||||||
path: .grafana-main
|
path: .grafana-main
|
||||||
|
|
||||||
- name: Setup nodejs environment
|
- name: Setup nodejs environment
|
||||||
uses: actions/setup-node@v6
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version-file: .nvmrc
|
node-version-file: .nvmrc
|
||||||
- uses: actions/setup-go@v6.0.0
|
- uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
go-version-file: go.mod
|
go-version-file: go.mod
|
||||||
- name: Configure git user
|
- name: Configure git user
|
||||||
@@ -196,7 +196,7 @@ jobs:
|
|||||||
run: git add CHANGELOG.md && git commit --allow-empty -m "Update changelog" CHANGELOG.md
|
run: git add CHANGELOG.md && git commit --allow-empty -m "Update changelog" CHANGELOG.md
|
||||||
- name: Bump versions
|
- name: Bump versions
|
||||||
if: ${{ inputs.bump == true || inputs.bump == 'true' }}
|
if: ${{ inputs.bump == true || inputs.bump == 'true' }}
|
||||||
uses: dagger/dagger-for-github@d913e70051faf3b907d4dd96ef1161083c88c644
|
uses: dagger/dagger-for-github@e47aba410ef9bb9ed81a4d2a97df31061e5e842e
|
||||||
with:
|
with:
|
||||||
version: 0.18.8
|
version: 0.18.8
|
||||||
verb: run
|
verb: run
|
||||||
@@ -209,7 +209,7 @@ jobs:
|
|||||||
if: ${{ inputs.bump == true || inputs.bump == 'true' }}
|
if: ${{ inputs.bump == true || inputs.bump == 'true' }}
|
||||||
run: |
|
run: |
|
||||||
git add package.json lerna.json yarn.lock packages public
|
git add package.json lerna.json yarn.lock packages public
|
||||||
test -e e2e-playwright/test-plugins && git add e2e-playwright/test-plugins
|
test -e e2e/test-plugins && git add e2e/test-plugins
|
||||||
git commit -m "Update version to $VERSION"
|
git commit -m "Update version to $VERSION"
|
||||||
|
|
||||||
- name: Git push
|
- name: Git push
|
||||||
|
|||||||
33
.github/workflows/relyance-scan.yml
vendored
33
.github/workflows/relyance-scan.yml
vendored
@@ -1,33 +0,0 @@
|
|||||||
name: Relyance Compliance Inspection
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
- cron: '0 0 * * *' # Run daily at 00:00 UTC
|
|
||||||
workflow_dispatch: # Allow for manual trigger
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
relyance-compliance-inspector:
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
id-token: write # Needed for Vault access
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
|
|
||||||
- name: Get API key
|
|
||||||
id: vault-secrets
|
|
||||||
uses: grafana/shared-workflows/actions/get-vault-secrets@5d7e361bc7e0a183cde8afe9899fb7b596d2659b # get-vault-secrets-v1.2.0
|
|
||||||
with:
|
|
||||||
repo_secrets: |
|
|
||||||
API_KEY=relyance:API_KEY
|
|
||||||
|
|
||||||
- name: Run Relyance scan
|
|
||||||
env:
|
|
||||||
API_KEY: "${{ fromJSON(steps.vault-secrets.outputs.secrets).API_KEY }}"
|
|
||||||
run: |
|
|
||||||
docker pull gcr.io/relyance-ext/compliance_inspector:release && \
|
|
||||||
docker run --rm -v ${{ github.workspace }}:/repo --env "API_KEY=${{ env.API_KEY }}" gcr.io/relyance-ext/compliance_inspector:release
|
|
||||||
14
.github/workflows/run-dashboard-search-e2e.yml
vendored
14
.github/workflows/run-dashboard-search-e2e.yml
vendored
@@ -25,16 +25,16 @@ jobs:
|
|||||||
id-token: write
|
id-token: write
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- name: Pin Go version to mod file
|
- name: Pin Go version to mod file
|
||||||
uses: actions/setup-go@v6.0.0
|
uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
go-version-file: 'go.mod'
|
go-version-file: 'go.mod'
|
||||||
cache: true
|
cache: true
|
||||||
- run: go version
|
- run: go version
|
||||||
- uses: actions/setup-node@v6
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'yarn'
|
cache: 'yarn'
|
||||||
@@ -51,7 +51,7 @@ jobs:
|
|||||||
run: yarn install --immutable
|
run: yarn install --immutable
|
||||||
- name: Install Cypress dependencies
|
- name: Install Cypress dependencies
|
||||||
if: steps.cache-node-modules.outputs.cache-hit != 'true'
|
if: steps.cache-node-modules.outputs.cache-hit != 'true'
|
||||||
uses: cypress-io/github-action@b8ba51a856ba5f4c15cf39007636d4ab04f23e3c
|
uses: cypress-io/github-action@108b8684ae52e735ff7891524cbffbcd4be5b19f
|
||||||
with:
|
with:
|
||||||
runTests: false
|
runTests: false
|
||||||
- name: Cache Grafana Build and Dependencies
|
- name: Cache Grafana Build and Dependencies
|
||||||
@@ -64,7 +64,7 @@ jobs:
|
|||||||
tools/
|
tools/
|
||||||
public/
|
public/
|
||||||
conf/
|
conf/
|
||||||
e2e-playwright/test-plugins/
|
e2e/test-plugins/
|
||||||
devenv/
|
devenv/
|
||||||
key: ${{ runner.os }}-grafana-${{ hashFiles('go.mod', 'package-lock.json', 'Makefile', 'pkg/storage/**/*.go', 'public/app/features/search/**/*.ts', 'public/app/features/search/**/*.tsx') }}
|
key: ${{ runner.os }}-grafana-${{ hashFiles('go.mod', 'package-lock.json', 'Makefile', 'pkg/storage/**/*.go', 'public/app/features/search/**/*.ts', 'public/app/features/search/**/*.tsx') }}
|
||||||
# only rebuild grafana if search files have changed ( or dependencies )
|
# only rebuild grafana if search files have changed ( or dependencies )
|
||||||
@@ -96,7 +96,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- name: Restore Cached Node Modules
|
- name: Restore Cached Node Modules
|
||||||
@@ -116,7 +116,7 @@ jobs:
|
|||||||
tools/
|
tools/
|
||||||
public/
|
public/
|
||||||
conf/
|
conf/
|
||||||
e2e-playwright/test-plugins/
|
e2e/test-plugins/
|
||||||
devenv/
|
devenv/
|
||||||
key: ${{ runner.os }}-grafana-${{ hashFiles('go.mod', 'package-lock.json', 'Makefile', 'pkg/storage/**/*.go', 'public/app/features/search/**/*.ts', 'public/app/features/search/**/*.tsx') }}
|
key: ${{ runner.os }}-grafana-${{ hashFiles('go.mod', 'package-lock.json', 'Makefile', 'pkg/storage/**/*.go', 'public/app/features/search/**/*.ts', 'public/app/features/search/**/*.tsx') }}
|
||||||
- name: Set the step name
|
- name: Set the step name
|
||||||
|
|||||||
14
.github/workflows/run-schema-v2-e2e.yml
vendored
14
.github/workflows/run-schema-v2-e2e.yml
vendored
@@ -13,29 +13,31 @@ env:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
dashboard-schema-v2-e2e:
|
dashboard-schema-v2-e2e:
|
||||||
runs-on: ubuntu-latest-8-cores
|
runs-on: ubuntu-latest
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
if: github.event.pull_request.draft == false
|
if: github.event.pull_request.draft == false
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- name: Pin Go version to mod file
|
- name: Pin Go version to mod file
|
||||||
uses: actions/setup-go@v6.0.0
|
uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
go-version-file: 'go.mod'
|
go-version-file: 'go.mod'
|
||||||
- run: go version
|
- run: go version
|
||||||
- uses: actions/setup-node@v6
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'yarn'
|
cache: 'yarn'
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: yarn install --immutable
|
run: yarn install --immutable
|
||||||
- name: Install Playwright browsers
|
|
||||||
run: yarn playwright install --with-deps chromium
|
|
||||||
- name: Build grafana
|
- name: Build grafana
|
||||||
run: make build
|
run: make build
|
||||||
|
- name: Install Cypress dependencies
|
||||||
|
uses: cypress-io/github-action@108b8684ae52e735ff7891524cbffbcd4be5b19f
|
||||||
|
with:
|
||||||
|
runTests: false
|
||||||
- name: Run dashboard scenes e2e
|
- name: Run dashboard scenes e2e
|
||||||
run: yarn e2e:schema-v2 || echo "Test failed but marking as success since schema V2 is behind a feature flag and should not block PRs"
|
run: yarn e2e:schema-v2 || echo "Test failed but marking as success since schema V2 is behind a feature flag and should not block PRs"
|
||||||
|
|
||||||
|
|||||||
@@ -1,75 +0,0 @@
|
|||||||
import fs from 'node:fs'
|
|
||||||
|
|
||||||
interface Payload {
|
|
||||||
name: string;
|
|
||||||
value: number;
|
|
||||||
interval: number;
|
|
||||||
mtype: string;
|
|
||||||
time: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log("Publishing metrics");
|
|
||||||
|
|
||||||
// Get API key from environment variable
|
|
||||||
const key = process.env.GRAFANA_MISC_STATS_API_KEY;
|
|
||||||
if (!key) {
|
|
||||||
throw new Error("API key is required. Provide it via the GRAFANA_MISC_STATS_API_KEY environment variable");
|
|
||||||
}
|
|
||||||
|
|
||||||
const unixTimestamp = Math.floor(Date.now() / 1000);
|
|
||||||
const data: Payload[] = [];
|
|
||||||
|
|
||||||
const input = fs.readFileSync(0, "utf-8");
|
|
||||||
// parse metrics from input
|
|
||||||
const regexp = /^Metrics: (\{.+\})/ms;
|
|
||||||
const matches = input.match(regexp);
|
|
||||||
|
|
||||||
if (!matches) {
|
|
||||||
throw new Error("No metrics found");
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log('matches[0]', matches[0])
|
|
||||||
console.log('matches[1]', matches[1])
|
|
||||||
|
|
||||||
const metrics: Record<string, string> = JSON.parse(matches[1]);
|
|
||||||
|
|
||||||
// Convert metrics to payload format
|
|
||||||
for (const [metricName, valueStr] of Object.entries(metrics)) {
|
|
||||||
const value = parseInt(valueStr, 10);
|
|
||||||
if (isNaN(value)) {
|
|
||||||
throw new Error(`Metric "${metricName}" has invalid value format: "${valueStr}"`);
|
|
||||||
}
|
|
||||||
|
|
||||||
data.push({
|
|
||||||
name: metricName,
|
|
||||||
value: value,
|
|
||||||
interval: 60,
|
|
||||||
mtype: "gauge",
|
|
||||||
time: unixTimestamp,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const jsonPayload = JSON.stringify(data);
|
|
||||||
console.log(`Publishing metrics to https://graphite-us-central1.grafana.net/metrics, JSON: ${jsonPayload}`);
|
|
||||||
|
|
||||||
const url = 'https://graphite-us-central1.grafana.net/metrics';
|
|
||||||
const username = '6371';
|
|
||||||
const headers = new Headers();
|
|
||||||
headers.set("Content-Type", "application/json");
|
|
||||||
headers.set('Authorization', 'Basic ' + Buffer.from(username + ":" + key).toString('base64'));
|
|
||||||
|
|
||||||
try {
|
|
||||||
const response = await fetch(url, {
|
|
||||||
method: "POST",
|
|
||||||
headers,
|
|
||||||
body: jsonPayload,
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!response.ok) {
|
|
||||||
throw new Error(`Metrics publishing failed with status code ${response.status}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log("Metrics successfully published");
|
|
||||||
} catch (error) {
|
|
||||||
throw new Error(`Metrics publishing failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
||||||
}
|
|
||||||
4
.github/workflows/shellcheck.yml
vendored
4
.github/workflows/shellcheck.yml
vendored
@@ -15,8 +15,6 @@ permissions: {}
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
shellcheck:
|
shellcheck:
|
||||||
# Run on `grafana/grafana` main branch, or on pull requests to prevent double-running on mirrors
|
|
||||||
if: (github.event_name == 'pull_request' || (github.event_name == 'push' && github.repository == 'grafana/grafana'))
|
|
||||||
name: Shellcheck scripts
|
name: Shellcheck scripts
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
permissions:
|
||||||
@@ -24,7 +22,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Clone repository
|
- name: Clone repository
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- name: Run Shellcheck
|
- name: Run Shellcheck
|
||||||
|
|||||||
2
.github/workflows/stale.yml
vendored
2
.github/workflows/stale.yml
vendored
@@ -11,7 +11,7 @@ jobs:
|
|||||||
stale:
|
stale:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/stale@v10
|
- uses: actions/stale@v9
|
||||||
with:
|
with:
|
||||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
operations-per-run: 750
|
operations-per-run: 750
|
||||||
|
|||||||
88
.github/workflows/storybook-a11y.yml
vendored
88
.github/workflows/storybook-a11y.yml
vendored
@@ -1,88 +0,0 @@
|
|||||||
name: Run Storybook a11y tests
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
- release-*.*.*
|
|
||||||
|
|
||||||
permissions: {}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
detect-changes:
|
|
||||||
name: Detect whether code changed
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
outputs:
|
|
||||||
changed: ${{ steps.detect-changes.outputs.frontend }}
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
persist-credentials: true # required to get more history in the changed-files action
|
|
||||||
fetch-depth: 2
|
|
||||||
- name: Detect changes
|
|
||||||
id: detect-changes
|
|
||||||
uses: ./.github/actions/change-detection
|
|
||||||
with:
|
|
||||||
self: .github/workflows/storybook-a11y.yml
|
|
||||||
|
|
||||||
test-storybook-a11y-light:
|
|
||||||
runs-on: ubuntu-latest-8-cores
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
id-token: write
|
|
||||||
needs: detect-changes
|
|
||||||
if: needs.detect-changes.outputs.changed == 'true'
|
|
||||||
name: "Run Storybook a11y tests (light theme)"
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
- uses: actions/setup-node@v6
|
|
||||||
with:
|
|
||||||
node-version-file: '.nvmrc'
|
|
||||||
package-manager-cache: false # too large for GH's cache limits :-(
|
|
||||||
- run: yarn install --immutable --check-cache
|
|
||||||
- name: Install Playwright browsers
|
|
||||||
run: npx playwright install --with-deps
|
|
||||||
- name: Start Storybook
|
|
||||||
run: STORYBOOK_THEME=light yarn storybook &
|
|
||||||
- name: Run tests
|
|
||||||
# the chromium browser used by Playwright sets its locale to "en_US@posix" by default
|
|
||||||
# this is not a valid language code, and causes some stories to fail to load!
|
|
||||||
# instead, we set the LANG environment variable to en_US to override this
|
|
||||||
# see https://github.com/microsoft/playwright/issues/34046
|
|
||||||
env:
|
|
||||||
LANG: en_US
|
|
||||||
run: npx wait-on --timeout 120000 http://localhost:9001 && yarn test:storybook
|
|
||||||
|
|
||||||
test-storybook-a11y-dark:
|
|
||||||
runs-on: ubuntu-latest-8-cores
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
id-token: write
|
|
||||||
needs: detect-changes
|
|
||||||
if: needs.detect-changes.outputs.changed == 'true'
|
|
||||||
name: "Run Storybook a11y tests (dark theme)"
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
- uses: actions/setup-node@v6
|
|
||||||
with:
|
|
||||||
node-version-file: '.nvmrc'
|
|
||||||
package-manager-cache: false # too large for GH's cache limits :-(
|
|
||||||
- run: yarn install --immutable --check-cache
|
|
||||||
- name: Install Playwright browsers
|
|
||||||
run: npx playwright install --with-deps
|
|
||||||
- name: Start Storybook
|
|
||||||
run: STORYBOOK_THEME=dark yarn storybook &
|
|
||||||
- name: Run tests
|
|
||||||
# the chromium browser used by Playwright sets its locale to "en_US@posix" by default
|
|
||||||
# this is not a valid language code, and causes some stories to fail to load!
|
|
||||||
# instead, we set the LANG environment variable to en_US to override this
|
|
||||||
# see https://github.com/microsoft/playwright/issues/34046
|
|
||||||
env:
|
|
||||||
LANG: en_US
|
|
||||||
run: npx wait-on --timeout 120000 http://localhost:9001 && yarn test:storybook
|
|
||||||
52
.github/workflows/storybook-verification.yml
vendored
Normal file
52
.github/workflows/storybook-verification.yml
vendored
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
name: Verify Storybook
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- 'packages/grafana-ui/**'
|
||||||
|
- '!docs/**'
|
||||||
|
- '!*.md'
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- 'packages/grafana-ui/**'
|
||||||
|
- '!docs/**'
|
||||||
|
- '!*.md'
|
||||||
|
|
||||||
|
permissions: {}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
verify-storybook:
|
||||||
|
name: Verify Storybook
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
cache: 'yarn'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: yarn install --immutable
|
||||||
|
|
||||||
|
- name: Run Storybook and E2E tests
|
||||||
|
uses: cypress-io/github-action@108b8684ae52e735ff7891524cbffbcd4be5b19f
|
||||||
|
with:
|
||||||
|
browser: chrome
|
||||||
|
start: yarn storybook --quiet
|
||||||
|
wait-on: 'http://localhost:9001'
|
||||||
|
wait-on-timeout: 60
|
||||||
|
command: yarn e2e:storybook
|
||||||
|
install: false
|
||||||
|
env:
|
||||||
|
HOST: localhost
|
||||||
|
PORT: 9001
|
||||||
27
.github/workflows/swagger-gen.yml
vendored
27
.github/workflows/swagger-gen.yml
vendored
@@ -14,42 +14,21 @@ concurrency:
|
|||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
detect-changes:
|
|
||||||
# Run on `grafana/grafana` main branch, or on pull requests to prevent double-running on mirrors
|
|
||||||
if: (github.event_name == 'pull_request' || (github.event_name == 'push' && github.repository == 'grafana/grafana'))
|
|
||||||
name: Detect whether code changed
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
outputs:
|
|
||||||
changed: ${{ steps.detect-changes.outputs.backend }}
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
persist-credentials: true # required to get more history in the changed-files action
|
|
||||||
fetch-depth: 2
|
|
||||||
- name: Detect changes
|
|
||||||
id: detect-changes
|
|
||||||
uses: ./.github/actions/change-detection
|
|
||||||
with:
|
|
||||||
self: .github/workflows/swagger-gen.yml
|
|
||||||
|
|
||||||
verify:
|
verify:
|
||||||
name: Verify committed API specs match
|
name: Verify committed API specs match
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: detect-changes
|
if: ${{ github.repository == 'grafana/grafana' }}
|
||||||
if: github.repository == 'grafana/grafana' && needs.detect-changes.outputs.changed == 'true'
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read # clone the repository
|
contents: read # clone the repository
|
||||||
id-token: write # required for Vault access
|
id-token: write # required for Vault access
|
||||||
steps:
|
steps:
|
||||||
# Set up repository clone
|
# Set up repository clone
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- name: Setup Go
|
- name: Setup Go
|
||||||
uses: actions/setup-go@v6.0.0
|
uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
go-version-file: go.mod
|
go-version-file: go.mod
|
||||||
- name: Setup Enterprise
|
- name: Setup Enterprise
|
||||||
|
|||||||
2
.github/workflows/sync-mirror-event.yml
vendored
2
.github/workflows/sync-mirror-event.yml
vendored
@@ -41,7 +41,7 @@ jobs:
|
|||||||
app_id: ${{ vars.DELIVERY_BOT_APP_ID }}
|
app_id: ${{ vars.DELIVERY_BOT_APP_ID }}
|
||||||
private_key: ${{ env.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
private_key: ${{ env.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
||||||
|
|
||||||
- uses: actions/github-script@v8
|
- uses: actions/github-script@v7
|
||||||
if: github.repository == 'grafana/grafana'
|
if: github.repository == 'grafana/grafana'
|
||||||
with:
|
with:
|
||||||
github-token: ${{ steps.generate_token.outputs.token }}
|
github-token: ${{ steps.generate_token.outputs.token }}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user