Skip to content
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
46 changes: 32 additions & 14 deletions pkg/kubepkg/kubepkg.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,19 +106,16 @@ type impl struct{}
//counterfeiter:generate . Impl
type Impl interface {
RunSuccessWithWorkDir(workDir, cmd string, args ...string) error
RunSuccess(workDir, cmd string, args ...string) error
Releases(owner, repo string, includePrereleases bool) ([]*gogithub.RepositoryRelease, error)
GetKubeVersion(versionType release.VersionType) (string, error)
ReadFile(string) ([]byte, error)
WriteFile(string, []byte, os.FileMode) error
}

func (i *impl) RunSuccessWithWorkDir(workDir, cmd string, args ...string) error {
return command.NewWithWorkDir(workDir, cmd, args...).RunSuccess()
}

func (i *impl) RunSuccess(workDir, cmd string, args ...string) error {
return command.New(cmd, args...).RunSuccess()
}

func (i *impl) Releases(owner, repo string, includePrereleases bool) ([]*gogithub.RepositoryRelease, error) {
return github.New().Releases(owner, repo, includePrereleases)
}
Expand All @@ -127,6 +124,14 @@ func (i *impl) GetKubeVersion(versionType release.VersionType) (string, error) {
return release.NewVersion().GetKubeVersion(versionType)
}

func (i *impl) ReadFile(filename string) ([]byte, error) {
return ioutil.ReadFile(filename)
}

func (i *impl) WriteFile(filename string, data []byte, perm os.FileMode) error {
return ioutil.WriteFile(filename, data, perm)
}

type Build struct {
Type options.BuildType
Package string
Expand Down Expand Up @@ -371,18 +376,30 @@ func (c *Client) run(bc *buildConfig) error {
return errors.Wrap(err, "running debian package build")
}

fileName := fmt.Sprintf("%s_%s-%s_%s.deb", bc.Package, bc.Version, bc.Revision, bc.BuildArch)
dstParts := []string{"bin", string(bc.Channel), fileName}
fileName := fmt.Sprintf(
"%s_%s-%s_%s.deb",
bc.Package,
bc.Version,
bc.Revision,
bc.BuildArch,
)

dstPath := filepath.Join(dstParts...)
if err := os.MkdirAll(dstPath, os.FileMode(0777)); err != nil {
return err
dstPath := filepath.Join("bin", string(bc.Channel), fileName)
logrus.Infof("Using package destination path %s", dstPath)

if err := os.MkdirAll(filepath.Dir(dstPath), os.FileMode(0o777)); err != nil {
return errors.Wrapf(err, "creating %s", filepath.Dir(dstPath))
}

if err := c.impl.RunSuccess(
"mv", filepath.Join(specDir, fileName), dstPath,
); err != nil {
return err
srcPath := filepath.Join(specDir, fileName)
input, err := c.impl.ReadFile(srcPath)
if err != nil {
return errors.Wrapf(err, "reading %s", srcPath)
}

err = c.impl.WriteFile(dstPath, input, os.FileMode(0o644))
if err != nil {
return errors.Wrapf(err, "writing file to %s", dstPath)
}

logrus.Infof("Successfully built %s", dstPath)
Expand Down Expand Up @@ -587,6 +604,7 @@ func GetDependencies(packageDef *PackageDefinition) (map[string]string, error) {
deps["kubelet"] = minimumKubernetesVersion
deps["kubectl"] = minimumKubernetesVersion
deps["cri-tools"] = minimumCRIToolsVersion
deps["kubernetes-cni"] = MinimumCNIVersion // deb based kubeadm still requires kubernetes-cni
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You'll need to restore variable references in the package templates as well. They should roughly match what was removed in #1330.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, when I'm now thinking about this: the kubelet package already provides kubernetes-cni so we may remove it completely from the deb specs. I'll change the PR to propose this approach.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The packages should exactly match what's defined in packages/.
Let's just fix the tests here. No spec refactors.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay I reverted my previous change 👍

You'll need to restore variable references in the package templates as well. They should roughly match what was removed in #1330.

Which references do you mean? I'm not sure which paths needs further adaptions. 🤔

}

return deps, nil
Expand Down
23 changes: 18 additions & 5 deletions pkg/kubepkg/kubepkg_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -127,9 +127,21 @@ func TestWalkBuildsSuccessDeb(t *testing.T) {
require.Nil(t, err)
}

func TestWalkBuildsFailureDebMvFailed(t *testing.T) {
func TestWalkBuildsFailureReadFileFailed(t *testing.T) {
sut, cleanup, mock := sutWithTemplateDir(t, nil, options.BuildDeb)
mock.RunSuccessReturns(err)
mock.ReadFileReturns(nil, err)
defer cleanup()

builds, err := sut.ConstructBuilds()
require.Nil(t, err)

err = sut.WalkBuilds(builds)
require.NotNil(t, err)
}

func TestWalkBuildsFailureWriteFileFailed(t *testing.T) {
sut, cleanup, mock := sutWithTemplateDir(t, nil, options.BuildDeb)
mock.WriteFileReturns(err)
defer cleanup()

builds, err := sut.ConstructBuilds()
Expand Down Expand Up @@ -461,9 +473,10 @@ func TestGetDependenciesSuccess(t *testing.T) {
name: "get kubeadm deps",
packageName: "kubeadm",
expected: map[string]string{
"kubelet": "1.13.0",
"kubectl": "1.13.0",
"cri-tools": "1.13.0",
"kubelet": "1.13.0",
"kubectl": "1.13.0",
"cri-tools": "1.13.0",
"kubernetes-cni": "0.8.6",
},
},
}
Expand Down
Loading