Skip to content

Commit

Permalink
Merge pull request #57 from aiyengar2/add_omit_build_metadata
Browse files Browse the repository at this point in the history
Add ability to omitBuildMetadata on repository
  • Loading branch information
aiyengar2 authored Aug 18, 2021
2 parents 1aa365a + 28de10b commit e11e8fb
Show file tree
Hide file tree
Showing 6 changed files with 15 additions and 11 deletions.
5 changes: 3 additions & 2 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ func main() {
Name: "charts",
Usage: "Create a local chart archive of your finalized chart for testing",
Action: generateCharts,
Flags: []cli.Flag{packageFlag},
Flags: []cli.Flag{packageFlag, configFlag},
},
{
Name: "clean",
Expand Down Expand Up @@ -150,8 +150,9 @@ func generateCharts(c *cli.Context) {
}
// Generate charts
packages := getPackages()
chartsScriptOptions := parseScriptOptions()
for _, p := range packages {
if err := p.GenerateCharts(); err != nil {
if err := p.GenerateCharts(chartsScriptOptions.OmitBuildMetadataOnExport); err != nil {
logrus.Fatal(err)
}
}
Expand Down
4 changes: 2 additions & 2 deletions pkg/charts/additionalchart.go
Original file line number Diff line number Diff line change
Expand Up @@ -186,11 +186,11 @@ func (c *AdditionalChart) GeneratePatch(rootFs, pkgFs billy.Filesystem) error {
}

// GenerateChart generates the chart and stores it in the assets and charts directory
func (c *AdditionalChart) GenerateChart(rootFs, pkgFs billy.Filesystem, packageVersion *int, version *semver.Version, packageAssetsDirpath, packageChartsDirpath string) error {
func (c *AdditionalChart) GenerateChart(rootFs, pkgFs billy.Filesystem, packageVersion *int, version *semver.Version, packageAssetsDirpath, packageChartsDirpath string, omitBuildMetadataOnExport bool) error {
if c.upstreamChartVersion == nil {
return fmt.Errorf("Cannot generate chart since it has never been prepared: upstreamChartVersion is not set")
}
if err := helm.ExportHelmChart(rootFs, pkgFs, c.WorkingDir, packageVersion, version, *c.upstreamChartVersion, packageAssetsDirpath, packageChartsDirpath); err != nil {
if err := helm.ExportHelmChart(rootFs, pkgFs, c.WorkingDir, packageVersion, version, *c.upstreamChartVersion, packageAssetsDirpath, packageChartsDirpath, omitBuildMetadataOnExport); err != nil {
return fmt.Errorf("Encountered error while trying to export Helm chart for %s: %s", c.WorkingDir, err)
}
return nil
Expand Down
4 changes: 2 additions & 2 deletions pkg/charts/chart.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,11 +82,11 @@ func (c *Chart) GeneratePatch(rootFs, pkgFs billy.Filesystem) error {
}

// GenerateChart generates the chart and stores it in the assets and charts directory
func (c *Chart) GenerateChart(rootFs, pkgFs billy.Filesystem, packageVersion *int, version *semver.Version, packageAssetsDirpath, packageChartsDirpath string) error {
func (c *Chart) GenerateChart(rootFs, pkgFs billy.Filesystem, packageVersion *int, version *semver.Version, packageAssetsDirpath, packageChartsDirpath string, omitBuildMetadataOnExport bool) error {
if c.upstreamChartVersion == nil {
return fmt.Errorf("Cannot generate chart since it has never been prepared: upstreamChartVersion is not set")
}
if err := helm.ExportHelmChart(rootFs, pkgFs, c.WorkingDir, packageVersion, version, *c.upstreamChartVersion, packageAssetsDirpath, packageChartsDirpath); err != nil {
if err := helm.ExportHelmChart(rootFs, pkgFs, c.WorkingDir, packageVersion, version, *c.upstreamChartVersion, packageAssetsDirpath, packageChartsDirpath, omitBuildMetadataOnExport); err != nil {
return fmt.Errorf("Encountered error while trying to export Helm chart for %s: %s", c.WorkingDir, err)
}
return nil
Expand Down
6 changes: 3 additions & 3 deletions pkg/charts/package.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ func (p *Package) GeneratePatch() error {
}

// GenerateCharts creates Helm chart archives for each chart after preparing it
func (p *Package) GenerateCharts() error {
func (p *Package) GenerateCharts(omitBuildMetadataOnExport bool) error {
if p.DoNotRelease {
logrus.Infof("Skipping package marked doNotRelease")
return nil
Expand All @@ -98,12 +98,12 @@ func (p *Package) GenerateCharts() error {
packageAssetsDirpath := filepath.Join(path.RepositoryAssetsDir, p.Name)
packageChartsDirpath := filepath.Join(path.RepositoryChartsDir, p.Name)
// Add PackageVersion to format
err := p.Chart.GenerateChart(p.rootFs, p.fs, p.PackageVersion, p.Version, packageAssetsDirpath, packageChartsDirpath)
err := p.Chart.GenerateChart(p.rootFs, p.fs, p.PackageVersion, p.Version, packageAssetsDirpath, packageChartsDirpath, omitBuildMetadataOnExport)
if err != nil {
return fmt.Errorf("Encountered error while exporting main chart: %s", err)
}
for _, additionalChart := range p.AdditionalCharts {
err = additionalChart.GenerateChart(p.rootFs, p.fs, p.PackageVersion, p.Version, packageAssetsDirpath, packageChartsDirpath)
err = additionalChart.GenerateChart(p.rootFs, p.fs, p.PackageVersion, p.Version, packageAssetsDirpath, packageChartsDirpath, omitBuildMetadataOnExport)
if err != nil {
return fmt.Errorf("Encountered error while exporting %s: %s", additionalChart.WorkingDir, err)
}
Expand Down
4 changes: 2 additions & 2 deletions pkg/helm/export.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ var (
// helmChartPath is a relative path (rooted at the package level) that contains the chart.
// packageAssetsPath is a relative path (rooted at the repository level) where the generated chart archive will be placed
// packageChartsPath is a relative path (rooted at the repository level) where the generated chart will be placed
func ExportHelmChart(rootFs, fs billy.Filesystem, helmChartPath string, packageVersion *int, version *semver.Version, upstreamChartVersion, packageAssetsDirpath, packageChartsDirpath string) error {
func ExportHelmChart(rootFs, fs billy.Filesystem, helmChartPath string, packageVersion *int, version *semver.Version, upstreamChartVersion, packageAssetsDirpath, packageChartsDirpath string, omitBuildMetadata bool) error {
// Try to load the chart to see if it can be exported
absHelmChartPath := filesystem.GetAbsPath(fs, helmChartPath)
chart, err := helmLoader.Load(absHelmChartPath)
Expand All @@ -51,7 +51,7 @@ func ExportHelmChart(rootFs, fs billy.Filesystem, helmChartPath string, packageV
chartVersionSemver.Patch = PatchNumMultiplier*chartVersionSemver.Patch + uint64(*packageVersion)
}

if len(upstreamChartVersion) > 0 && upstreamChartVersion != chartVersionSemver.String() {
if !omitBuildMetadata && len(upstreamChartVersion) > 0 && upstreamChartVersion != chartVersionSemver.String() {
// Add buildMetadataFlag for forked charts
chartVersionSemver.Build = append(chartVersionSemver.Build, fmt.Sprintf("up%s", upstreamChartVersion))
}
Expand Down
3 changes: 3 additions & 0 deletions pkg/options/script.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ type ChartsScriptOptions struct {
HelmRepoConfiguration `yaml:"helmRepo"`
// Template can be 'staging' or 'live'
Template string `yaml:"template"`
// OmitBuildMetadataOnExport instructs the scripts to not add in a +up build metadata flag for forked charts
// If false, any forked chart whose version differs from the original source version will have the version VERSION+upORIGINAL_VERSION
OmitBuildMetadataOnExport bool `yaml:"omitBuildMetadataOnExport"`
}

// ValidateOptions represent any options that are configurable when validating a chart
Expand Down

0 comments on commit e11e8fb

Please sign in to comment.