From 94064e9965bbb31bfe56cc60b1dc272ab9cc66d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juraci=20Paix=C3=A3o=20Kr=C3=B6hling?= Date: Mon, 21 Sep 2020 16:29:45 +0200 Subject: [PATCH 1/5] Add travis_retry to some CI jobs (#2499) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Juraci Paixão Kröhling --- .travis.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index f63f1c9a6973..c3f0bb9818b4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -68,16 +68,16 @@ script: - if [ "$TESTS" == true ]; then make test-ci ; else echo 'skipping tests'; fi - if [ "$PROTO_GEN_TEST" == true ]; then make proto && git diff --name-status --exit-code ; else echo 'skipping protoc validation'; fi - if [ "$ALL_IN_ONE" == true ]; then bash ./scripts/travis/build-all-in-one-image.sh ; else echo 'skipping all_in_one'; fi - - if [ "$CROSSDOCK" == true ]; then bash ./scripts/travis/build-crossdock.sh ; else echo 'skipping crossdock'; fi - - if [ "$CROSSDOCK_OTEL" == true ]; then make build-crossdock crossdock-otel ; else echo 'skipping OpenTelemetry crossdock'; fi + - if [ "$CROSSDOCK" == true ]; then travis_retry bash ./scripts/travis/build-crossdock.sh ; else echo 'skipping crossdock'; fi + - if [ "$CROSSDOCK_OTEL" == true ]; then travis_retry make build-crossdock crossdock-otel ; else echo 'skipping OpenTelemetry crossdock'; fi - if [ "$DOCKER" == true ]; then bash ./scripts/travis/build-docker-images.sh ; else echo 'skipping build-docker-images'; fi - if [ "$DOCKER" == true ]; then bash ./scripts/travis/upload-all-docker-images.sh ; else echo 'skipping docker upload'; fi - if [ "$DEPLOY" == true ]; then make build-all-platforms ; else echo 'skipping build-all-platforms'; fi - - if [ "$ES_INTEGRATION_TEST" == true ]; then bash ./scripts/travis/es-integration-test.sh ; else echo 'skipping elastic search integration test'; fi - - if [ "$ES_OTEL_INTEGRATION_TEST" == true ]; then bash ./scripts/travis/es-integration-test.sh ; else echo 'skipping elastic search integration test'; fi - - if [ "$KAFKA_INTEGRATION_TEST" == true ]; then bash ./scripts/travis/kafka-integration-test.sh ; else echo 'skipping kafka integration test'; fi - - if [ "$CASSANDRA_INTEGRATION_TEST" == true ]; then bash ./scripts/travis/cassandra-integration-test.sh ; else echo 'skipping cassandra integration test'; fi - - if [ "$MEM_AND_BADGER_INTEGRATION_TEST" == true ]; then make mem-and-badger-storage-integration-test ; else echo 'skipping mem and badger integration test'; fi + - if [ "$ES_INTEGRATION_TEST" == true ]; then travis_retry bash ./scripts/travis/es-integration-test.sh ; else echo 'skipping elastic search integration test'; fi + - if [ "$ES_OTEL_INTEGRATION_TEST" == true ]; then travis_retry bash ./scripts/travis/es-integration-test.sh ; else echo 'skipping elastic search integration test'; fi + - if [ "$KAFKA_INTEGRATION_TEST" == true ]; then travis_retry bash ./scripts/travis/kafka-integration-test.sh ; else echo 'skipping kafka integration test'; fi + - if [ "$CASSANDRA_INTEGRATION_TEST" == true ]; then travis_retry bash ./scripts/travis/cassandra-integration-test.sh ; else echo 'skipping cassandra integration test'; fi + - if [ "$MEM_AND_BADGER_INTEGRATION_TEST" == true ]; then travis_retry make mem-and-badger-storage-integration-test ; else echo 'skipping mem and badger integration test'; fi - if [ "$HOTROD" == true ]; then bash ./scripts/travis/hotrod-integration-test.sh ; else echo 'skipping hotrod example'; fi after_success: From 903948103b43c15921ff60c58c8590bf805b9517 Mon Sep 17 00:00:00 2001 From: Joe Elliott Date: Tue, 22 Sep 2020 04:43:40 -0400 Subject: [PATCH 2/5] OTel: Factored out Config Factory (#2495) * Factored out default config factory Signed-off-by: Joe Elliott * lint Signed-off-by: Joe Elliott --- .../app/defaultconfig/default_config.go | 45 ++++++++++++++----- .../app/defaultconfig/default_config_test.go | 8 ++-- .../zipkinreceiver/zipkin_receiver.go | 10 +++-- .../zipkinreceiver/zipkin_receiver_test.go | 3 +- cmd/opentelemetry/cmd/agent/main.go | 27 ++--------- cmd/opentelemetry/cmd/all-in-one/main.go | 33 +++----------- cmd/opentelemetry/cmd/collector/main.go | 35 +++------------ cmd/opentelemetry/cmd/ingester/main.go | 30 +++---------- 8 files changed, 66 insertions(+), 125 deletions(-) diff --git a/cmd/opentelemetry/app/defaultconfig/default_config.go b/cmd/opentelemetry/app/defaultconfig/default_config.go index d0e372cc4b81..f907de03cfb9 100644 --- a/cmd/opentelemetry/app/defaultconfig/default_config.go +++ b/cmd/opentelemetry/app/defaultconfig/default_config.go @@ -18,6 +18,7 @@ import ( "fmt" "strings" + "github.com/spf13/viper" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/config/configgrpc" "go.opentelemetry.io/collector/config/confighttp" @@ -27,6 +28,8 @@ import ( "go.opentelemetry.io/collector/processor/resourceprocessor" "go.opentelemetry.io/collector/receiver/jaegerreceiver" "go.opentelemetry.io/collector/receiver/zipkinreceiver" + "go.opentelemetry.io/collector/service" + "go.opentelemetry.io/collector/service/builder" "github.com/jaegertracing/jaeger/cmd/opentelemetry/app/exporter/badgerexporter" "github.com/jaegertracing/jaeger/cmd/opentelemetry/app/exporter/cassandraexporter" @@ -60,19 +63,40 @@ type ComponentType int // ComponentSettings struct configures generation of the default config type ComponentSettings struct { - ComponentType ComponentType - Factories component.Factories - StorageType string - ZipkinHostPort string + ComponentType ComponentType + Factories component.Factories + StorageType string } -// CreateDefaultConfig creates default configuration. -func (c ComponentSettings) CreateDefaultConfig() (*configmodels.Config, error) { +// DefaultConfigFactory returns a service.ConfigFactory that merges jaeger and otel configs +func (c *ComponentSettings) DefaultConfigFactory(jaegerViper *viper.Viper) service.ConfigFactory { + return func(otelViper *viper.Viper, f component.Factories) (*configmodels.Config, error) { + cfg, err := c.createDefaultConfig() + if err != nil { + return nil, err + } + if len(builder.GetConfigFile()) > 0 { + otelCfg, err := service.FileLoaderConfigFactory(otelViper, f) + if err != nil { + return nil, err + } + err = MergeConfigs(cfg, otelCfg) + if err != nil { + return nil, err + } + } + + return cfg, nil + } +} + +// createDefaultConfig creates default configuration. +func (c ComponentSettings) createDefaultConfig() (*configmodels.Config, error) { exporters, err := createExporters(c.ComponentType, c.StorageType, c.Factories) if err != nil { return nil, err } - receivers := createReceivers(c.ComponentType, c.ZipkinHostPort, c.Factories) + receivers := createReceivers(c.ComponentType, c.Factories) processors, processorNames := createProcessors(c.Factories) hc := c.Factories.Extensions["health_check"].CreateDefaultConfig() return &configmodels.Config{ @@ -109,7 +133,7 @@ func createProcessors(factories component.Factories) (configmodels.Processors, [ return processors, names } -func createReceivers(component ComponentType, zipkinHostPort string, factories component.Factories) configmodels.Receivers { +func createReceivers(component ComponentType, factories component.Factories) configmodels.Receivers { if component == Ingester { kafkaReceiver := factories.Receivers[kafkareceiver.TypeStr].CreateDefaultConfig().(*kafkareceiver.Config) return configmodels.Receivers{ @@ -139,9 +163,8 @@ func createReceivers(component ComponentType, zipkinHostPort string, factories c "jaeger": jaeger, "otlp": factories.Receivers["otlp"].CreateDefaultConfig(), } - if zipkinHostPort != "" && zipkinHostPort != ports.PortToHostPort(0) { - zipkin := factories.Receivers["zipkin"].CreateDefaultConfig().(*zipkinreceiver.Config) - zipkin.Endpoint = zipkinHostPort + zipkin := factories.Receivers["zipkin"].CreateDefaultConfig().(*zipkinreceiver.Config) + if zipkin.Endpoint != "" && zipkin.Endpoint != ports.PortToHostPort(0) { recvs["zipkin"] = zipkin } return recvs diff --git a/cmd/opentelemetry/app/defaultconfig/default_config_test.go b/cmd/opentelemetry/app/defaultconfig/default_config_test.go index bff1c7ebae9f..888da5c3e664 100644 --- a/cmd/opentelemetry/app/defaultconfig/default_config_test.go +++ b/cmd/opentelemetry/app/defaultconfig/default_config_test.go @@ -112,10 +112,10 @@ func TestService(t *testing.T) { }, }, { + viperConfig: map[string]interface{}{"collector.zipkin.host-port": "localhost:9411"}, cfg: ComponentSettings{ - ComponentType: AllInOne, - StorageType: "elasticsearch", - ZipkinHostPort: "localhost:9411", + ComponentType: AllInOne, + StorageType: "elasticsearch", }, service: configmodels.Service{ Extensions: []string{"health_check"}, @@ -145,7 +145,7 @@ func TestService(t *testing.T) { } factories := defaultcomponents.Components(v) test.cfg.Factories = factories - cfg, err := test.cfg.CreateDefaultConfig() + cfg, err := test.cfg.createDefaultConfig() if test.err != "" { require.Nil(t, cfg) assert.Contains(t, err.Error(), test.err) diff --git a/cmd/opentelemetry/app/receiver/zipkinreceiver/zipkin_receiver.go b/cmd/opentelemetry/app/receiver/zipkinreceiver/zipkin_receiver.go index 0e4149feeb6b..2dc852f6fe26 100644 --- a/cmd/opentelemetry/app/receiver/zipkinreceiver/zipkin_receiver.go +++ b/cmd/opentelemetry/app/receiver/zipkinreceiver/zipkin_receiver.go @@ -45,9 +45,13 @@ func (f Factory) Type() configmodels.Type { // This function implements OTEL component.ReceiverFactoryBase interface. func (f Factory) CreateDefaultConfig() configmodels.Receiver { cfg := f.Wrapped.CreateDefaultConfig().(*zipkinreceiver.Config) - if f.Viper.IsSet(collectorApp.CollectorZipkinHTTPHostPort) { - cfg.Endpoint = f.Viper.GetString(collectorApp.CollectorZipkinHTTPHostPort) - } + + // using the CollectorOptions to parse the zipkin host port b/c it has special processing + // for combining the port and host:port zipkin flags + collectorOpts := &collectorApp.CollectorOptions{} + collectorOpts.InitFromViper(f.Viper) + cfg.Endpoint = collectorOpts.CollectorZipkinHTTPHostPort + return cfg } diff --git a/cmd/opentelemetry/app/receiver/zipkinreceiver/zipkin_receiver_test.go b/cmd/opentelemetry/app/receiver/zipkinreceiver/zipkin_receiver_test.go index 9356108cffc6..52a11b086bb7 100644 --- a/cmd/opentelemetry/app/receiver/zipkinreceiver/zipkin_receiver_test.go +++ b/cmd/opentelemetry/app/receiver/zipkinreceiver/zipkin_receiver_test.go @@ -29,6 +29,7 @@ import ( "go.opentelemetry.io/collector/receiver/zipkinreceiver" jConfig "github.com/jaegertracing/jaeger/pkg/config" + "github.com/jaegertracing/jaeger/ports" ) func TestDefaultValues(t *testing.T) { @@ -38,7 +39,7 @@ func TestDefaultValues(t *testing.T) { factory := &Factory{Viper: v, Wrapped: zipkinreceiver.NewFactory()} cfg := factory.CreateDefaultConfig().(*zipkinreceiver.Config) - assert.Equal(t, "0.0.0.0:9411", cfg.Endpoint) + assert.Equal(t, ports.PortToHostPort(0), cfg.Endpoint) } func TestLoadConfigAndFlags(t *testing.T) { diff --git a/cmd/opentelemetry/cmd/agent/main.go b/cmd/opentelemetry/cmd/agent/main.go index 1e78f2823937..4b015acdc385 100644 --- a/cmd/opentelemetry/cmd/agent/main.go +++ b/cmd/opentelemetry/cmd/agent/main.go @@ -21,9 +21,7 @@ import ( "github.com/spf13/viper" "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/config/configmodels" "go.opentelemetry.io/collector/service" - "go.opentelemetry.io/collector/service/builder" jflags "github.com/jaegertracing/jaeger/cmd/flags" "github.com/jaegertracing/jaeger/cmd/opentelemetry/app" @@ -55,32 +53,15 @@ func main() { v := viper.New() cmpts := defaultcomponents.Components(v) - cfgFactory := func(otelViper *viper.Viper, f component.Factories) (*configmodels.Config, error) { - cfgConfig := defaultconfig.ComponentSettings{ - ComponentType: defaultconfig.Agent, - Factories: cmpts, - } - cfg, err := cfgConfig.CreateDefaultConfig() - if err != nil { - return nil, err - } - if len(builder.GetConfigFile()) > 0 { - otelCfg, err := service.FileLoaderConfigFactory(otelViper, f) - if err != nil { - return nil, err - } - err = defaultconfig.MergeConfigs(cfg, otelCfg) - if err != nil { - return nil, err - } - } - return cfg, nil + cfgConfig := defaultconfig.ComponentSettings{ + ComponentType: defaultconfig.Agent, + Factories: cmpts, } svc, err := service.New(service.Parameters{ ApplicationStartInfo: info, Factories: cmpts, - ConfigFactory: cfgFactory, + ConfigFactory: cfgConfig.DefaultConfigFactory(v), }) handleErr(err) diff --git a/cmd/opentelemetry/cmd/all-in-one/main.go b/cmd/opentelemetry/cmd/all-in-one/main.go index 69f715d0df09..c5b45451eb0a 100644 --- a/cmd/opentelemetry/cmd/all-in-one/main.go +++ b/cmd/opentelemetry/cmd/all-in-one/main.go @@ -29,10 +29,8 @@ import ( "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/config/configmodels" "go.opentelemetry.io/collector/service" - "go.opentelemetry.io/collector/service/builder" "go.uber.org/zap" - collectorApp "github.com/jaegertracing/jaeger/cmd/collector/app" jflags "github.com/jaegertracing/jaeger/cmd/flags" "github.com/jaegertracing/jaeger/cmd/opentelemetry/app" "github.com/jaegertracing/jaeger/cmd/opentelemetry/app/defaultcomponents" @@ -80,37 +78,16 @@ func main() { } cmpts := defaultcomponents.Components(v) - cfgFactory := func(otelViper *viper.Viper, f component.Factories) (*configmodels.Config, error) { - collectorOpts := &collectorApp.CollectorOptions{} - collectorOpts.InitFromViper(v) - cfgOpts := defaultconfig.ComponentSettings{ - ComponentType: defaultconfig.AllInOne, - Factories: cmpts, - StorageType: storageType, - ZipkinHostPort: collectorOpts.CollectorZipkinHTTPHostPort, - } - cfg, err := cfgOpts.CreateDefaultConfig() - if err != nil { - return nil, err - } - - if len(builder.GetConfigFile()) > 0 { - otelCfg, err := service.FileLoaderConfigFactory(otelViper, f) - if err != nil { - return nil, err - } - err = defaultconfig.MergeConfigs(cfg, otelCfg) - if err != nil { - return nil, err - } - } - return cfg, nil + cfgConfig := defaultconfig.ComponentSettings{ + ComponentType: defaultconfig.AllInOne, + Factories: cmpts, + StorageType: storageType, } svc, err := service.New(service.Parameters{ ApplicationStartInfo: info, Factories: cmpts, - ConfigFactory: cfgFactory, + ConfigFactory: cfgConfig.DefaultConfigFactory(v), }) handleErr(err) diff --git a/cmd/opentelemetry/cmd/collector/main.go b/cmd/opentelemetry/cmd/collector/main.go index 61597a8ed43d..870f22bb1695 100644 --- a/cmd/opentelemetry/cmd/collector/main.go +++ b/cmd/opentelemetry/cmd/collector/main.go @@ -21,11 +21,8 @@ import ( "github.com/spf13/viper" "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/config/configmodels" "go.opentelemetry.io/collector/service" - "go.opentelemetry.io/collector/service/builder" - collectorApp "github.com/jaegertracing/jaeger/cmd/collector/app" jflags "github.com/jaegertracing/jaeger/cmd/flags" "github.com/jaegertracing/jaeger/cmd/opentelemetry/app" "github.com/jaegertracing/jaeger/cmd/opentelemetry/app/defaultcomponents" @@ -59,39 +56,17 @@ func main() { if storageType == "" { storageType = "cassandra" } - cmpts := defaultcomponents.Components(v) - cfgFactory := func(otelViper *viper.Viper, f component.Factories) (*configmodels.Config, error) { - collectorOpts := &collectorApp.CollectorOptions{} - collectorOpts.InitFromViper(v) - cfgConfig := defaultconfig.ComponentSettings{ - ComponentType: defaultconfig.Collector, - Factories: cmpts, - StorageType: storageType, - ZipkinHostPort: collectorOpts.CollectorZipkinHTTPHostPort, - } - cfg, err := cfgConfig.CreateDefaultConfig() - if err != nil { - return nil, err - } - - if len(builder.GetConfigFile()) > 0 { - otelCfg, err := service.FileLoaderConfigFactory(otelViper, f) - if err != nil { - return nil, err - } - err = defaultconfig.MergeConfigs(cfg, otelCfg) - if err != nil { - return nil, err - } - } - return cfg, nil + cfgConfig := defaultconfig.ComponentSettings{ + ComponentType: defaultconfig.Collector, + Factories: cmpts, + StorageType: storageType, } svc, err := service.New(service.Parameters{ ApplicationStartInfo: info, Factories: cmpts, - ConfigFactory: cfgFactory, + ConfigFactory: cfgConfig.DefaultConfigFactory(v), }) handleErr(err) diff --git a/cmd/opentelemetry/cmd/ingester/main.go b/cmd/opentelemetry/cmd/ingester/main.go index 2dadc22e184f..95a748d1f9ea 100644 --- a/cmd/opentelemetry/cmd/ingester/main.go +++ b/cmd/opentelemetry/cmd/ingester/main.go @@ -21,9 +21,7 @@ import ( "github.com/spf13/viper" "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/config/configmodels" "go.opentelemetry.io/collector/service" - "go.opentelemetry.io/collector/service/builder" jflags "github.com/jaegertracing/jaeger/cmd/flags" "github.com/jaegertracing/jaeger/cmd/opentelemetry/app" @@ -60,35 +58,17 @@ func main() { if storageType == "" { storageType = "cassandra" } - cmpts := defaultcomponents.Components(v) - cfgFactory := func(otelViper *viper.Viper, f component.Factories) (*configmodels.Config, error) { - cfgConfig := defaultconfig.ComponentSettings{ - ComponentType: defaultconfig.Ingester, - Factories: cmpts, - StorageType: storageType, - } - cfg, err := cfgConfig.CreateDefaultConfig() - if err != nil { - return nil, err - } - if len(builder.GetConfigFile()) > 0 { - otelCfg, err := service.FileLoaderConfigFactory(otelViper, f) - if err != nil { - return nil, err - } - err = defaultconfig.MergeConfigs(cfg, otelCfg) - if err != nil { - return nil, err - } - } - return cfg, nil + cfgConfig := defaultconfig.ComponentSettings{ + ComponentType: defaultconfig.Ingester, + Factories: cmpts, + StorageType: storageType, } svc, err := service.New(service.Parameters{ ApplicationStartInfo: info, Factories: cmpts, - ConfigFactory: cfgFactory, + ConfigFactory: cfgConfig.DefaultConfigFactory(v), }) handleErr(err) From 2e1b869509a14e32548eb803c4c5cf8c8073dc64 Mon Sep 17 00:00:00 2001 From: Pavol Loffay Date: Tue, 22 Sep 2020 12:23:09 +0200 Subject: [PATCH 3/5] Fix ES OTEL status code (#2501) Signed-off-by: Pavol Loffay --- .../elasticsearchexporter/esmodeltranslator/modeltranslator.go | 3 +-- .../esmodeltranslator/modeltranslator_test.go | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/cmd/opentelemetry/app/exporter/elasticsearchexporter/esmodeltranslator/modeltranslator.go b/cmd/opentelemetry/app/exporter/elasticsearchexporter/esmodeltranslator/modeltranslator.go index c6c5b4a7c322..06110e5ecde6 100644 --- a/cmd/opentelemetry/app/exporter/elasticsearchexporter/esmodeltranslator/modeltranslator.go +++ b/cmd/opentelemetry/app/exporter/elasticsearchexporter/esmodeltranslator/modeltranslator.go @@ -367,8 +367,7 @@ func getTagFromSpanKind(spanKind pdata.SpanKind) (dbmodel.KeyValue, bool) { func getTagFromStatusCode(statusCode pdata.StatusCode) (dbmodel.KeyValue, bool) { return dbmodel.KeyValue{ - Key: tracetranslator.TagStatusCode, - // TODO is this ok? + Key: tracetranslator.TagStatusCode, Value: statusCode.String(), Type: dbmodel.StringType, }, true diff --git a/cmd/opentelemetry/app/exporter/elasticsearchexporter/esmodeltranslator/modeltranslator_test.go b/cmd/opentelemetry/app/exporter/elasticsearchexporter/esmodeltranslator/modeltranslator_test.go index d7cd5f0ae771..d2405d95eab9 100644 --- a/cmd/opentelemetry/app/exporter/elasticsearchexporter/esmodeltranslator/modeltranslator_test.go +++ b/cmd/opentelemetry/app/exporter/elasticsearchexporter/esmodeltranslator/modeltranslator_test.go @@ -151,7 +151,7 @@ func TestConvertSpan(t *testing.T) { StartTimeMillis: 1, Tags: []dbmodel.KeyValue{ {Key: "span.kind", Type: dbmodel.StringType, Value: "client"}, - {Key: "status.code", Type: dbmodel.StringType, Value: "Cancelled"}, + {Key: "status.code", Type: dbmodel.StringType, Value: "STATUS_CODE_CANCELLED"}, {Key: "error", Type: dbmodel.BoolType, Value: "true"}, {Key: "status.message", Type: dbmodel.StringType, Value: "messagetext"}, {Key: "foo", Type: dbmodel.BoolType, Value: "true"}, From 2d463c58f2e3e55e83f517e4f93e7a149c51b41b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juraci=20Paix=C3=A3o=20Kr=C3=B6hling?= Date: Tue, 22 Sep 2020 14:21:05 +0200 Subject: [PATCH 4/5] Add SECURITY.md (#2500) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Juraci Paixão Kröhling --- SECURITY.md | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 SECURITY.md diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 000000000000..af9f24dead2f --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,98 @@ +# Security Policy + +## Supported Versions + +The Jaeger project provides community support only for last minor version: bug fixes are released eiter as part of the next minor version or as an on-demand patch version. Independent of which version is next, all patch versions are cumulative, meaning that they represent the state of our `master` branch at the moment of the release. For instance, if the latest version is 1.19.0, bug fixes are released either as part of 1.20.0 or 1.19.1. + +Security fixes are given priority and might be enough to cause a new version to be released. + +## Reporting a Vulnerability + +_The following is a copy of the [Report a security issue](https://www.jaegertracing.io/report-security-issue/) page from our website. The website's version has precedence in case of conflicts._ + +If you find something suspicious and want to report it, we'd really appreciate! + +### Ways to report + +* It is preferable to always encrypt your message, no matter the channel you choose to report the issue +* Contact us on our open chat room on [Gitter][gitter-room] +* If you can't use Gitter, send a message to [jaeger-tracing@googlegroups.com][mailing-list] +* If you can't use Gitter nor send an email, open a merge request on GitHub: fork the affected repository and send us a pull request. We really prefer if you'd talk to us before, though, as our repositories are public and we would like to give a heads up to our users before disclosing it publicly + +### Our PGP key + +No matter what channel you choose to communicate with us, we would prefer you to encrypt your message using our [published key][published-key], available in all major key servers and which should match the one shown below. If you are new to PGP, you can run the following command to encrypt a file called "message.txt": + +1. Receive our keys from the key server: + + `gpg --keyserver pool.sks-keyservers.net --recv-keys C043A4D2B3F2AC31` + +1. Encrypt a "message.txt" file into "message.txt.asc": + + `gpg -ea -r C043A4D2B3F2AC31 message.txt` + +1. Send us the resulting "message.txt.asc" + +**Our published key should match this one:** + +``` +-----BEGIN PGP PUBLIC KEY BLOCK----- +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 +oF+qZY4uEvqFvYo8 +=KQzT +-----END PGP PUBLIC KEY BLOCK----- +``` + +[published-key]: http://pool.sks-keyservers.net/pks/lookup?op=get&search=0xC043A4D2B3F2AC31 +[mailing-list]: https://groups.google.com/forum/#!forum/jaeger-tracing +[gitter-room]: https://gitter.im/jaegertracing/Lobby + +## Securing a Jaeger installation + +If you are looking to secure your Jaeger installation, check out our documentation on the topic: [Securing Jaeger Installation](https://www.jaegertracing.io/docs/latest/security/). \ No newline at end of file From 87799eac46afdffd4f886c388c273ceaa03808f5 Mon Sep 17 00:00:00 2001 From: Howie Date: Tue, 22 Sep 2020 21:48:16 +0800 Subject: [PATCH 5/5] Chore: fix typo in security readme (#2502) Signed-off-by: lihaowei --- SECURITY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SECURITY.md b/SECURITY.md index af9f24dead2f..ae7851ce819f 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -2,7 +2,7 @@ ## Supported Versions -The Jaeger project provides community support only for last minor version: bug fixes are released eiter as part of the next minor version or as an on-demand patch version. Independent of which version is next, all patch versions are cumulative, meaning that they represent the state of our `master` branch at the moment of the release. For instance, if the latest version is 1.19.0, bug fixes are released either as part of 1.20.0 or 1.19.1. +The Jaeger project provides community support only for last minor version: bug fixes are released either as part of the next minor version or as an on-demand patch version. Independent of which version is next, all patch versions are cumulative, meaning that they represent the state of our `master` branch at the moment of the release. For instance, if the latest version is 1.19.0, bug fixes are released either as part of 1.20.0 or 1.19.1. Security fixes are given priority and might be enough to cause a new version to be released.