summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--BUILD7
-rw-r--r--WORKSPACE59
-rw-r--r--cloudbuild/go.Dockerfile2
-rw-r--r--cloudbuild/go.yaml20
-rw-r--r--go.mod20
-rwxr-xr-xkokoro/run_tests.sh7
-rwxr-xr-xtools/go_branch.sh76
7 files changed, 177 insertions, 14 deletions
diff --git a/BUILD b/BUILD
index 391791ca9..6d5e800ca 100644
--- a/BUILD
+++ b/BUILD
@@ -1,6 +1,7 @@
package(licenses = ["notice"]) # Apache 2.0
load("@io_bazel_rules_go//go:def.bzl", "go_path")
+load("@bazel_gazelle//:def.bzl", "gazelle")
# The sandbox filegroup is used for sandbox-internal dependencies.
package_group(
@@ -22,3 +23,9 @@ go_path(
"//runsc",
],
)
+
+# gazelle is a set of build tools.
+#
+# To update the WORKSPACE from go.mod, use:
+# bazel run //:gazelle -- update-repos -from_file=go.mod
+gazelle(name = "gazelle")
diff --git a/WORKSPACE b/WORKSPACE
index 5da06317f..89e4b5175 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -6,6 +6,7 @@ http_archive(
sha256 = "a82a352bffae6bee4e95f68a8d80a70e87f42c4741e6a448bec11998fcc82329",
url = "https://github.com/bazelbuild/rules_go/releases/download/0.18.5/rules_go-0.18.5.tar.gz",
)
+
http_archive(
name = "bazel_gazelle",
sha256 = "3c681998538231a2d24d0c07ed5a7658cb72bfb5fd4bf9911157c0e9ac6a2687",
@@ -37,86 +38,116 @@ http_archive(
# External repositories, in sorted order.
go_repository(
name = "com_github_cenkalti_backoff",
- commit = "66e726b43552c0bab0539b28e640b89fd6862115",
importpath = "github.com/cenkalti/backoff",
+ tag = "v2.1.1",
)
go_repository(
name = "com_github_gofrs_flock",
- commit = "886344bea0798d02ff3fae16a922be5f6b26cee0",
+ commit = "886344bea079",
importpath = "github.com/gofrs/flock",
)
go_repository(
name = "com_github_golang_mock",
- commit = "600781dde9cca80734169b9e969d9054ccc57937",
importpath = "github.com/golang/mock",
+ tag = "v1.3.1",
)
go_repository(
name = "com_github_google_go-cmp",
- commit = "3af367b6b30c263d47e8895973edcca9a49cf029",
importpath = "github.com/google/go-cmp",
+ tag = "v0.2.0",
)
go_repository(
name = "com_github_google_subcommands",
- commit = "ce3d4cfc062faac7115d44e5befec8b5a08c3faa",
+ commit = "ce3d4cfc062f",
importpath = "github.com/google/subcommands",
)
go_repository(
name = "com_github_google_uuid",
- commit = "dec09d789f3dba190787f8b4454c7d3c936fed9e",
+ commit = "dec09d789f3d",
importpath = "github.com/google/uuid",
)
go_repository(
name = "com_github_kr_pty",
- commit = "282ce0e5322c82529687d609ee670fac7c7d917c",
importpath = "github.com/kr/pty",
+ tag = "v1.1.1",
)
go_repository(
name = "com_github_opencontainers_runtime-spec",
- commit = "b2d941ef6a780da2d9982c1fb28d77ad97f54fc7",
+ commit = "b2d941ef6a78",
importpath = "github.com/opencontainers/runtime-spec",
)
go_repository(
name = "com_github_syndtr_gocapability",
- commit = "d98352740cb2c55f81556b63d4a1ec64c5a319c2",
+ commit = "d98352740cb2",
importpath = "github.com/syndtr/gocapability",
)
go_repository(
name = "com_github_vishvananda_netlink",
- commit = "adb577d4a45e341da53c4d9196ad4222c9a23e69",
+ commit = "adb577d4a45e",
importpath = "github.com/vishvananda/netlink",
)
go_repository(
name = "com_github_vishvananda_netns",
- commit = "be1fbeda19366dea804f00efff2dd73a1642fdcc",
+ commit = "be1fbeda1936",
importpath = "github.com/vishvananda/netns",
)
go_repository(
+ name = "org_golang_x_crypto",
+ commit = "c2843e01d9a2",
+ importpath = "golang.org/x/crypto",
+)
+
+go_repository(
name = "org_golang_x_net",
- commit = "b3c676e531a6dc479fa1b35ac961c13f5e2b4d2e",
+ commit = "d8887717615a",
importpath = "golang.org/x/net",
)
go_repository(
+ name = "org_golang_x_text",
+ importpath = "golang.org/x/text",
+ tag = "v0.3.0",
+)
+
+go_repository(
+ name = "org_golang_x_tools",
+ commit = "36563e24a262",
+ importpath = "golang.org/x/tools",
+)
+
+go_repository(
+ name = "org_golang_x_sync",
+ commit = "112230192c58",
+ importpath = "golang.org/x/sync",
+)
+
+go_repository(
name = "org_golang_x_sys",
- commit = "0dd5e194bbf5eb84a39666eb4c98a4d007e4203a",
+ commit = "d0b11bdaac8a",
importpath = "golang.org/x/sys",
)
go_repository(
name = "com_github_google_btree",
- commit = "4030bb1f1f0c35b30ca7009e9ebd06849dd45306",
importpath = "github.com/google/btree",
+ tag = "v1.0.0",
+)
+
+go_repository(
+ name = "com_github_golang_protobuf",
+ importpath = "github.com/golang/protobuf",
+ tag = "v1.3.1",
)
# System Call test dependencies.
diff --git a/cloudbuild/go.Dockerfile b/cloudbuild/go.Dockerfile
new file mode 100644
index 000000000..226442fd2
--- /dev/null
+++ b/cloudbuild/go.Dockerfile
@@ -0,0 +1,2 @@
+FROM ubuntu
+RUN apt-get -q update && apt-get install -qqy git rsync
diff --git a/cloudbuild/go.yaml b/cloudbuild/go.yaml
new file mode 100644
index 000000000..23dbf524e
--- /dev/null
+++ b/cloudbuild/go.yaml
@@ -0,0 +1,20 @@
+steps:
+- name: 'gcr.io/cloud-builders/git'
+ args: ['fetch', '--all', '--unshallow']
+- name: 'gcr.io/cloud-builders/bazel'
+ args: ['build', ':gopath']
+- name: 'gcr.io/cloud-builders/docker'
+ args: ['build', '-t', 'gcr.io/$PROJECT_ID/go-branch', '-f', 'cloudbuild/go.Dockerfile', '.']
+- name: 'gcr.io/$PROJECT_ID/go-branch'
+ args: ['tools/go_branch.sh']
+- name: 'gcr.io/cloud-builders/git'
+ args: ['checkout', 'go']
+- name: 'gcr.io/cloud-builders/git'
+ args: ['clean', '-f']
+- name: 'golang'
+ args: ['go', 'build', './...']
+- name: 'gcr.io/cloud-builders/git'
+ entrypoint: 'bash'
+ args:
+ - '-c'
+ - 'if [[ "$BRANCH_NAME" == "master" ]]; then git push origin go:go; fi'
diff --git a/go.mod b/go.mod
new file mode 100644
index 000000000..f10b56e7f
--- /dev/null
+++ b/go.mod
@@ -0,0 +1,20 @@
+module gvisor.googlesource.com/gvisor
+go 1.12
+
+require (
+ github.com/cenkalti/backoff v2.1.1
+ github.com/gofrs/flock v0.6.1-0.20180915234121-886344bea079
+ github.com/golang/mock v1.3.1
+ github.com/golang/protobuf v1.3.1
+ github.com/google/btree v1.0.0
+ github.com/google/go-cmp v0.2.0
+ github.com/google/subcommands v0.0.0-20170224175846-ce3d4cfc062f
+ github.com/google/uuid v0.0.0-20171129191014-dec09d789f3d
+ github.com/kr/pty v1.1.1
+ github.com/opencontainers/runtime-spec v0.1.2-0.20171211145439-b2d941ef6a78
+ github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2
+ github.com/vishvananda/netlink v1.0.1-0.20190318003149-adb577d4a45e
+ github.com/vishvananda/netns v0.0.0-20171111001504-be1fbeda1936
+ golang.org/x/net v0.0.0-20180404174746-b3c676e531a6
+ golang.org/x/sys v0.0.0-20171117071000-0dd5e194bbf5
+)
diff --git a/kokoro/run_tests.sh b/kokoro/run_tests.sh
index d6656fe4f..6ff72ce1d 100755
--- a/kokoro/run_tests.sh
+++ b/kokoro/run_tests.sh
@@ -68,6 +68,12 @@ BAZEL_BUILD_RBE_FLAGS=(
# Helper Functions #
####################
+sanity_checks() {
+ cd ${WORKSPACE_DIR}
+ bazel run //:gazelle -- update-repos -from_file=go.mod
+ git diff --exit-code WORKSPACE
+}
+
build_everything() {
FLAVOR="${1}"
@@ -235,6 +241,7 @@ main() {
trap finish EXIT
# Build and run the simple tests.
+ sanity_checks
build_everything opt
run_simple_tests
diff --git a/tools/go_branch.sh b/tools/go_branch.sh
new file mode 100755
index 000000000..8ea6a6d8d
--- /dev/null
+++ b/tools/go_branch.sh
@@ -0,0 +1,76 @@
+#!/bin/bash
+
+# Copyright 2019 The gVisor Authors.
+#
+# 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
+#
+# http://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.
+
+set -eo pipefail
+
+# Discovery the package name from the go.mod file.
+declare -r gomod="$(pwd)/go.mod"
+declare -r module=$(cat "${gomod}" | grep -E "^module" | cut -d' ' -f2)
+
+# Check that gopath has been built.
+declare -r gopath_dir="$(pwd)/bazel-bin/gopath/src/${module}"
+if ! [ -d "${gopath_dir}" ]; then
+ echo "No gopath directory found; build the :gopath target." >&2
+ exit 1
+fi
+
+# Create a temporary working directory, and ensure that this directory and all
+# subdirectories are cleaned up upon exit.
+declare -r tmp_dir=$(mktemp -d)
+finish() {
+ cd # Leave tmp_dir.
+ rm -rf "${tmp_dir}"
+}
+trap finish EXIT
+
+# Record the current working commit.
+declare -r head=$(git describe --always)
+
+# We expect to have an existing go branch that we will use as the basis for
+# this commit. That branch may be empty, but it must exist.
+declare -r go_branch=$(git show-ref --hash origin/go)
+
+# Clone the current repository to the temporary directory, and check out the
+# current go_branch directory. We move to the new repository for convenience.
+declare -r repo_orig="$(pwd)"
+declare -r repo_new="${tmp_dir}/repository"
+git clone . "${repo_new}"
+cd "${repo_new}"
+
+# Setup the repository and checkout the branch.
+git config user.email "gvisor-bot@google.com"
+git config user.name "gVisor bot"
+git fetch origin "${go_branch}"
+git checkout -b go "${go_branch}"
+
+# Start working on a merge commit that combines the previous history with the
+# current history. Note that we don't actually want any changes yet.
+git merge --allow-unrelated-histories --no-commit --strategy ours ${head}
+
+# Sync the entire gopath_dir and go.mod.
+rsync --recursive --verbose --delete --exclude .git --exclude README.md -L "${gopath_dir}/" .
+cp "${gomod}" .
+
+# There are a few solitary files that can get left behind due to the way bazel
+# constructs the gopath target. Note that we don't find all Go files here
+# because they may correspond to unused templates, etc.
+cp "${repo_orig}"/runsc/*.go runsc/
+
+# Update the current working set and commit.
+git add . && git commit -m "Merge ${head} (automated)"
+
+# Push the branch back to the original repository.
+git remote add orig "${repo_orig}" && git push -f orig go:go