Skip to content
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

[RPM/DEB] Changes to binary distribution #6638

Open
wants to merge 53 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
b937799
mark and skip flaky TestOTelManager_Run
michalpristas Nov 22, 2024
ac0cce2
Merge branch 'main' of github.com:elastic/elastic-agent
michalpristas Nov 27, 2024
42c4611
Merge branch 'main' of github.com:elastic/elastic-agent
michalpristas Dec 4, 2024
326add2
Merge branch 'main' of github.com:elastic/elastic-agent
michalpristas Dec 19, 2024
fa83554
Merge branch 'main' of github.com:elastic/elastic-agent
michalpristas Jan 3, 2025
a6dc99b
Merge branch 'main' of github.com:elastic/elastic-agent
michalpristas Jan 9, 2025
d23268c
basic works
michalpristas Jan 10, 2025
9b7e08f
zip works
michalpristas Jan 15, 2025
1919511
cleanup
michalpristas Jan 15, 2025
a99e9e6
ut for componentsForFLavor and subpathsForComponent
michalpristas Jan 15, 2025
a119e5a
ut for componentsForFLavor and subpathsForComponent
michalpristas Jan 15, 2025
33352ea
TestAllowedSubpathsForFlavor
michalpristas Jan 15, 2025
ffd57b1
TestSkipComponentsPathWithSubpathsFn
michalpristas Jan 15, 2025
4016c44
TestSkipComponentsPathFn
michalpristas Jan 15, 2025
350b087
TestSkipComponentsPathFn
michalpristas Jan 15, 2025
e0f3aef
TestParseComponentFiles
michalpristas Jan 15, 2025
cd417c8
TestFlavor
michalpristas Jan 15, 2025
41ee06a
TestSpecsForFlavor
michalpristas Jan 15, 2025
b32f0c1
fix unpack and tests
michalpristas Jan 15, 2025
6055adb
imports
michalpristas Jan 15, 2025
863adc5
integ tests
michalpristas Jan 16, 2025
b44902e
flavours in file
michalpristas Jan 17, 2025
822e308
Merge branch 'main' of github.com:elastic/elastic-agent into feat/bin…
michalpristas Jan 17, 2025
aadc6fe
lint
michalpristas Jan 17, 2025
51bd2c6
changelog
michalpristas Jan 17, 2025
67ed4a7
unpack UTs
michalpristas Jan 20, 2025
0f50031
spec files updated
michalpristas Jan 20, 2025
8a60a47
Merge branch 'main' of github.com:elastic/elastic-agent into feat/bin…
michalpristas Jan 20, 2025
a095684
handle windows correctly in UTs
michalpristas Jan 20, 2025
7cf5147
linter
michalpristas Jan 20, 2025
01cef9c
install server for fleet server tests
michalpristas Jan 20, 2025
0696c75
Merge branch 'main' of github.com:elastic/elastic-agent into feat/bin…
michalpristas Jan 20, 2025
6c39e92
install server for fleet server tests
michalpristas Jan 20, 2025
724e852
flavors in manifest
michalpristas Jan 21, 2025
255a8dc
Merge branch 'main' of github.com:elastic/elastic-agent into feat/bin…
michalpristas Jan 21, 2025
5117a62
Update internal/pkg/agent/application/upgrade/upgrade.go
michalpristas Jan 23, 2025
81e24e5
specs for flavor returning no error
michalpristas Jan 23, 2025
492bd35
Merge branch 'feat/binary-distr' of github.com:michalpristas/elastic-…
michalpristas Jan 23, 2025
1bdff99
Merge branch 'main' of github.com:elastic/elastic-agent into feat/bin…
michalpristas Jan 23, 2025
dc35611
lint
michalpristas Jan 23, 2025
8076e9f
fixed UT
michalpristas Jan 23, 2025
06659a0
Merge branch 'main' into feat/binary-distr
michalpristas Jan 27, 2025
af2a1c2
fix integ
michalpristas Jan 27, 2025
a3c5484
rpm
michalpristas Jan 28, 2025
ba96f31
Merge branch 'main' of github.com:elastic/elastic-agent into feat/bin…
michalpristas Jan 28, 2025
77ee32a
code review: small refactors, error wraps
michalpristas Jan 28, 2025
43436d2
Merge branch 'main' of github.com:elastic/elastic-agent into feat/bin…
michalpristas Jan 29, 2025
b297b06
Merge branch 'feat/binary-distr' of github.com:michalpristas/elastic-…
michalpristas Jan 29, 2025
6f8d3ee
working
michalpristas Jan 29, 2025
6c2855c
cleanup
michalpristas Jan 30, 2025
795846f
conflicts
michalpristas Jan 30, 2025
63ed288
lint
michalpristas Jan 30, 2025
5808a88
Merge branch 'main' into feat/binary-rpm
michalpristas Jan 31, 2025
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
2 changes: 2 additions & 0 deletions dev-tools/packaging/templates/linux/postinstall.sh.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ fi
echo "create symlink "$symlink" to "$new_agent_dir/elastic-agent""
ln -s "$new_agent_dir/elastic-agent" "$symlink"

