Commit 4f601761 by Torkel Ödegaard Committed by GitHub

Merge pull request #13938 from tarekbecker/grafana-css-hash

Add [hash] to grafana.{light,dark}.css
parents b770d52e 61ff9fe6
...@@ -8,6 +8,7 @@ awsconfig ...@@ -8,6 +8,7 @@ awsconfig
/dist /dist
/public/build /public/build
/public/views/index.html /public/views/index.html
/public/views/error.html
/emails/dist /emails/dist
/public_gen /public_gen
/public/vendor/npm /public/vendor/npm
......
...@@ -18,6 +18,7 @@ import ( ...@@ -18,6 +18,7 @@ import (
) )
func TestMiddlewareContext(t *testing.T) { func TestMiddlewareContext(t *testing.T) {
setting.ERR_TEMPLATE_NAME = "error-template"
Convey("Given the grafana middleware", t, func() { Convey("Given the grafana middleware", t, func() {
middlewareScenario("middleware should add context to injector", func(sc *scenarioContext) { middlewareScenario("middleware should add context to injector", func(sc *scenarioContext) {
......
...@@ -138,7 +138,7 @@ func Recovery() macaron.Handler { ...@@ -138,7 +138,7 @@ func Recovery() macaron.Handler {
c.JSON(500, resp) c.JSON(500, resp)
} else { } else {
c.HTML(500, "error") c.HTML(500, setting.ERR_TEMPLATE_NAME)
} }
} }
}() }()
......
...@@ -8,11 +8,14 @@ import ( ...@@ -8,11 +8,14 @@ import (
"github.com/grafana/grafana/pkg/bus" "github.com/grafana/grafana/pkg/bus"
m "github.com/grafana/grafana/pkg/models" m "github.com/grafana/grafana/pkg/models"
"github.com/grafana/grafana/pkg/services/session" "github.com/grafana/grafana/pkg/services/session"
"github.com/grafana/grafana/pkg/setting"
. "github.com/smartystreets/goconvey/convey" . "github.com/smartystreets/goconvey/convey"
"gopkg.in/macaron.v1" "gopkg.in/macaron.v1"
) )
func TestRecoveryMiddleware(t *testing.T) { func TestRecoveryMiddleware(t *testing.T) {
setting.ERR_TEMPLATE_NAME = "error-template"
Convey("Given an api route that panics", t, func() { Convey("Given an api route that panics", t, func() {
apiURL := "/api/whatever" apiURL := "/api/whatever"
recoveryScenario("recovery middleware should return json", apiURL, func(sc *scenarioContext) { recoveryScenario("recovery middleware should return json", apiURL, func(sc *scenarioContext) {
...@@ -50,6 +53,7 @@ func recoveryScenario(desc string, url string, fn scenarioFunc) { ...@@ -50,6 +53,7 @@ func recoveryScenario(desc string, url string, fn scenarioFunc) {
sc := &scenarioContext{ sc := &scenarioContext{
url: url, url: url,
} }
viewsPath, _ := filepath.Abs("../../public/views") viewsPath, _ := filepath.Abs("../../public/views")
sc.m = macaron.New() sc.m = macaron.New()
......
...@@ -36,7 +36,7 @@ func (ctx *ReqContext) Handle(status int, title string, err error) { ...@@ -36,7 +36,7 @@ func (ctx *ReqContext) Handle(status int, title string, err error) {
ctx.Data["AppSubUrl"] = setting.AppSubUrl ctx.Data["AppSubUrl"] = setting.AppSubUrl
ctx.Data["Theme"] = "dark" ctx.Data["Theme"] = "dark"
ctx.HTML(status, "error") ctx.HTML(status, setting.ERR_TEMPLATE_NAME)
} }
func (ctx *ReqContext) JsonOK(message string) { func (ctx *ReqContext) JsonOK(message string) {
......
...@@ -39,6 +39,10 @@ const ( ...@@ -39,6 +39,10 @@ const (
) )
var ( var (
ERR_TEMPLATE_NAME = "error"
)
var (
// App settings. // App settings.
Env = DEV Env = DEV
AppUrl string AppUrl string
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<base href="[[.AppSubUrl]]/" /> <base href="[[.AppSubUrl]]/" />
<link rel="stylesheet" href="public/build/grafana.[[ .Theme ]].css?v[[ .BuildVersion ]]"> <link rel="stylesheet" href="public/build/grafana.[[ .Theme ]].<%= webpack.hash %>.css">
<link rel="icon" type="image/png" href="public/img/fav32.png"> <link rel="icon" type="image/png" href="public/img/fav32.png">
<link rel="mask-icon" href="public/img/grafana_mask_icon.svg" color="#F05A28"> <link rel="mask-icon" href="public/img/grafana_mask_icon.svg" color="#F05A28">
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<link rel="mask-icon" href="public/img/grafana_mask_icon.svg" color="#F05A28"> <link rel="mask-icon" href="public/img/grafana_mask_icon.svg" color="#F05A28">
<link rel="apple-touch-icon" sizes="180x180" href="public/img/apple-touch-icon.png"> <link rel="apple-touch-icon" sizes="180x180" href="public/img/apple-touch-icon.png">
<link rel="stylesheet" href="public/build/grafana.[[ .Theme ]].css?v[[ .BuildVersion ]]+[[ .BuildCommit ]]"> <link rel="stylesheet" href="public/build/grafana.[[ .Theme ]].<%= webpack.hash %>.css">
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black"> <meta name="apple-mobile-web-app-status-bar-style" content="black">
......
...@@ -47,7 +47,7 @@ module.exports = { ...@@ -47,7 +47,7 @@ module.exports = {
}, },
{ {
test: /\.html$/, test: /\.html$/,
exclude: /index\.template.html/, exclude: /(index|error)\-template\.html/,
use: [ use: [
{ loader: 'ngtemplate-loader?relativeTo=' + (path.resolve(__dirname, '../../public')) + '&prefix=public' }, { loader: 'ngtemplate-loader?relativeTo=' + (path.resolve(__dirname, '../../public')) + '&prefix=public' },
{ {
......
...@@ -80,11 +80,16 @@ module.exports = merge(common, { ...@@ -80,11 +80,16 @@ module.exports = merge(common, {
plugins: [ plugins: [
new CleanWebpackPlugin('../../public/build', { allowExternal: true }), new CleanWebpackPlugin('../../public/build', { allowExternal: true }),
new MiniCssExtractPlugin({ new MiniCssExtractPlugin({
filename: "grafana.[name].css" filename: "grafana.[name].[hash].css"
}),
new HtmlWebpackPlugin({
filename: path.resolve(__dirname, '../../public/views/error.html'),
template: path.resolve(__dirname, '../../public/views/error-template.html'),
inject: 'false',
}), }),
new HtmlWebpackPlugin({ new HtmlWebpackPlugin({
filename: path.resolve(__dirname, '../../public/views/index.html'), filename: path.resolve(__dirname, '../../public/views/index.html'),
template: path.resolve(__dirname, '../../public/views/index.template.html'), template: path.resolve(__dirname, '../../public/views/index-template.html'),
inject: 'body', inject: 'body',
chunks: ['manifest', 'vendor', 'app'], chunks: ['manifest', 'vendor', 'app'],
}), }),
......
...@@ -87,7 +87,7 @@ module.exports = merge(common, { ...@@ -87,7 +87,7 @@ module.exports = merge(common, {
new CleanWebpackPlugin('../public/build', { allowExternal: true }), new CleanWebpackPlugin('../public/build', { allowExternal: true }),
new HtmlWebpackPlugin({ new HtmlWebpackPlugin({
filename: path.resolve(__dirname, '../../public/views/index.html'), filename: path.resolve(__dirname, '../../public/views/index.html'),
template: path.resolve(__dirname, '../../public/views/index.template.html'), template: path.resolve(__dirname, '../../public/views/index-template.html'),
inject: 'body', inject: 'body',
alwaysWriteToDisk: true alwaysWriteToDisk: true
}), }),
......
...@@ -71,15 +71,20 @@ module.exports = merge(common, { ...@@ -71,15 +71,20 @@ module.exports = merge(common, {
plugins: [ plugins: [
new MiniCssExtractPlugin({ new MiniCssExtractPlugin({
filename: "grafana.[name].css" filename: "grafana.[name].[hash].css"
}), }),
new ngAnnotatePlugin(), new ngAnnotatePlugin(),
new HtmlWebpackPlugin({ new HtmlWebpackPlugin({
filename: path.resolve(__dirname, '../../public/views/index.html'), filename: path.resolve(__dirname, '../../public/views/index.html'),
template: path.resolve(__dirname, '../../public/views/index.template.html'), template: path.resolve(__dirname, '../../public/views/index-template.html'),
inject: 'body', inject: 'body',
chunks: ['vendor', 'app'], chunks: ['vendor', 'app'],
}), }),
new HtmlWebpackPlugin({
filename: path.resolve(__dirname, '../../public/views/error.html'),
template: path.resolve(__dirname, '../../public/views/error-template.html'),
inject: false,
}),
function () { function () {
this.hooks.done.tap('Done', function (stats) { this.hooks.done.tap('Done', function (stats) {
if (stats.compilation.errors && stats.compilation.errors.length) { if (stats.compilation.errors && stats.compilation.errors.length) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment