Skip to content

Remove federation options in krel push #1128

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Feb 24, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 4 additions & 16 deletions cmd/krel/cmd/push.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,9 @@ Developer pushes simply run as they do pushing to devel/ on GCS.
In --ci mode, 'push' runs in mock mode by default. Use --nomock to do
a real push.

Federation values are just passed through as exported global vars still
due to the fact that we're still leveraging the existing federation
interface in kubernetes proper.

push - Do a developer push
push --nomock --ci
- Do a (non-mocked) CI push with federation
- Do a (non-mocked) CI push
push --bucket=kubernetes-release-$USER
- Do a developer push to kubernetes-release-$USER`

Expand All @@ -54,7 +50,6 @@ type pushBuildOptions struct {
dockerRegistry string
extraPublishFile string
gcsSuffix string
releaseKind string
releaseType string
versionSuffix string
allowDup bool
Expand All @@ -66,7 +61,7 @@ type pushBuildOptions struct {
var pushBuildOpts = &pushBuildOptions{}

var pushBuildCmd = &cobra.Command{
Use: "push [--federation] [--noupdatelatest] [--ci] [--bucket=<GS bucket>] [--private-bucket]",
Use: "push [--noupdatelatest] [--ci] [--bucket=<GS bucket>] [--private-bucket]",
Short: "push kubernetes release artifacts to GCS",
Example: description,
SilenceUsage: true,
Expand Down Expand Up @@ -197,12 +192,6 @@ func init() {
"",
"Specify a suffix to append to the upload destination on GCS",
)
pushBuildCmd.PersistentFlags().StringVar(
&pushBuildOpts.releaseKind,
"release-kind",
"kubernetes",
"Kind of release to push to GCS. Supported values are kubernetes (default) or federation",
)
pushBuildCmd.PersistentFlags().StringVar(
&pushBuildOpts.releaseType,
"release-type",
Expand All @@ -221,15 +210,14 @@ func init() {

func runPushBuild(opts *pushBuildOptions) error {
var latest string
releaseKind := opts.releaseKind

// Check if latest build uses bazel
dir, err := os.Getwd()
if err != nil {
return errors.Wrap(err, "Unable to get working directory")
}

isBazel, err := release.BuiltWithBazel(dir, releaseKind)
isBazel, err := release.BuiltWithBazel(dir)
if err != nil {
return errors.Wrap(err, "Unable to identify if release built with Bazel")
}
Expand All @@ -243,7 +231,7 @@ func runPushBuild(opts *pushBuildOptions) error {
latest = version
} else {
logrus.Info("Using Dockerized build version")
version, err := release.ReadDockerizedVersion(dir, releaseKind)
version, err := release.ReadDockerizedVersion(dir)
if err != nil {
return errors.Wrap(err, "Unable to read Dockerized build version")
}
Expand Down
23 changes: 10 additions & 13 deletions pkg/release/release.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ const (
dockerBuildPath = "_output/release-tars"
bazelBuildPath = "bazel-bin/build/release-tars"
bazelVersionPath = "bazel-genfiles/version"
dockerVersionPath = "version"
tarballExtension = ".tar.gz"
dockerVersionPath = "kubernetes/version"
kubernetesTar = "kubernetes.tar.gz"

// GCSStagePath is the directory where release artifacts are staged before
// push to GCS.
Expand Down Expand Up @@ -134,11 +134,10 @@ func GetToolBranch() string {
return toolBranch
}

// BuiltWithBazel determines whether the most recent release was built with Bazel.
func BuiltWithBazel(workDir, releaseKind string) (bool, error) {
tar := releaseKind + tarballExtension
bazelBuild := filepath.Join(workDir, bazelBuildPath, tar)
dockerBuild := filepath.Join(workDir, dockerBuildPath, tar)
// BuiltWithBazel determines whether the most recent Kubernetes release was built with Bazel.
func BuiltWithBazel(workDir string) (bool, error) {
bazelBuild := filepath.Join(workDir, bazelBuildPath, kubernetesTar)
dockerBuild := filepath.Join(workDir, dockerBuildPath, kubernetesTar)
return util.MoreRecent(bazelBuild, dockerBuild)
}

Expand All @@ -148,12 +147,10 @@ func ReadBazelVersion(workDir string) (string, error) {
return string(version), err
}

// ReadDockerizedVersion reads the version from a Dockerized build.
func ReadDockerizedVersion(workDir, releaseKind string) (string, error) {
tar := releaseKind + tarballExtension
dockerTarball := filepath.Join(workDir, dockerBuildPath, tar)
versionFile := filepath.Join(releaseKind, dockerVersionPath)
reader, err := util.ReadFileFromGzippedTar(dockerTarball, versionFile)
// ReadDockerizedVersion reads the version from a Dockerized Kubernetes build.
func ReadDockerizedVersion(workDir string) (string, error) {
dockerTarball := filepath.Join(workDir, dockerBuildPath, kubernetesTar)
reader, err := util.ReadFileFromGzippedTar(dockerTarball, dockerVersionPath)
if err != nil {
return "", err
}
Expand Down
51 changes: 25 additions & 26 deletions pkg/release/release_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"archive/tar"
"bytes"
"compress/gzip"
"io"
"io/ioutil"
"os"
"path/filepath"
Expand Down Expand Up @@ -115,8 +116,6 @@ func TestBuiltWithBazel(t *testing.T) {
dockerTmpDir, err := ioutil.TempDir("", "docker")
require.Nil(t, err)

release := "kubernetes"

// Build directories.
require.Nil(t, os.MkdirAll(filepath.Join(baseTmpDir, bazelBuildPath), os.ModePerm))
require.Nil(t, os.MkdirAll(filepath.Join(baseTmpDir, dockerBuildPath), os.ModePerm))
Expand Down Expand Up @@ -145,7 +144,7 @@ func TestBuiltWithBazel(t *testing.T) {
[]byte("test"),
os.FileMode(0644),
))
dockerFile := filepath.Join(dockerTmpDir, "_output/release-tars/1.1.1.tar.gz")
dockerFile := filepath.Join(dockerTmpDir, "_output/release-tars/kubernetes.tar.gz")
require.Nil(t, ioutil.WriteFile(
dockerFile,
[]byte("test"),
Expand All @@ -155,8 +154,7 @@ func TestBuiltWithBazel(t *testing.T) {
defer cleanupTmps(t, baseTmpDir, bazelTmpDir, dockerTmpDir)

type args struct {
path string
release string
path string
}
type want struct {
r bool
Expand All @@ -168,8 +166,7 @@ func TestBuiltWithBazel(t *testing.T) {
}{
"DockerMoreRecent": {
args: args{
path: baseTmpDir,
release: release,
path: baseTmpDir,
},
want: want{
r: false,
Expand All @@ -178,8 +175,7 @@ func TestBuiltWithBazel(t *testing.T) {
},
"DockerOnly": {
args: args{
path: baseTmpDir,
release: release,
path: dockerTmpDir,
},
want: want{
r: false,
Expand All @@ -188,8 +184,7 @@ func TestBuiltWithBazel(t *testing.T) {
},
"BazelOnly": {
args: args{
path: bazelTmpDir,
release: release,
path: bazelTmpDir,
},
want: want{
r: true,
Expand All @@ -200,7 +195,7 @@ func TestBuiltWithBazel(t *testing.T) {

for name, tc := range cases {
t.Run(name, func(t *testing.T) {
res, err := BuiltWithBazel(tc.args.path, tc.args.release)
res, err := BuiltWithBazel(tc.args.path)
require.Equal(t, tc.want.err, err)
require.Equal(t, tc.want.r, res)
})
Expand Down Expand Up @@ -258,28 +253,35 @@ func TestReadBazelVersion(t *testing.T) {
}

func TestReadDockerVersion(t *testing.T) {
baseTmpDir, err := ioutil.TempDir("", "")
baseTmpDir, err := ioutil.TempDir("", "ahhh")
require.Nil(t, err)

release := "kubernetes"
version := "1.1.1"
versionBytes := []byte("1.1.1\n")

// Build directories.
require.Nil(t, os.MkdirAll(filepath.Join(baseTmpDir, dockerBuildPath), os.ModePerm))
require.Nil(t, os.MkdirAll(filepath.Join(baseTmpDir, dockerBuildPath, release), os.ModePerm))

var b bytes.Buffer

// Create version file
err = ioutil.WriteFile(filepath.Join(baseTmpDir, dockerBuildPath, dockerVersionPath), versionBytes, os.FileMode(0644))
require.Nil(t, err)

// Create a zip archive.
gz := gzip.NewWriter(&b)
tw := tar.NewWriter(gz)
require.Nil(t, tw.WriteHeader(&tar.Header{
Name: filepath.Join(release, dockerVersionPath),
Size: int64(len(version)),
Name: dockerVersionPath,
Size: int64(len(versionBytes)),
}))
_, err = tw.Write([]byte(version))
versionFile, err := os.Open(filepath.Join(baseTmpDir, dockerBuildPath, dockerVersionPath))
require.Nil(t, err)
_, err = io.Copy(tw, versionFile)
require.Nil(t, err)
require.Nil(t, gz.Close())
require.Nil(t, tw.Close())
require.Nil(t, gz.Close())
require.Nil(t, ioutil.WriteFile(
filepath.Join(baseTmpDir, dockerBuildPath, "kubernetes.tar.gz"),
b.Bytes(),
Expand All @@ -289,8 +291,7 @@ func TestReadDockerVersion(t *testing.T) {
defer cleanupTmps(t, baseTmpDir)

type args struct {
path string
releaseKind string
path string
}
type want struct {
r string
Expand All @@ -302,18 +303,16 @@ func TestReadDockerVersion(t *testing.T) {
}{
"ReadVersion": {
args: args{
path: baseTmpDir,
releaseKind: release,
path: baseTmpDir,
},
want: want{
r: version,
rErr: false,
},
},
"NoVersionFile": {
"ReadVersionError": {
args: args{
path: baseTmpDir,
releaseKind: "notarelease",
path: "notadir",
},
want: want{
rErr: true,
Expand All @@ -323,7 +322,7 @@ func TestReadDockerVersion(t *testing.T) {

for name, tc := range cases {
t.Run(name, func(t *testing.T) {
res, err := ReadDockerizedVersion(tc.args.path, tc.args.releaseKind)
res, err := ReadDockerizedVersion(tc.args.path)
require.Equal(t, tc.want.rErr, err != nil)
require.Equal(t, tc.want.r, res)
})
Expand Down