mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-03 17:30:00 +00:00
add godep.json to staging repos
This commit is contained in:
parent
22e10bbc29
commit
a53611ab3e
104
hack/update-staging-godeps.sh
Executable file
104
hack/update-staging-godeps.sh
Executable file
@ -0,0 +1,104 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Copyright 2017 The Kubernetes 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.
|
||||||
|
|
||||||
|
# updates the godeps.json file in the staging folders to allow clean vendoring
|
||||||
|
# based on kubernetes levels.
|
||||||
|
# TODO this does not address client-go, since it takes a different approach to vendoring
|
||||||
|
# TODO client-go should probably be made consistent
|
||||||
|
|
||||||
|
set -o errexit
|
||||||
|
set -o nounset
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
|
||||||
|
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/..
|
||||||
|
source "${KUBE_ROOT}/hack/lib/init.sh"
|
||||||
|
|
||||||
|
kube::golang::setup_env
|
||||||
|
|
||||||
|
# keep the godep restore path reasonably stable to avoid unnecessary restores
|
||||||
|
godepRestoreDir=${TMPDIR:-/tmp/}/kube-godep-restore
|
||||||
|
|
||||||
|
TARGET_DIR=${TARGET_DIR:-${KUBE_ROOT}/staging}
|
||||||
|
echo "working in ${TARGET_DIR}"
|
||||||
|
|
||||||
|
ORIGINAL_GOPATH="${GOPATH}"
|
||||||
|
|
||||||
|
SKIP_RESTORE=${SKIP_RESTORE:-}
|
||||||
|
if [ "${SKIP_RESTORE}" != "true" ]; then
|
||||||
|
echo "starting godep restore"
|
||||||
|
mkdir -p "${godepRestoreDir}"
|
||||||
|
|
||||||
|
# add the vendor folder so that we don't redownload things during restore
|
||||||
|
GOPATH="${godepRestoreDir}:${KUBE_ROOT}/staging:${ORIGINAL_GOPATH}"
|
||||||
|
# restore from kubernetes godeps to ensure we get the correct levels
|
||||||
|
# you get errors about the staging repos not using a known version control system
|
||||||
|
godep restore > ${godepRestoreDir}/godep-restore.log
|
||||||
|
echo "finished godep restore"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "forcing fake godep folders to match the current state of master in tmp"
|
||||||
|
for stagingRepo in $(ls ${KUBE_ROOT}/staging/src/k8s.io); do
|
||||||
|
echo " creating ${stagingRepo}"
|
||||||
|
rm -rf ${godepRestoreDir}/src/k8s.io/${stagingRepo}
|
||||||
|
cp -a ${KUBE_ROOT}/staging/src/k8s.io/${stagingRepo} ${godepRestoreDir}/src/k8s.io
|
||||||
|
|
||||||
|
# we need a git commit in the godep folder, otherwise godep won't save
|
||||||
|
pushd ${godepRestoreDir}/src/k8s.io/${stagingRepo}
|
||||||
|
git init > /dev/null
|
||||||
|
# we need this so later commands work, but nothing should ever actually include these commits
|
||||||
|
# these are local only, not global
|
||||||
|
git config user.email "you@example.com"
|
||||||
|
git config user.name "Your Name"
|
||||||
|
git add . > /dev/null
|
||||||
|
git commit -qm "fake commit"
|
||||||
|
popd
|
||||||
|
done
|
||||||
|
|
||||||
|
function updateGodepManifest() {
|
||||||
|
local repo=${1}
|
||||||
|
|
||||||
|
echo "starting ${repo} save"
|
||||||
|
mkdir -p ${TARGET_DIR}/src/k8s.io
|
||||||
|
# if target_dir isn't the same as source dir, you need copy
|
||||||
|
test "${KUBE_ROOT}/staging" = "${TARGET_DIR}" || cp -a ${KUBE_ROOT}/staging/src/${repo} ${TARGET_DIR}/src/k8s.io
|
||||||
|
# remove the current Godeps.json so we always rebuild it
|
||||||
|
rm -rf ${TARGET_DIR}/src/${repo}/Godeps
|
||||||
|
GOPATH="${godepRestoreDir}:${TARGET_DIR}"
|
||||||
|
pushd ${TARGET_DIR}/src/${repo}
|
||||||
|
godep save ./...
|
||||||
|
|
||||||
|
# now remove all the go files. We'll re-run a restore, go get, godep save cycle in the sync scripts
|
||||||
|
# to get the commits for other staging k8s.io repos anyway, so we don't need the added files
|
||||||
|
rm -rf vendor
|
||||||
|
|
||||||
|
echo "rewriting Godeps.json to remove commits that don't really exist because we haven't pushed the prereqs yet"
|
||||||
|
GOPATH="${ORIGINAL_GOPATH}"
|
||||||
|
go run "${KUBE_ROOT}/staging/godeps-json-updater.go" --godeps-file="${TARGET_DIR}/src/${repo}/Godeps/Godeps.json" --client-go-import-path="${repo}"
|
||||||
|
|
||||||
|
popd
|
||||||
|
echo "finished ${repo} save"
|
||||||
|
}
|
||||||
|
|
||||||
|
# move into staging and save the dependencies for everything in order
|
||||||
|
for stagingRepo in $(ls ${KUBE_ROOT}/staging/src/k8s.io); do
|
||||||
|
# we have to skip client-go because it does unusual manipulation of its godeps
|
||||||
|
if [ "${stagingRepo}" == "client-go" ]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
updateGodepManifest "k8s.io/${stagingRepo}"
|
||||||
|
done
|
49
hack/verify-staging-godeps.sh
Executable file
49
hack/verify-staging-godeps.sh
Executable file
@ -0,0 +1,49 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Copyright 2017 The Kubernetes 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.
|
||||||
|
|
||||||
|
# TODO this does not address client-go, since it takes a different approach to vendoring
|
||||||
|
# TODO client-go should probably be made consistent
|
||||||
|
|
||||||
|
set -o errexit
|
||||||
|
set -o nounset
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
|
||||||
|
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/..
|
||||||
|
source "${KUBE_ROOT}/hack/lib/init.sh"
|
||||||
|
|
||||||
|
|
||||||
|
TARGET_DIR=$(mktemp -d "${TMPDIR:-/tmp/}$(basename 0).XXXXXXXXXXXX")
|
||||||
|
# Register function to be called on EXIT to remove folder.
|
||||||
|
function cleanup {
|
||||||
|
SKIP_CLEANUP=${SKIP_CLEANUP:-}
|
||||||
|
if [ "${SKIP_CLEANUP}" != "true" ]; then
|
||||||
|
rm -rf "${TARGET_DIR}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
trap cleanup EXIT
|
||||||
|
|
||||||
|
TARGET_DIR=${TARGET_DIR} ${KUBE_ROOT}/hack/update-staging-godeps.sh
|
||||||
|
|
||||||
|
# check each staging repo to make sure its Godeps.json is correct
|
||||||
|
for stagingRepo in $(ls ${KUBE_ROOT}/staging/src/k8s.io); do
|
||||||
|
# we have to skip client-go because it does unusual manipulation of its godeps
|
||||||
|
if [ "${stagingRepo}" == "client-go" ]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
diff --ignore-matching-lines='^\s*\"Comment\"' ${KUBE_ROOT}/staging/src/k8s.io/${stagingRepo}/Godeps/Godeps.json ${TARGET_DIR}/src/k8s.io/${stagingRepo}/Godeps/Godeps.json
|
||||||
|
done
|
@ -46,16 +46,16 @@ function print_forbidden_imports () {
|
|||||||
echo
|
echo
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
local FORBIDDEN=$(
|
local TEST_FORBIDDEN=$(
|
||||||
go list -f $'{{with $package := .ImportPath}}{{range $.TestImports}}{{$package}} imports {{.}}\n{{end}}{{end}}' ./vendor/k8s.io/${PACKAGE}/... |
|
go list -f $'{{with $package := .ImportPath}}{{range $.TestImports}}{{$package}} imports {{.}}\n{{end}}{{end}}' ./vendor/k8s.io/${PACKAGE}/... |
|
||||||
sed 's|^k8s.io/kubernetes/vendor/||;s| k8s.io/kubernetes/vendor/| |' |
|
sed 's|^k8s.io/kubernetes/vendor/||;s| k8s.io/kubernetes/vendor/| |' |
|
||||||
grep -v " k8s.io/${PACKAGE}" |
|
grep -v " k8s.io/${PACKAGE}" |
|
||||||
grep -e "imports \(${RE}\)"
|
grep -e "imports \(${RE}\)"
|
||||||
)
|
)
|
||||||
if [ -n "${FORBIDDEN}" ]; then
|
if [ -n "${TEST_FORBIDDEN}" ]; then
|
||||||
echo "${PACKAGE} has a forbidden dependency:"
|
echo "${PACKAGE} has a forbidden dependency in test code:"
|
||||||
echo
|
echo
|
||||||
echo "${FORBIDDEN}" | sed 's/^/ /'
|
echo "${TEST_FORBIDDEN}" | sed 's/^/ /'
|
||||||
echo
|
echo
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
@ -68,13 +68,7 @@ func main() {
|
|||||||
// removes the Deps whose ImportPath contains "k8s.io/kubernetes"
|
// removes the Deps whose ImportPath contains "k8s.io/kubernetes"
|
||||||
i := 0
|
i := 0
|
||||||
for _, dep := range g.Deps {
|
for _, dep := range g.Deps {
|
||||||
if strings.Contains(dep.ImportPath, "k8s.io/apimachinery") {
|
if strings.Contains(dep.ImportPath, "k8s.io/") {
|
||||||
continue
|
|
||||||
}
|
|
||||||
if strings.Contains(dep.ImportPath, "k8s.io/kubernetes") {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if strings.Contains(dep.ImportPath, "k8s.io/client-go") {
|
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
g.Deps[i] = dep
|
g.Deps[i] = dep
|
||||||
|
Loading…
Reference in New Issue
Block a user