From 4028cb2fc433d0587752ff8d0fa8b5fcb7dfe09f Mon Sep 17 00:00:00 2001 From: Jerop Date: Fri, 18 Feb 2022 16:40:18 -0500 Subject: [PATCH] TEP-0090: Matrix - API Change and Feature Flag [TEP-0090][tep-0090] proposed executing a `PipelineTask` in parallel `TaskRuns` and `Runs` with substitutions from combinations of `Parameters` in a `Matrix`. In this change, we add the `matrix` field to the `PipelineTask` specification, which takes a list of `Parameters`. We gate this field behind the `alpha` feature gate. We add validation and testing that the field is available in `alpha` only - we will add further validation in upcoming changes. We also add documentation the API change - we will incrementally add further details as we iterate on the implementation of [TEP-0090: Matrix][tep-0090]. [tep-0090]: https://github.com/tektoncd/community/blob/main/teps/0090-matrix.md --- docs/install.md | 27 +++--- docs/matrix.md | 21 ++++ docs/pipelines.md | 97 +++++++++++++++++++ .../pipeline/v1beta1/openapi_generated.go | 14 +++ pkg/apis/pipeline/v1beta1/pipeline_types.go | 14 +++ .../pipeline/v1beta1/pipeline_validation.go | 9 ++ .../v1beta1/pipeline_validation_test.go | 67 +++++++++++++ pkg/apis/pipeline/v1beta1/swagger.json | 8 ++ .../pipeline/v1beta1/zz_generated.deepcopy.go | 7 ++ third_party/LICENSE | 27 ------ .../vendor/golang.org/x/crypto/LICENSE | 27 ------ third_party/vendor/golang.org/x/net/LICENSE | 27 ------ .../vendor/golang.org/x/sys/cpu/LICENSE | 27 ------ third_party/vendor/golang.org/x/text/LICENSE | 27 ------ 14 files changed, 251 insertions(+), 148 deletions(-) create mode 100644 docs/matrix.md delete mode 100644 third_party/LICENSE delete mode 100644 third_party/vendor/golang.org/x/crypto/LICENSE delete mode 100644 third_party/vendor/golang.org/x/net/LICENSE delete mode 100644 third_party/vendor/golang.org/x/sys/cpu/LICENSE delete mode 100644 third_party/vendor/golang.org/x/text/LICENSE diff --git a/docs/install.md b/docs/install.md index 9828bfeedd9..01d2fdac93c 100644 --- a/docs/install.md +++ b/docs/install.md @@ -392,19 +392,20 @@ the `feature-flags` ConfigMap alongside your Tekton Pipelines deployment. Features currently in "alpha" are: -| Feature | TEP | Release | Individual Flag | -|:------------------------------------------------------------------------------------------------------|:----------------------------------------------------------------------------------------------------------- |:-------------------------------------------------------------------- |:--------------------------- | -| [Bundles ](./pipelineruns.md#tekton-bundles) | [TEP-0005](https://github.com/tektoncd/community/blob/main/teps/0005-tekton-oci-bundles.md) | [v0.18.0](https://github.com/tektoncd/pipeline/releases/tag/v0.18.0) | `enable-tekton-oci-bundles` | -| [`Runs` and `Custom Tasks`](./runs.md) | [TEP-0002](https://github.com/tektoncd/community/blob/main/teps/0002-custom-tasks.md) | [v0.19.0](https://github.com/tektoncd/pipeline/releases/tag/v0.19.0) | `enable-custom-tasks` | -| [Isolated `Step` & `Sidecar` `Workspaces`](./workspaces.md#isolated-workspaces) | [TEP-0029](https://github.com/tektoncd/community/blob/main/teps/0029-step-workspaces.md) | [v0.24.0](https://github.com/tektoncd/pipeline/releases/tag/v0.24.0) | | -| [Hermetic Execution Mode](./hermetic.md) | [TEP-0025](https://github.com/tektoncd/community/blob/main/teps/0025-hermekton.md) | [v0.25.0](https://github.com/tektoncd/pipeline/releases/tag/v0.25.0) | | -| [Graceful Termination](./pipelineruns.md#gracefully-cancelling-a-pipelinerun) | [TEP-0058](https://github.com/tektoncd/community/blob/main/teps/0058-graceful-pipeline-run-termination.md) | [v0.25.0](https://github.com/tektoncd/pipeline/releases/tag/v0.25.0) | | -| [`PipelineRun` Timeouts](./pipelineruns.md#configuring-a-failure-timeout) | [TEP-0046](https://github.com/tektoncd/community/blob/main/teps/0046-finallytask-execution-post-timeout.md) | [v0.25.0](https://github.com/tektoncd/pipeline/releases/tag/v0.25.0) | | -| [Implicit `Parameters`](./taskruns.md#implicit-parameters) | [TEP-0023](https://github.com/tektoncd/community/blob/main/teps/0023-implicit-mapping.md) | [v0.28.0](https://github.com/tektoncd/pipeline/releases/tag/v0.28.0) | | -| [Windows Scripts](./tasks.md#windows-scripts) | [TEP-0057](https://github.com/tektoncd/community/blob/main/teps/0057-windows-support.md) | [v0.28.0](https://github.com/tektoncd/pipeline/releases/tag/v0.28.0) | | -| [Remote Tasks](./taskruns.md#remote-tasks) and [Remote Pipelines](./pipelineruns.md#remote-pipelines) | [TEP-0060](https://github.com/tektoncd/community/blob/main/teps/0060-remote-resolutiond.md) | | | -| [Debug](./debug.md) | [TEP-0042](https://github.com/tektoncd/community/blob/main/teps/0042-taskrun-breakpoint-on-failure.md) | [v0.26.0](https://github.com/tektoncd/pipeline/releases/tag/v0.26.0) | | -| [Step and Sidecar Overrides](./taskruns.md#overriding-task-steps-and-sidecars)| [TEP-0094](https://github.com/tektoncd/community/blob/main/teps/0094-specifying-resource-requirements-at-runtime.md) | | | +| Feature | TEP | Release | Individual Flag | +|:------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------|:----------------------------| +| [Bundles ](./pipelineruns.md#tekton-bundles) | [TEP-0005](https://github.com/tektoncd/community/blob/main/teps/0005-tekton-oci-bundles.md) | [v0.18.0](https://github.com/tektoncd/pipeline/releases/tag/v0.18.0) | `enable-tekton-oci-bundles` | +| [`Runs` and `Custom Tasks`](./runs.md) | [TEP-0002](https://github.com/tektoncd/community/blob/main/teps/0002-custom-tasks.md) | [v0.19.0](https://github.com/tektoncd/pipeline/releases/tag/v0.19.0) | `enable-custom-tasks` | +| [Isolated `Step` & `Sidecar` `Workspaces`](./workspaces.md#isolated-workspaces) | [TEP-0029](https://github.com/tektoncd/community/blob/main/teps/0029-step-workspaces.md) | [v0.24.0](https://github.com/tektoncd/pipeline/releases/tag/v0.24.0) | | +| [Hermetic Execution Mode](./hermetic.md) | [TEP-0025](https://github.com/tektoncd/community/blob/main/teps/0025-hermekton.md) | [v0.25.0](https://github.com/tektoncd/pipeline/releases/tag/v0.25.0) | | +| [Graceful Termination](./pipelineruns.md#gracefully-cancelling-a-pipelinerun) | [TEP-0058](https://github.com/tektoncd/community/blob/main/teps/0058-graceful-pipeline-run-termination.md) | [v0.25.0](https://github.com/tektoncd/pipeline/releases/tag/v0.25.0) | | +| [`PipelineRun` Timeouts](./pipelineruns.md#configuring-a-failure-timeout) | [TEP-0046](https://github.com/tektoncd/community/blob/main/teps/0046-finallytask-execution-post-timeout.md) | [v0.25.0](https://github.com/tektoncd/pipeline/releases/tag/v0.25.0) | | +| [Implicit `Parameters`](./taskruns.md#implicit-parameters) | [TEP-0023](https://github.com/tektoncd/community/blob/main/teps/0023-implicit-mapping.md) | [v0.28.0](https://github.com/tektoncd/pipeline/releases/tag/v0.28.0) | | +| [Windows Scripts](./tasks.md#windows-scripts) | [TEP-0057](https://github.com/tektoncd/community/blob/main/teps/0057-windows-support.md) | [v0.28.0](https://github.com/tektoncd/pipeline/releases/tag/v0.28.0) | | +| [Remote Tasks](./taskruns.md#remote-tasks) and [Remote Pipelines](./pipelineruns.md#remote-pipelines) | [TEP-0060](https://github.com/tektoncd/community/blob/main/teps/0060-remote-resolutiond.md) | | | +| [Debug](./debug.md) | [TEP-0042](https://github.com/tektoncd/community/blob/main/teps/0042-taskrun-breakpoint-on-failure.md) | [v0.26.0](https://github.com/tektoncd/pipeline/releases/tag/v0.26.0) | | +| [Step and Sidecar Overrides](./taskruns.md#overriding-task-steps-and-sidecars) | [TEP-0094](https://github.com/tektoncd/community/blob/main/teps/0094-specifying-resource-requirements-at-runtime.md) | | | +| [Matrix](./matrix.md) | [TEP-0090](https://github.com/tektoncd/community/blob/main/teps/0090-matrix.md) | | | ## Configuring High Availability diff --git a/docs/matrix.md b/docs/matrix.md new file mode 100644 index 00000000000..8f75b8b8554 --- /dev/null +++ b/docs/matrix.md @@ -0,0 +1,21 @@ + + +# Matrix + +- [Overview](#overview) + +## Overview + +`Matrix` is used to fan out `Tasks` in a `Pipeline`. This doc will explain the details of `matrix` support in +Tekton. + +> :seedling: **`Matrix` is an [alpha](install.md#alpha-features) feature.** +> The `enable-api-fields` feature flag must be set to `"alpha"` to specify `Matrix` in a `PipelineTask`. +> +> :warning: This feature is in a preview mode. +> It is still in a very early stage of development and is not yet fully functional. \ No newline at end of file diff --git a/docs/pipelines.md b/docs/pipelines.md index 7e98d32aec8..2c76aa6c287 100644 --- a/docs/pipelines.md +++ b/docs/pipelines.md @@ -14,6 +14,7 @@ weight: 400 - [Adding `Tasks` to the `Pipeline`](#adding-tasks-to-the-pipeline) - [Specifying `Resources` in `PipelineTasks`](#specifying-resources-in-pipelinetasks) - [Specifying `Parameters` in `PipelineTasks`](#specifying-parameters-in-pipelinetasks) + - [Specifying `Matrix` in `PipelineTasks`](#specifying-matrix-in-pipelinetasks) - [Specifying `Workspaces` in `PipelineTasks`](#specifying-workspaces-in-pipelinetasks) - [Tekton Bundles](#tekton-bundles) - [Using the `from` field](#using-the-from-field) @@ -36,6 +37,7 @@ weight: 400 - [Adding `Finally` to the `Pipeline`](#adding-finally-to-the-pipeline) - [Specifying `Workspaces` in `finally` tasks](#specifying-workspaces-in-finally-tasks) - [Specifying `Parameters` in `finally` tasks](#specifying-parameters-in-finally-tasks) + - [Specifying `matrix` in `finally` tasks](#specifying-matrix-in-finally-tasks) - [Consuming `Task` execution results in `finally`](#consuming-task-execution-results-in-finally) - [`PipelineRun` Status with `finally`](#pipelinerun-status-with-finally) - [Using Execution `Status` of `pipelineTask`](#using-execution-status-of-pipelinetask) @@ -54,6 +56,7 @@ weight: 400 - [Specifying the target Custom Task](#specifying-the-target-custom-task) - [Specifying a Custom Task Spec in-line (or embedded)](#specifying-a-custom-task-spec-in-line-or-embedded) - [Specifying parameters](#specifying-parameters-1) + - [Specifying matrix](#specifying-matrix) - [Specifying workspaces](#specifying-workspaces-1) - [Using `Results`](#using-results-1) - [Limitations](#limitations) @@ -104,6 +107,8 @@ A `Pipeline` definition supports the following fields: - [`timeout`](#configuring-the-failure-timeout) - Specifies the timeout before a `Task` fails. - [`params`](#specifying-parameters-in-pipelinetasks) - Specifies the `Parameters` that a `Task` requires. - [`workspaces`](#specifying-workspaces-in-pipelinetasks) - Specifies the `Workspaces` that a `Task` requires. + - [`matrix`](#specifying-matrix-in-pipelinetasks) - Specifies the `Parameters` used to fan out a `Task` into + multiple `TaskRuns` or `Runs`. - [`results`](#emitting-results-from-a-pipeline) - Specifies the location to which the `Pipeline` emits its execution results. - [`description`](#adding-a-description) - Holds an informative description of the `Pipeline` object. @@ -119,6 +124,8 @@ A `Pipeline` definition supports the following fields: - [`timeout`](#configuring-the-failure-timeout) - Specifies the timeout before a `Task` fails. - [`params`](#specifying-parameters-in-finally-tasks) - Specifies the `Parameters` that a `Task` requires. - [`workspaces`](#specifying-workspaces-in-finally-tasks) - Specifies the `Workspaces` that a `Task` requires. + - [`matrix`](#specifying-matrix-in-finally-tasks) - Specifies the `Parameters` used to fan out a `Task` into + multiple `TaskRuns` or `Runs`. [kubernetes-overview]: https://kubernetes.io/docs/concepts/overview/working-with-objects/kubernetes-objects/#required-fields @@ -308,6 +315,32 @@ spec: value: /workspace/examples/microservices/leeroy-web ``` +### Specifying `Matrix` in `PipelineTasks` + +> :seedling: **`Matrix` is an [alpha](install.md#alpha-features) feature.** +> The `enable-api-fields` feature flag must be set to `"alpha"` to specify `Matrix` in a `PipelineTask`. +> +> :warning: This feature is in a preview mode. +> It is still in a very early stage of development and is not yet fully functional. + +You can also provide [`Parameters`](tasks.md#specifying-parameters) through the `matrix` field: + +```yaml +spec: + tasks: + - name: browser-test + taskRef: + name: browser-test + matrix: + - name: browser + value: + - chrome + - safari + - firefox +``` + +For further information, read [`Matrix`](./matrix.md). + ### Specifying `Workspaces` in `PipelineTasks` You can also provide [`Workspaces`](tasks.md#specifying-workspaces): @@ -1186,6 +1219,39 @@ spec: value: "someURL" ``` +### Specifying `matrix` in `finally` tasks + +> :seedling: **`Matrix` is an [alpha](install.md#alpha-features) feature.** +> The `enable-api-fields` feature flag must be set to `"alpha"` to specify `Matrix` in a `PipelineTask`. +> +> :warning: This feature is in a preview mode. +> It is still in a very early stage of development and is not yet fully functional. + +Similar to `tasks`, you can also provide [`Parameters`](tasks.md#specifying-parameters) through `matrix` +in `finally` tasks: + +```yaml +spec: + tasks: + - name: tests + taskRef: + name: integration-test + finally: + - name: report-results + taskRef: + name: report-results + params: + - name: url + value: "someURL" + matrix: + - name: slack-channel + value: + - "foo" + - "bar" +``` + +For further information, read [`Matrix`](./matrix.md). + ### Consuming `Task` execution results in `finally` `finally` tasks can be configured to consume `Results` of `PipelineTask` from the `tasks` section: @@ -1602,6 +1668,37 @@ spec: value: bah ``` +### Specifying matrix + +> :seedling: **`Matrix` is an [alpha](install.md#alpha-features) feature.** +> The `enable-api-fields` feature flag must be set to `"alpha"` to specify `Matrix` in a `PipelineTask`. +> +> :warning: This feature is in a preview mode. +> It is still in a very early stage of development and is not yet fully functional. + +If a custom task supports [`parameters`](tasks.md#specifying-parameters), you can use the +`matrix` field to specify their values, if you want to fan: + +```yaml +spec: + tasks: + - name: run-custom-task + taskRef: + apiVersion: example.dev/v1alpha1 + kind: Example + name: myexample + params: + - name: foo + value: bah + matrix: + - name: bar + value: + - qux + - thud +``` + +For further information, read [`Matrix`](./matrix.md). + ### Specifying workspaces If the custom task supports it, you can provide [`Workspaces`](workspaces.md#using-workspaces-in-tasks) to share data with the custom task. diff --git a/pkg/apis/pipeline/v1beta1/openapi_generated.go b/pkg/apis/pipeline/v1beta1/openapi_generated.go index 5fd67185b6c..529e69d5dec 100644 --- a/pkg/apis/pipeline/v1beta1/openapi_generated.go +++ b/pkg/apis/pipeline/v1beta1/openapi_generated.go @@ -2063,6 +2063,20 @@ func schema_pkg_apis_pipeline_v1beta1_PipelineTask(ref common.ReferenceCallback) }, }, }, + "matrix": { + SchemaProps: spec.SchemaProps{ + Description: "Matrix declares parameters used to fan out this task.", + Type: []string{"array"}, + Items: &spec.SchemaOrArray{ + Schema: &spec.Schema{ + SchemaProps: spec.SchemaProps{ + Default: map[string]interface{}{}, + Ref: ref("github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1.Param"), + }, + }, + }, + }, + }, "workspaces": { SchemaProps: spec.SchemaProps{ Description: "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", diff --git a/pkg/apis/pipeline/v1beta1/pipeline_types.go b/pkg/apis/pipeline/v1beta1/pipeline_types.go index 0cf45970743..c2b7ef70cf8 100644 --- a/pkg/apis/pipeline/v1beta1/pipeline_types.go +++ b/pkg/apis/pipeline/v1beta1/pipeline_types.go @@ -188,10 +188,15 @@ type PipelineTask struct { // outputs. // +optional Resources *PipelineTaskResources `json:"resources,omitempty"` + // Parameters declares parameters passed to this task. // +optional Params []Param `json:"params,omitempty"` + // Matrix declares parameters used to fan out this task. + // +optional + Matrix []Param `json:"matrix,omitempty"` + // Workspaces maps workspaces from the pipeline spec to the workspaces // declared in the Task. // +optional @@ -282,6 +287,15 @@ func (pt PipelineTask) validateTask(ctx context.Context) (errs *apis.FieldError) return errs } +func (pt *PipelineTask) validateMatrix(ctx context.Context) (errs *apis.FieldError) { + if len(pt.Matrix) != 0 { + // This is an alpha feature and will fail validation if it's used in a pipeline spec + // when the enable-api-fields feature gate is anything but "alpha". + errs = errs.Also(ValidateEnabledAPIFields(ctx, "matrix", config.AlphaAPIFields)) + } + return errs +} + // TaskSpecMetadata returns the metadata of the PipelineTask's EmbeddedTask spec. func (pt *PipelineTask) TaskSpecMetadata() PipelineTaskMetadata { return pt.TaskSpec.Metadata diff --git a/pkg/apis/pipeline/v1beta1/pipeline_validation.go b/pkg/apis/pipeline/v1beta1/pipeline_validation.go index 45c6443bf96..64a58d5d34f 100644 --- a/pkg/apis/pipeline/v1beta1/pipeline_validation.go +++ b/pkg/apis/pipeline/v1beta1/pipeline_validation.go @@ -71,6 +71,8 @@ func (ps *PipelineSpec) Validate(ctx context.Context) (errs *apis.FieldError) { errs = errs.Also(validateTasksAndFinallySection(ps)) errs = errs.Also(validateFinalTasks(ps.Tasks, ps.Finally)) errs = errs.Also(validateWhenExpressions(ps.Tasks, ps.Finally)) + errs = errs.Also(validateMatrix(ctx, ps.Tasks).ViaField("tasks")) + errs = errs.Also(validateMatrix(ctx, ps.Finally).ViaField("finally")) return errs } @@ -546,3 +548,10 @@ func validateGraph(tasks []PipelineTask) *apis.FieldError { } return nil } + +func validateMatrix(ctx context.Context, tasks []PipelineTask) (errs *apis.FieldError) { + for idx, task := range tasks { + errs = errs.Also(task.validateMatrix(ctx).ViaIndex(idx)) + } + return errs +} diff --git a/pkg/apis/pipeline/v1beta1/pipeline_validation_test.go b/pkg/apis/pipeline/v1beta1/pipeline_validation_test.go index 0066ebc75ea..e400ef194ab 100644 --- a/pkg/apis/pipeline/v1beta1/pipeline_validation_test.go +++ b/pkg/apis/pipeline/v1beta1/pipeline_validation_test.go @@ -18,6 +18,7 @@ package v1beta1 import ( "context" + "fmt" "testing" "time" @@ -2571,6 +2572,72 @@ func TestPipelineTasksExecutionStatus(t *testing.T) { } } +// TestMatrixIncompatibleAPIVersions exercises validation of matrix +// that requires alpha feature gate version in order to work. +func TestMatrixIncompatibleAPIVersions(t *testing.T) { + tests := []struct { + name string + requiredVersion string + spec PipelineSpec + }{{ + name: "matrix requires alpha - check tasks", + requiredVersion: "alpha", + spec: PipelineSpec{ + Tasks: PipelineTaskList{{ + Name: "a-task", + TaskRef: &TaskRef{Name: "a-task"}, + Matrix: []Param{{ + Name: "a-param", Value: ArrayOrString{Type: ParamTypeArray, ArrayVal: []string{"foo", "bar"}}, + }}, + }}, + }, + }, { + name: "matrix requires alpha - check finally tasks", + requiredVersion: "alpha", + spec: PipelineSpec{ + Tasks: PipelineTaskList{{ + Name: "a-task", + TaskRef: &TaskRef{Name: "a-task"}, + }}, + Finally: PipelineTaskList{{ + Name: "b-task", + TaskRef: &TaskRef{Name: "b-task"}, + Matrix: []Param{{ + Name: "a-param", Value: ArrayOrString{Type: ParamTypeArray, ArrayVal: []string{"foo", "bar"}}, + }}, + }}, + }, + }} + versions := []string{"alpha", "stable"} + for _, tt := range tests { + for _, version := range versions { + testName := fmt.Sprintf("(using %s) %s", version, tt.name) + t.Run(testName, func(t *testing.T) { + ps := tt.spec + featureFlags, _ := config.NewFeatureFlagsFromMap(map[string]string{ + "enable-api-fields": version, + }) + cfg := &config.Config{ + FeatureFlags: featureFlags, + } + + ctx := config.ToContext(context.Background(), cfg) + + ps.SetDefaults(ctx) + err := ps.Validate(ctx) + + if tt.requiredVersion != version && err == nil { + t.Fatalf("no error received even though version required is %q while feature gate is %q", tt.requiredVersion, version) + } + + if tt.requiredVersion == version && err != nil { + t.Fatalf("error received despite required version and feature gate matching %q: %v", version, err) + } + }) + } + } +} + func getTaskSpec() TaskSpec { return TaskSpec{ Steps: []Step{{ diff --git a/pkg/apis/pipeline/v1beta1/swagger.json b/pkg/apis/pipeline/v1beta1/swagger.json index 209fae22dff..c4bedc35f50 100644 --- a/pkg/apis/pipeline/v1beta1/swagger.json +++ b/pkg/apis/pipeline/v1beta1/swagger.json @@ -1228,6 +1228,14 @@ "$ref": "#/definitions/v1beta1.PipelineTaskCondition" } }, + "matrix": { + "description": "Matrix declares parameters used to fan out this task.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1beta1.Param" + } + }, "name": { "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", "type": "string" diff --git a/pkg/apis/pipeline/v1beta1/zz_generated.deepcopy.go b/pkg/apis/pipeline/v1beta1/zz_generated.deepcopy.go index d11aa17f9b4..ed83610fdf2 100644 --- a/pkg/apis/pipeline/v1beta1/zz_generated.deepcopy.go +++ b/pkg/apis/pipeline/v1beta1/zz_generated.deepcopy.go @@ -922,6 +922,13 @@ func (in *PipelineTask) DeepCopyInto(out *PipelineTask) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.Matrix != nil { + in, out := &in.Matrix, &out.Matrix + *out = make([]Param, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.Workspaces != nil { in, out := &in.Workspaces, &out.Workspaces *out = make([]WorkspacePipelineTaskBinding, len(*in)) diff --git a/third_party/LICENSE b/third_party/LICENSE deleted file mode 100644 index 6a66aea5eaf..00000000000 --- a/third_party/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/third_party/vendor/golang.org/x/crypto/LICENSE b/third_party/vendor/golang.org/x/crypto/LICENSE deleted file mode 100644 index 6a66aea5eaf..00000000000 --- a/third_party/vendor/golang.org/x/crypto/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/third_party/vendor/golang.org/x/net/LICENSE b/third_party/vendor/golang.org/x/net/LICENSE deleted file mode 100644 index 6a66aea5eaf..00000000000 --- a/third_party/vendor/golang.org/x/net/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/third_party/vendor/golang.org/x/sys/cpu/LICENSE b/third_party/vendor/golang.org/x/sys/cpu/LICENSE deleted file mode 100644 index 6a66aea5eaf..00000000000 --- a/third_party/vendor/golang.org/x/sys/cpu/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/third_party/vendor/golang.org/x/text/LICENSE b/third_party/vendor/golang.org/x/text/LICENSE deleted file mode 100644 index 6a66aea5eaf..00000000000 --- a/third_party/vendor/golang.org/x/text/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.