Skip to content

Commit

Permalink
[7.17](backport #33894) Add support for excluded paths in packaging (#…
Browse files Browse the repository at this point in the history
…33900)

* Add support for excluded paths in packaging (#33894)

* Add support for excluded paths in packaging

After an update in heartbeat we have have a path like
`usr/share/heartbeat/.node/node/lib/node_modules/@elastic/synthetics/templates/lightweight/heartbeat.yml`
which matches the `configFilePattern` which causes a permission check
which the file does not satisfy. It has nothing to do with the actual
heartbeat configuration file.

* Fix linting issues

* Fix one more linting issue

(cherry picked from commit 3198a68)

# Conflicts:
#	dev-tools/packaging/package_test.go

* Resolve merge conflicts.

Co-authored-by: Denis <[email protected]>
Co-authored-by: Craig MacKenzie <[email protected]>
  • Loading branch information
3 people authored Nov 30, 2022
1 parent b7cd8ba commit 58f4643
Showing 1 changed file with 19 additions and 3 deletions.
22 changes: 19 additions & 3 deletions dev-tools/packaging/package_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ import (
"strings"
"testing"

"errors"

"github.com/blakesmith/ar"
rpm "github.com/cavaliercoder/go-rpm"
)
Expand All @@ -48,6 +50,7 @@ const (
)

var (
excludedPathsPattern = regexp.MustCompile(`node_modules`)
configFilePattern = regexp.MustCompile(`.*beat\.yml$|apm-server\.yml|elastic-agent\.yml$`)
manifestFilePattern = regexp.MustCompile(`manifest.yml`)
modulesDirPattern = regexp.MustCompile(`module/.+`)
Expand Down Expand Up @@ -528,6 +531,9 @@ func readRPM(rpmFile string) (*packageFile, *rpm.PackageFile, error) {
pf := &packageFile{Name: filepath.Base(rpmFile), Contents: map[string]packageEntry{}}

for _, file := range contents {
if excludedPathsPattern.MatchString(file.Name()) {
continue
}
pe := packageEntry{
File: file.Name(),
Mode: file.Mode(),
Expand Down Expand Up @@ -555,7 +561,7 @@ func readDeb(debFile string, dataBuffer *bytes.Buffer) (*packageFile, error) {
for {
header, err := arReader.Next()
if err != nil {
if err == io.EOF {
if errors.Is(err, io.EOF) {
break
}
return nil, err
Expand Down Expand Up @@ -606,12 +612,16 @@ func readTarContents(tarName string, data io.Reader) (*packageFile, error) {
for {
header, err := tarReader.Next()
if err != nil {
if err == io.EOF {
if errors.Is(err, io.EOF) {
break
}
return nil, err
}

if excludedPathsPattern.MatchString(header.Name) {
continue
}

p.Contents[header.Name] = packageEntry{
File: header.Name,
UID: header.Uid,
Expand All @@ -632,6 +642,9 @@ func readZip(zipFile string) (*packageFile, error) {

p := &packageFile{Name: filepath.Base(zipFile), Contents: map[string]packageEntry{}}
for _, f := range r.File {
if excludedPathsPattern.MatchString(f.Name) {
continue
}
p.Contents[f.Name] = packageEntry{
File: f.Name,
Mode: f.Mode(),
Expand Down Expand Up @@ -662,7 +675,7 @@ func readDocker(dockerFile string) (*packageFile, *dockerInfo, error) {
for {
header, err := tarReader.Next()
if err != nil {
if err == io.EOF {
if errors.Is(err, io.EOF) {
break
}
return nil, nil, err
Expand Down Expand Up @@ -708,6 +721,9 @@ func readDocker(dockerFile string) (*packageFile, *dockerInfo, error) {
if strings.HasPrefix("/"+name, workingDir) || "/"+name == entrypoint {
p.Contents[name] = entry
}
if excludedPathsPattern.MatchString(name) {
continue
}
// Add also licenses
for _, licenseFile := range licenseFiles {
if strings.Contains(name, licenseFile) {
Expand Down

0 comments on commit 58f4643

Please sign in to comment.