diff --git a/Gopkg.lock b/Gopkg.lock index efffd52..c5d6f2e 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -92,7 +92,7 @@ "runtime", "runtime/term" ] - revision = "909b61f69eca3c0062caec8b5d337f64cb21763d" + revision = "e538fd780e4c98fbc31a1fabc04b2578f5cda17e" [[projects]] branch = "master" @@ -113,7 +113,7 @@ "yaml/pretty", "yaml/signer" ] - revision = "1aa8f3a67d92ba8207e5fe9f00c15610f1714d87" + revision = "98eb77b4c58a783b3f2efce8fed4e5d9d1f09469" [[projects]] name = "github.com/drone/envsubst" diff --git a/vendor/github.com/drone/drone-runtime/LICENSE b/vendor/github.com/drone/drone-runtime/LICENSE deleted file mode 100644 index f2e144f..0000000 --- a/vendor/github.com/drone/drone-runtime/LICENSE +++ /dev/null @@ -1,191 +0,0 @@ - - Apache License - Version 2.0, January 2004 - https://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - Copyright 2017 Drone.IO, Inc. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - https://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/github.com/drone/drone-runtime/NOTICE b/vendor/github.com/drone/drone-runtime/NOTICE deleted file mode 100644 index 743e1b6..0000000 --- a/vendor/github.com/drone/drone-runtime/NOTICE +++ /dev/null @@ -1,8 +0,0 @@ -This product includes software developed by Drone.IO, Inc. -(https://www.drone.io/). - -This product includes software developed by Docker, Inc. -(https://www.docker.com/). - -This product includes software developed by Google, Inc. -(https://www.google.com/). diff --git a/vendor/github.com/drone/drone-runtime/engine/docker/auth/auth.go b/vendor/github.com/drone/drone-runtime/engine/docker/auth/auth.go index 1f78eaf..8f73ae4 100644 --- a/vendor/github.com/drone/drone-runtime/engine/docker/auth/auth.go +++ b/vendor/github.com/drone/drone-runtime/engine/docker/auth/auth.go @@ -68,11 +68,14 @@ func decode(s string) (username, password string) { if err != nil { return } - parts := strings.Split(string(d), ":") - if len(parts) != 2 { - return + parts := strings.SplitN(string(d), ":", 2) + if len(parts) > 0 { + username = parts[0] } - return parts[0], parts[1] + if len(parts) > 1 { + password = parts[1] + } + return } func hostname(s string) string { @@ -105,7 +108,7 @@ func Marshal(list []*engine.DockerAuth) ([]byte, error) { out.Auths = map[string]auths{} for _, item := range list { out.Auths[item.Address] = auths{ - Auth: Encode( + Auth: encode( item.Username, item.Password, ), diff --git a/vendor/github.com/drone/drone-runtime/engine/docker/convert.go b/vendor/github.com/drone/drone-runtime/engine/docker/convert.go index ffc9a6a..cfd77aa 100644 --- a/vendor/github.com/drone/drone-runtime/engine/docker/convert.go +++ b/vendor/github.com/drone/drone-runtime/engine/docker/convert.go @@ -83,14 +83,8 @@ func toHostConfig(spec *engine.Spec, step *engine.Step) *container.HostConfig { } } - // IMPORTANT before we implement devices for docker we - // need to implement devices for kubernetes. This might - // also require changes to the drone yaml format. - if len(step.Devices) != 0 { - // TODO(bradrydzewski) set Devices - } - if len(step.Volumes) != 0 { + config.Devices = toDeviceSlice(spec, step) config.Binds = toVolumeSlice(spec, step) config.Mounts = toVolumeMounts(spec, step) } @@ -109,6 +103,30 @@ func toNetConfig(spec *engine.Spec, proc *engine.Step) *network.NetworkingConfig } } +// helper function that converts a slice of device paths to a slice of +// container.DeviceMapping. +func toDeviceSlice(spec *engine.Spec, step *engine.Step) []container.DeviceMapping { + var to []container.DeviceMapping + for _, mount := range step.Devices { + device, ok := engine.LookupVolume(spec, mount.Name) + if !ok { + continue + } + if isDevice(device) == false { + continue + } + to = append(to, container.DeviceMapping{ + PathOnHost: device.HostPath.Path, + PathInContainer: mount.DevicePath, + CgroupPermissions: "rwm", + }) + } + if len(to) == 0 { + return nil + } + return to +} + // helper function returns a slice of volume mounts. func toVolumeSlice(spec *engine.Spec, step *engine.Step) []string { // this entire function should be deprecated in @@ -120,6 +138,9 @@ func toVolumeSlice(spec *engine.Spec, step *engine.Step) []string { if !ok { continue } + if isDevice(volume) { + continue + } if isDataVolume(volume) == false { continue } @@ -213,6 +234,11 @@ func isDataVolume(volume *engine.Volume) bool { return volume.EmptyDir != nil && volume.EmptyDir.Medium != "memory" } +// returns true if the volume is a device +func isDevice(volume *engine.Volume) bool { + return volume.HostPath != nil && strings.HasPrefix(volume.HostPath.Path, "/dev/") +} + // returns true if the volume is a named pipe. func isNamedPipe(volume *engine.Volume) bool { return volume.HostPath != nil && diff --git a/vendor/github.com/drone/drone-runtime/engine/docker/docker.go b/vendor/github.com/drone/drone-runtime/engine/docker/docker.go index 44f6af9..39c26b9 100644 --- a/vendor/github.com/drone/drone-runtime/engine/docker/docker.go +++ b/vendor/github.com/drone/drone-runtime/engine/docker/docker.go @@ -13,6 +13,7 @@ import ( "docker.io/go-docker" "docker.io/go-docker/api/types" + "docker.io/go-docker/api/types/network" "docker.io/go-docker/api/types/volume" ) @@ -152,6 +153,15 @@ func (e *dockerEngine) Create(ctx context.Context, spec *engine.Spec, step *engi } } + for _, net := range step.Docker.Networks { + err = e.client.NetworkConnect(ctx, net, step.Metadata.UID, &network.EndpointSettings{ + Aliases: []string{net}, + }) + if err != nil { + return nil + } + } + return nil } diff --git a/vendor/github.com/drone/drone-yaml/LICENSE b/vendor/github.com/drone/drone-yaml/LICENSE deleted file mode 100644 index e69de29..0000000 diff --git a/vendor/github.com/drone/drone-yaml/yaml/compiler/transform/netrc.go b/vendor/github.com/drone/drone-yaml/yaml/compiler/transform/netrc.go index 15ae337..4e4b916 100644 --- a/vendor/github.com/drone/drone-yaml/yaml/compiler/transform/netrc.go +++ b/vendor/github.com/drone/drone-yaml/yaml/compiler/transform/netrc.go @@ -9,10 +9,12 @@ import ( const ( netrcName = ".netrc" - netrcPath = "/root/.netrc" - netrcMode = 0600 + netrcPath = "/var/run/drone/.netrc" + netrcMode = 0777 ) +const disableNetrcMount = true + // WithNetrc is a helper function that creates a netrc file // and mounts the file to all container steps. func WithNetrc(machine, username, password string) func(*engine.Spec) { @@ -21,36 +23,46 @@ func WithNetrc(machine, username, password string) func(*engine.Spec) { return } - // Currently file mounts don't seem to work in Windows so environment - // variables are used instead - // FIXME: https://github.com/drone/drone-yaml/issues/20 - if spec.Platform.OS != "windows" { - netrc := generateNetrc(machine, username, password) - spec.Files = append(spec.Files, &engine.File{ - Metadata: engine.Metadata{ - UID: rand.String(), - Name: netrcName, - Namespace: spec.Metadata.Namespace, - }, - Data: []byte(netrc), - }) - for _, step := range spec.Steps { - step.Files = append(step.Files, &engine.FileMount{ - Name: netrcName, - Path: netrcPath, - Mode: netrcMode, + // TODO(bradrydzewski) temporarily disable mounting + // the netrc file due to issues with kubernetes + // compatibility. + if disableNetrcMount == false { + // Currently file mounts don't seem to work in Windows so environment + // variables are used instead + // FIXME: https://github.com/drone/drone-yaml/issues/20 + if spec.Platform.OS != "windows" { + netrc := generateNetrc(machine, username, password) + spec.Files = append(spec.Files, &engine.File{ + Metadata: engine.Metadata{ + UID: rand.String(), + Name: netrcName, + Namespace: spec.Metadata.Namespace, + }, + Data: []byte(netrc), }) + for _, step := range spec.Steps { + step.Files = append(step.Files, &engine.FileMount{ + Name: netrcName, + Path: netrcPath, + Mode: netrcMode, + }) + } } - } else { - for _, step := range spec.Steps { - step.Envs["CI_NETRC_MACHINE"] = machine - step.Envs["CI_NETRC_USERNAME"] = username - step.Envs["CI_NETRC_PASSWORD"] = password + } - step.Envs["DRONE_NETRC_MACHINE"] = machine - step.Envs["DRONE_NETRC_USERNAME"] = username - step.Envs["DRONE_NETRC_PASSWORD"] = password + // TODO(bradrydzewski) these should only be injected + // if the file is not mounted, if OS == Windows. + for _, step := range spec.Steps { + if step.Envs == nil { + step.Envs = map[string]string{} } + step.Envs["CI_NETRC_MACHINE"] = machine + step.Envs["CI_NETRC_USERNAME"] = username + step.Envs["CI_NETRC_PASSWORD"] = password + + step.Envs["DRONE_NETRC_MACHINE"] = machine + step.Envs["DRONE_NETRC_USERNAME"] = username + step.Envs["DRONE_NETRC_PASSWORD"] = password } } }