$new_agent_dir/elastic-agent apply-flavor

# reload systemctl and then restart service
echo "systemd enable/restart elastic-agent"
systemctl daemon-reload 2> /dev/null
Expand Down
16 changes: 16 additions & 0 deletions dev-tools/packaging/templates/linux/preinstall.sh.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ set -e
commit_hash="{{ commit_short }}"
version_dir="{{agent_package_version}}{{snapshot_suffix}}"
symlink="/usr/share/elastic-agent/bin/elastic-agent"
flavor_file="/var/lib/elastic-agent/.flavor"
new_agent_dir="/var/lib/elastic-agent/data/elastic-agent-$version_dir-$commit_hash"
old_agent_dir=""

Expand Down Expand Up @@ -43,4 +44,19 @@ if test -L "$symlink"; then
fi
else
echo "no previous installation found"

# create dir in case it does not exist
mkdir -p "$new_agent_dir"

# 2 is upgrade for Fedora, do not upgrade file when upgrading and file exists
if [[ "$1" != "2" ]]; then
if [[ -n "${ELASTIC_AGENT_FLAVOR}" ]]; then
# Do not modify the file if it already exists
echo "${ELASTIC_AGENT_FLAVOR}" > "$flavor_file"
else
# Defaults to basic installation
echo "basic" > "$flavor_file"
fi
fi
fi

59 changes: 59 additions & 0 deletions internal/pkg/agent/cmd/apply_flavor.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
// or more contributor license agreements. Licensed under the Elastic License 2.0;
// you may not use this file except in compliance with the Elastic License 2.0.

package cmd

import (
"errors"
"fmt"
"os"
"path/filepath"

"github.com/spf13/cobra"

"github.com/elastic/elastic-agent/internal/pkg/agent/application/paths"
"github.com/elastic/elastic-agent/internal/pkg/agent/install"
"github.com/elastic/elastic-agent/internal/pkg/cli"
v1 "github.com/elastic/elastic-agent/pkg/api/v1"
)

func newApplyFlavorCommandWithArgs(_ []string, streams *cli.IOStreams) *cobra.Command {
cmd := &cobra.Command{
Use: "apply-flavor",
Short: "Apply Flavor cleans up unnecessary components from agent installation directory",
Run: func(c *cobra.Command, _ []string) {
if err := applyCmd(); err != nil {
fmt.Fprintf(streams.Err, "Error: %v\n%s\n", err, troubleshootMessage())
logExternal(fmt.Sprintf("%s apply flavor failed: %s", paths.BinaryName, err))
os.Exit(1)
}
},
Hidden: true,
}

return cmd
}

func applyCmd() error {
topPath := paths.Top()
detectedFlavor, err := install.UsedFlavor(topPath, "")
if err != nil {
if errors.Is(err, os.ErrNotExist) {
return nil
}
return err
}
if detectedFlavor == "" {
return nil
}

versionedHome := paths.VersionedHome(topPath)
manifestFilePath := filepath.Join(versionedHome, v1.ManifestFileName)
flavor, err := install.Flavor(detectedFlavor, manifestFilePath, nil)
if err != nil {
return err
}

return install.ApplyFlavor(versionedHome, flavor)
}
1 change: 1 addition & 0 deletions internal/pkg/agent/cmd/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ func NewCommandWithArgs(args []string, streams *cli.IOStreams) *cobra.Command {
addCommandIfNotNil(cmd, newComponentCommandWithArgs(args, streams))
addCommandIfNotNil(cmd, newLogsCommandWithArgs(args, streams))
addCommandIfNotNil(cmd, newOtelCommandWithArgs(args, streams))
addCommandIfNotNil(cmd, newApplyFlavorCommandWithArgs(args, streams))

// windows special hidden sub-command (only added on Windows)
reexec := newReExecWindowsCommand(args, streams)
Expand Down
13 changes: 13 additions & 0 deletions internal/pkg/agent/install/.flavors
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
basic:
- agentbeat
- endpoint-security
- pf-host-agent
servers:
- agentbeat
- endpoint-security
- pf-host-agent
- cloudbeat
- apm-server
- fleet-server
- pf-elastic-symbolizer
- pf-elastic-collector
2 changes: 1 addition & 1 deletion internal/pkg/agent/install/flavors.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ func UsedFlavor(topPath, defaultFlavor string) (string, error) {
return "", err
}

return string(content), nil
return strings.TrimSpace(string(content)), nil
}

func Flavor(detectedFlavor string, registryPath string, flavorsRegistry map[string][]string) (FlavorDefinition, error) {
Expand Down
Loading