This repository has been archived by the owner on Sep 17, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 42
chore: refactor build artifacts methods #689
Merged
mdelapenya
merged 43 commits into
elastic:master
from
mdelapenya:668-refactor-build-artifact-methods
Feb 8, 2021
Merged
chore: refactor build artifacts methods #689
mdelapenya
merged 43 commits into
elastic:master
from
mdelapenya:668-refactor-build-artifact-methods
Feb 8, 2021
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
kuisathaverat
approved these changes
Feb 2, 2021
💚 Build Succeeded
Expand to view the summary
Build stats
Test stats 🧪
Trends 🧪💚 Flaky test reportTests succeeded. Expand to view the summary
Test stats 🧪
|
cachedout
approved these changes
Feb 2, 2021
cachedout
approved these changes
Feb 2, 2021
Local builds uses the same as the CI
In the case we are using a PR , where the version is "pr-12345", then we need to use the base version of the product
mdelapenya
commented
Feb 5, 2021
Comment on lines
+273
to
+275
// i.e. GetElasticArtifactURL("elastic-agent-$VERSION-amd64.deb", "elastic-agent", "$VERSION") | ||
// i.e. GetElasticArtifactURL("elastic-agent-$VERSION-x86_64.rpm", "elastic-agent","$VERSION") | ||
// i.e. GetElasticArtifactURL("elastic-agent-$VERSION-linux-amd64.tar.gz", "elastic-agent","$VERSION") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This change will simplify maintenance in backports
mdelapenya
commented
Feb 8, 2021
@@ -231,21 +233,6 @@ func (imts *IngestManagerTestSuite) processStateOnTheHost(process string, state | |||
return checkProcessStateOnTheHost(containerName, process, state) | |||
} | |||
|
|||
// checkElasticAgentVersion returns a fallback version (agentVersionBase) if the version set by the environment is empty | |||
func checkElasticAgentVersion(version string) string { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Moved (and abstracted) to utils
mdelapenya
commented
Feb 8, 2021
This is ready. I'm going to merge it right after the CI passes. |
mdelapenya
added a commit
to mdelapenya/e2e-testing
that referenced
this pull request
Feb 8, 2021
* feat: use local beats directory for elastic-agent installers * docs: document BEATS_LOCAL_PATH variable * chore: check that the local file exists * chore: add unit tests for the BEATS_LOCAL_PATH variable * chore: simplify logic after test coverage * chore: enrich test name * chore: rename test * chore: move default values to the end of the descriptions * chore: add a helper method to build artifact names * chore: build artifact name only once * chore: pass the entire filename to calculate the GCP bucket coordinates * chore: simplify method signature, as the file name is not changed within the method * chore: use buildArtifactName method * chore: pass filename to helper methods to avoid unnecessary calculations * chore: rename variable for consistency * chore: add license headers * chore: use lowercase comparison for artifact name * chore: build artifact changes from Beats CI to Elastic's artifactory * fix: support building artifact names from local Local builds uses the same as the CI * WIP * fix: rename docker-ubi8 installer key * chore: pass a fallback version when building artifact name In the case we are using a PR , where the version is "pr-12345", then we need to use the base version of the product * chore: remove log * fix: do not override artifact name in Docker installer * feat: support consuming the docker images from snapshots or local in standalone mode * chore: add unit tests for fetching docker images from local Beats repo * chore: apply version to Docker installer * chore: support loading metricbeat image from local repository * chore: exrtact loadImage method to docker helper * feat: support consuming CI artifacts in metricbeat * fix: remove non-existent field from logrus log * chore: extract download logic to helper methods We are discarding the stale parameter, because the stale version is set when the installer is required, so we simply download what is requested * chore: fix typo * chore: check agent version before setting it * chore: use the docker client to load the image instead of the docker binary * chore: add unit tests for check method * chore: pass fallback version to check method * fix: properly calculate version for PRs * chore: move PR check logic to a method * chore: make test independent of maintenance branch # Conflicts: # e2e/_suites/fleet/services.go # e2e/utils.go
mdelapenya
added a commit
to mdelapenya/e2e-testing
that referenced
this pull request
Feb 8, 2021
* feat: use local beats directory for elastic-agent installers * docs: document BEATS_LOCAL_PATH variable * chore: check that the local file exists * chore: add unit tests for the BEATS_LOCAL_PATH variable * chore: simplify logic after test coverage * chore: enrich test name * chore: rename test * chore: move default values to the end of the descriptions * chore: add a helper method to build artifact names * chore: build artifact name only once * chore: pass the entire filename to calculate the GCP bucket coordinates * chore: simplify method signature, as the file name is not changed within the method * chore: use buildArtifactName method * chore: pass filename to helper methods to avoid unnecessary calculations * chore: rename variable for consistency * chore: add license headers * chore: use lowercase comparison for artifact name * chore: build artifact changes from Beats CI to Elastic's artifactory * fix: support building artifact names from local Local builds uses the same as the CI * WIP * fix: rename docker-ubi8 installer key * chore: pass a fallback version when building artifact name In the case we are using a PR , where the version is "pr-12345", then we need to use the base version of the product * chore: remove log * fix: do not override artifact name in Docker installer * feat: support consuming the docker images from snapshots or local in standalone mode * chore: add unit tests for fetching docker images from local Beats repo * chore: apply version to Docker installer * chore: support loading metricbeat image from local repository * chore: exrtact loadImage method to docker helper * feat: support consuming CI artifacts in metricbeat * fix: remove non-existent field from logrus log * chore: extract download logic to helper methods We are discarding the stale parameter, because the stale version is set when the installer is required, so we simply download what is requested * chore: fix typo * chore: check agent version before setting it * chore: use the docker client to load the image instead of the docker binary * chore: add unit tests for check method * chore: pass fallback version to check method * fix: properly calculate version for PRs * chore: move PR check logic to a method * chore: make test independent of maintenance branch # Conflicts: # e2e/_suites/fleet/services.go # e2e/utils.go
mdelapenya
added a commit
to mdelapenya/e2e-testing
that referenced
this pull request
Feb 8, 2021
* feat: use local beats directory for elastic-agent installers * docs: document BEATS_LOCAL_PATH variable * chore: check that the local file exists * chore: add unit tests for the BEATS_LOCAL_PATH variable * chore: simplify logic after test coverage * chore: enrich test name * chore: rename test * chore: move default values to the end of the descriptions * chore: add a helper method to build artifact names * chore: build artifact name only once * chore: pass the entire filename to calculate the GCP bucket coordinates * chore: simplify method signature, as the file name is not changed within the method * chore: use buildArtifactName method * chore: pass filename to helper methods to avoid unnecessary calculations * chore: rename variable for consistency * chore: add license headers * chore: use lowercase comparison for artifact name * chore: build artifact changes from Beats CI to Elastic's artifactory * fix: support building artifact names from local Local builds uses the same as the CI * WIP * fix: rename docker-ubi8 installer key * chore: pass a fallback version when building artifact name In the case we are using a PR , where the version is "pr-12345", then we need to use the base version of the product * chore: remove log * fix: do not override artifact name in Docker installer * feat: support consuming the docker images from snapshots or local in standalone mode * chore: add unit tests for fetching docker images from local Beats repo * chore: apply version to Docker installer * chore: support loading metricbeat image from local repository * chore: exrtact loadImage method to docker helper * feat: support consuming CI artifacts in metricbeat * fix: remove non-existent field from logrus log * chore: extract download logic to helper methods We are discarding the stale parameter, because the stale version is set when the installer is required, so we simply download what is requested * chore: fix typo * chore: check agent version before setting it * chore: use the docker client to load the image instead of the docker binary * chore: add unit tests for check method * chore: pass fallback version to check method * fix: properly calculate version for PRs * chore: move PR check logic to a method * chore: make test independent of maintenance branch # Conflicts: # e2e/_suites/fleet/services.go # e2e/utils.go
mdelapenya
added a commit
to mdelapenya/e2e-testing
that referenced
this pull request
Feb 8, 2021
* feat: use local beats directory for elastic-agent installers * docs: document BEATS_LOCAL_PATH variable * chore: check that the local file exists * chore: add unit tests for the BEATS_LOCAL_PATH variable * chore: simplify logic after test coverage * chore: enrich test name * chore: rename test * chore: move default values to the end of the descriptions * chore: add a helper method to build artifact names * chore: build artifact name only once * chore: pass the entire filename to calculate the GCP bucket coordinates * chore: simplify method signature, as the file name is not changed within the method * chore: use buildArtifactName method * chore: pass filename to helper methods to avoid unnecessary calculations * chore: rename variable for consistency * chore: add license headers * chore: use lowercase comparison for artifact name * chore: build artifact changes from Beats CI to Elastic's artifactory * fix: support building artifact names from local Local builds uses the same as the CI * WIP * fix: rename docker-ubi8 installer key * chore: pass a fallback version when building artifact name In the case we are using a PR , where the version is "pr-12345", then we need to use the base version of the product * chore: remove log * fix: do not override artifact name in Docker installer * feat: support consuming the docker images from snapshots or local in standalone mode * chore: add unit tests for fetching docker images from local Beats repo * chore: apply version to Docker installer * chore: support loading metricbeat image from local repository * chore: exrtact loadImage method to docker helper * feat: support consuming CI artifacts in metricbeat * fix: remove non-existent field from logrus log * chore: extract download logic to helper methods We are discarding the stale parameter, because the stale version is set when the installer is required, so we simply download what is requested * chore: fix typo * chore: check agent version before setting it * chore: use the docker client to load the image instead of the docker binary * chore: add unit tests for check method * chore: pass fallback version to check method * fix: properly calculate version for PRs * chore: move PR check logic to a method * chore: make test independent of maintenance branch # Conflicts: # e2e/_suites/fleet/fleet.go # e2e/_suites/fleet/ingest-manager_test.go # e2e/_suites/fleet/installers.go # e2e/_suites/fleet/services.go # e2e/_suites/fleet/services_test.go
mdelapenya
added a commit
to mdelapenya/e2e-testing
that referenced
this pull request
Feb 8, 2021
* feat: use local beats directory for elastic-agent installers * docs: document BEATS_LOCAL_PATH variable * chore: check that the local file exists * chore: add unit tests for the BEATS_LOCAL_PATH variable * chore: simplify logic after test coverage * chore: enrich test name * chore: rename test * chore: move default values to the end of the descriptions * chore: add a helper method to build artifact names * chore: build artifact name only once * chore: pass the entire filename to calculate the GCP bucket coordinates * chore: simplify method signature, as the file name is not changed within the method * chore: use buildArtifactName method * chore: pass filename to helper methods to avoid unnecessary calculations * chore: rename variable for consistency * chore: add license headers * chore: use lowercase comparison for artifact name * chore: build artifact changes from Beats CI to Elastic's artifactory * fix: support building artifact names from local Local builds uses the same as the CI * WIP * fix: rename docker-ubi8 installer key * chore: pass a fallback version when building artifact name In the case we are using a PR , where the version is "pr-12345", then we need to use the base version of the product * chore: remove log * fix: do not override artifact name in Docker installer * feat: support consuming the docker images from snapshots or local in standalone mode * chore: add unit tests for fetching docker images from local Beats repo * chore: apply version to Docker installer * chore: support loading metricbeat image from local repository * chore: exrtact loadImage method to docker helper * feat: support consuming CI artifacts in metricbeat * fix: remove non-existent field from logrus log * chore: extract download logic to helper methods We are discarding the stale parameter, because the stale version is set when the installer is required, so we simply download what is requested * chore: fix typo * chore: check agent version before setting it * chore: use the docker client to load the image instead of the docker binary * chore: add unit tests for check method * chore: pass fallback version to check method * fix: properly calculate version for PRs * chore: move PR check logic to a method * chore: make test independent of maintenance branch # Conflicts: # e2e/_suites/fleet/services_test.go
mdelapenya
added a commit
that referenced
this pull request
Feb 8, 2021
* feat: use local beats directory for elastic-agent installers * docs: document BEATS_LOCAL_PATH variable * chore: check that the local file exists * chore: add unit tests for the BEATS_LOCAL_PATH variable * chore: simplify logic after test coverage * chore: enrich test name * chore: rename test * chore: move default values to the end of the descriptions * chore: add a helper method to build artifact names * chore: build artifact name only once * chore: pass the entire filename to calculate the GCP bucket coordinates * chore: simplify method signature, as the file name is not changed within the method * chore: use buildArtifactName method * chore: pass filename to helper methods to avoid unnecessary calculations * chore: rename variable for consistency * chore: add license headers * chore: use lowercase comparison for artifact name * chore: build artifact changes from Beats CI to Elastic's artifactory * fix: support building artifact names from local Local builds uses the same as the CI * WIP * fix: rename docker-ubi8 installer key * chore: pass a fallback version when building artifact name In the case we are using a PR , where the version is "pr-12345", then we need to use the base version of the product * chore: remove log * fix: do not override artifact name in Docker installer * feat: support consuming the docker images from snapshots or local in standalone mode * chore: add unit tests for fetching docker images from local Beats repo * chore: apply version to Docker installer * chore: support loading metricbeat image from local repository * chore: exrtact loadImage method to docker helper * feat: support consuming CI artifacts in metricbeat * fix: remove non-existent field from logrus log * chore: extract download logic to helper methods We are discarding the stale parameter, because the stale version is set when the installer is required, so we simply download what is requested * chore: fix typo * chore: check agent version before setting it * chore: use the docker client to load the image instead of the docker binary * chore: add unit tests for check method * chore: pass fallback version to check method * fix: properly calculate version for PRs * chore: move PR check logic to a method * chore: make test independent of maintenance branch # Conflicts: # e2e/_suites/fleet/services.go # e2e/utils.go
mdelapenya
added a commit
that referenced
this pull request
Feb 8, 2021
* feat: use local beats directory for elastic-agent installers * docs: document BEATS_LOCAL_PATH variable * chore: check that the local file exists * chore: add unit tests for the BEATS_LOCAL_PATH variable * chore: simplify logic after test coverage * chore: enrich test name * chore: rename test * chore: move default values to the end of the descriptions * chore: add a helper method to build artifact names * chore: build artifact name only once * chore: pass the entire filename to calculate the GCP bucket coordinates * chore: simplify method signature, as the file name is not changed within the method * chore: use buildArtifactName method * chore: pass filename to helper methods to avoid unnecessary calculations * chore: rename variable for consistency * chore: add license headers * chore: use lowercase comparison for artifact name * chore: build artifact changes from Beats CI to Elastic's artifactory * fix: support building artifact names from local Local builds uses the same as the CI * WIP * fix: rename docker-ubi8 installer key * chore: pass a fallback version when building artifact name In the case we are using a PR , where the version is "pr-12345", then we need to use the base version of the product * chore: remove log * fix: do not override artifact name in Docker installer * feat: support consuming the docker images from snapshots or local in standalone mode * chore: add unit tests for fetching docker images from local Beats repo * chore: apply version to Docker installer * chore: support loading metricbeat image from local repository * chore: exrtact loadImage method to docker helper * feat: support consuming CI artifacts in metricbeat * fix: remove non-existent field from logrus log * chore: extract download logic to helper methods We are discarding the stale parameter, because the stale version is set when the installer is required, so we simply download what is requested * chore: fix typo * chore: check agent version before setting it * chore: use the docker client to load the image instead of the docker binary * chore: add unit tests for check method * chore: pass fallback version to check method * fix: properly calculate version for PRs * chore: move PR check logic to a method * chore: make test independent of maintenance branch # Conflicts: # e2e/_suites/fleet/services.go # e2e/utils.go
mdelapenya
added a commit
that referenced
this pull request
Feb 8, 2021
…tifacts methods (#689) backport for 6.8.x (#713) * chore: refactor Fleet upgrade tests (#671) * chore: use nightly annotation for the Upgrade tests * chore: add two make goals for the nightly use cases - e2e-fleet-nightly: run the nightly tests not using CI snapshots. It should download the binaries from the official artifactory. - e2e-fleet-nightly-ci-snapshots: run the nightly tests using the CI snapshots for a specific SHA commit from Beats, downloading them from a GCP bucket * chore: bump elastic-agent stale version * chore: pass version and state state when creating an installer This will allow selecting the proper binary, depending if we are using a stale agent or a regular one. * fix: append snapshot to the stale version when using CI snapshots * fix: check for version aliases with non-stale versions * chore: store current agent version in the test suite struct * chore: make sure the layout is properly created for TAR installer * chore: add make goals for testing fleet use cases * chore: move Make goals to the e2e Makefile * chore: refactor build artifacts methods (#689) * feat: use local beats directory for elastic-agent installers * docs: document BEATS_LOCAL_PATH variable * chore: check that the local file exists * chore: add unit tests for the BEATS_LOCAL_PATH variable * chore: simplify logic after test coverage * chore: enrich test name * chore: rename test * chore: move default values to the end of the descriptions * chore: add a helper method to build artifact names * chore: build artifact name only once * chore: pass the entire filename to calculate the GCP bucket coordinates * chore: simplify method signature, as the file name is not changed within the method * chore: use buildArtifactName method * chore: pass filename to helper methods to avoid unnecessary calculations * chore: rename variable for consistency * chore: add license headers * chore: use lowercase comparison for artifact name * chore: build artifact changes from Beats CI to Elastic's artifactory * fix: support building artifact names from local Local builds uses the same as the CI * WIP * fix: rename docker-ubi8 installer key * chore: pass a fallback version when building artifact name In the case we are using a PR , where the version is "pr-12345", then we need to use the base version of the product * chore: remove log * fix: do not override artifact name in Docker installer * feat: support consuming the docker images from snapshots or local in standalone mode * chore: add unit tests for fetching docker images from local Beats repo * chore: apply version to Docker installer * chore: support loading metricbeat image from local repository * chore: exrtact loadImage method to docker helper * feat: support consuming CI artifacts in metricbeat * fix: remove non-existent field from logrus log * chore: extract download logic to helper methods We are discarding the stale parameter, because the stale version is set when the installer is required, so we simply download what is requested * chore: fix typo * chore: check agent version before setting it * chore: use the docker client to load the image instead of the docker binary * chore: add unit tests for check method * chore: pass fallback version to check method * fix: properly calculate version for PRs * chore: move PR check logic to a method * chore: make test independent of maintenance branch # Conflicts: # e2e/_suites/fleet/services_test.go
mdelapenya
added a commit
that referenced
this pull request
Feb 9, 2021
* feat: use local beats directory for elastic-agent installers * docs: document BEATS_LOCAL_PATH variable * chore: check that the local file exists * chore: add unit tests for the BEATS_LOCAL_PATH variable * chore: simplify logic after test coverage * chore: enrich test name * chore: rename test * chore: move default values to the end of the descriptions * chore: add a helper method to build artifact names * chore: build artifact name only once * chore: pass the entire filename to calculate the GCP bucket coordinates * chore: simplify method signature, as the file name is not changed within the method * chore: use buildArtifactName method * chore: pass filename to helper methods to avoid unnecessary calculations * chore: rename variable for consistency * chore: add license headers * chore: use lowercase comparison for artifact name * chore: build artifact changes from Beats CI to Elastic's artifactory * fix: support building artifact names from local Local builds uses the same as the CI * WIP * fix: rename docker-ubi8 installer key * chore: pass a fallback version when building artifact name In the case we are using a PR , where the version is "pr-12345", then we need to use the base version of the product * chore: remove log * fix: do not override artifact name in Docker installer * feat: support consuming the docker images from snapshots or local in standalone mode * chore: add unit tests for fetching docker images from local Beats repo * chore: apply version to Docker installer * chore: support loading metricbeat image from local repository * chore: exrtact loadImage method to docker helper * feat: support consuming CI artifacts in metricbeat * fix: remove non-existent field from logrus log * chore: extract download logic to helper methods We are discarding the stale parameter, because the stale version is set when the installer is required, so we simply download what is requested * chore: fix typo * chore: check agent version before setting it * chore: use the docker client to load the image instead of the docker binary * chore: add unit tests for check method * chore: pass fallback version to check method * fix: properly calculate version for PRs * chore: move PR check logic to a method * chore: make test independent of maintenance branch # Conflicts: # e2e/_suites/fleet/services.go # e2e/utils.go
8 tasks
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Sorry for this massive PR, I started small but you know.. yak shaving
What does this PR do?
This PR simplifies the generation of artifact names, adding unit tests and refactoring the code. More in detail:
-docker-image
token that comes right after the version, but in Beats build it uses a.docker
token that comes right before the extension.stale
argument to the method calls: we set the version when creating the stale installer and that's all. We are checking that the version used is a PR at installer build time,Why is it important?
Code health, avoiding redundant code and reusability.
Checklist
make notice
in the proper directory)Author's Checklist
How to test this PR locally
Let's use the existing goals:
Related issues
Follow-ups