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

Install operator image according to the target architecture #5200

Merged
merged 1 commit into from
Mar 14, 2024

Conversation

tdiesler
Copy link
Contributor

@tdiesler tdiesler commented Feb 28, 2024

CrossRef: #5169

$ go run ./cmd/kamel install                                                                                                            
OLM is not available in the cluster. Fallback to regular installation.
Using arch specific operator image: docker.io/apache/camel-k:2.3.0-SNAPSHOT-arm64
Using arch specific base image: eclipse-temurin:17@sha256:a90cec83bb9b9ab19a63e377b20c3aa4e076b16c52d36e83c62c451b6d034e22
Camel K installed in namespace default 

Copy link
Contributor

@christophd christophd left a comment

Choose a reason for hiding this comment

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

just some nitpicks

@@ -21,6 +21,7 @@ import (
"context"
"errors"
"fmt"
"github.com/apache/camel-k/v2/pkg/util/defaults"
Copy link
Contributor

Choose a reason for hiding this comment

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

needs goimports formatting

Copy link
Contributor Author

Choose a reason for hiding this comment

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

done

// Choose an architecture specific an operator/base image when not already given explicitly
if archs, err := kubernetes.NodeArchLookup(o.Context, c); err == nil && len(archs) == 1 {
switch archs[0] {
case "arm64":
Copy link
Contributor

Choose a reason for hiding this comment

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

switch with only one single case?

@@ -414,6 +415,21 @@ func (o *installCmdOptions) setupOperator(
platformName)
}

// Choose an architecture specific an operator/base image when not already given explicitly
if archs, err := kubernetes.NodeArchLookup(o.Context, c); err == nil && len(archs) == 1 {
Copy link
Contributor

Choose a reason for hiding this comment

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

missing some error handling

@@ -29,6 +29,17 @@ func BaseImage() string {
return envOrDefault(baseImage, "KAMEL_BASE_IMAGE", "RELATED_IMAGE_BASE")
}

func BaseImageArch(arch string) string {
mapping := map[string]string{
Copy link
Contributor

Choose a reason for hiding this comment

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

this mapping should be a constant in defaults.go

limitations under the License.
*/

package util
Copy link
Contributor

Choose a reason for hiding this comment

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

Some unit tests would be nice

@tdiesler
Copy link
Contributor Author

Thanks @christophd - all done (I think)

Copy link
Contributor

@squakez squakez left a comment

Choose a reason for hiding this comment

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

Thanks for the work, but IMO this is not the right way to proceed. We're making the assumption to have full privileges and control over the platform. Also, this is creating a certain asymmetry as it would work for the CLI, but not for the other installation methodology.

I think we need to work more on the publishing image part, allowing to use manifest [1] and ideally having the platform the ability to pick the correct image architecture.

[1]

camel-k/script/Makefile

Lines 473 to 477 in 43a288d

# TODO: we can evaluate the usage of manifest and try the following
# docker manifest create $(CUSTOM_IMAGE):$(CUSTOM_VERSION) \
# --amend $(CUSTOM_IMAGE):$(CUSTOM_VERSION)-amd64 \
# --amend $(CUSTOM_IMAGE):$(CUSTOM_VERSION)-arm64
# docker manifest push --purge $(CUSTOM_IMAGE):$(CUSTOM_VERSION)

pkg/util/defaults/defaults.go Outdated Show resolved Hide resolved
pkg/cmd/install.go Outdated Show resolved Hide resolved
@claudio4j
Copy link
Contributor

Although this PR aims the client side, there is work to do on the image build side, to publish the multi-arch build in the manifest.

@tdiesler tdiesler force-pushed the ghi5169 branch 2 times, most recently from 638cf46 to 853be0a Compare March 7, 2024 14:41
@tdiesler
Copy link
Contributor Author

tdiesler commented Mar 7, 2024

Here is my next attempt for this ...

You can run

NOTEST=1 make clean images
...
####### Skipping unit test...
####### Building kamel CLI for amd64 architecture...
CGO_ENABLED=0 GOARCH=amd64 go build -ldflags "-X github.com/apache/camel-k/v2/pkg/util/defaults.GitCommit=853be0a46cf0d3532e33e48c2644884a7fdcaac9" -trimpath -o build/_output/bin/kamel-amd64 ./cmd/kamel/*.go
####### Building kamel CLI for arm64 architecture...
CGO_ENABLED=0 GOARCH=arm64 go build -ldflags "-X github.com/apache/camel-k/v2/pkg/util/defaults.GitCommit=853be0a46cf0d3532e33e48c2644884a7fdcaac9" -trimpath -o build/_output/bin/kamel-arm64 ./cmd/kamel/*.go
...
####### Building Camel K operator arch amd64 container image...
mkdir -p build/_maven_output
docker buildx build --target base --platform=linux/amd64 --build-arg IMAGE_ARCH=amd64 -t docker.io/apache/camel-k:2.3.0-SNAPSHOT-amd64 -f build/Dockerfile --load .
####### Building Camel K operator arch arm64 container image...
mkdir -p build/_maven_output
docker buildx build --target base --platform=linux/arm64 --build-arg IMAGE_ARCH=arm64 -t docker.io/apache/camel-k:2.3.0-SNAPSHOT-arm64 -f build/Dockerfile --load .

You should then find these images in your local registry

$ docker images
REPOSITORY                                TAG                                                                          IMAGE ID       CREATED              SIZE
apache/camel-k                            2.3.0-SNAPSHOT-arm64                                                         aea419a206ab   27 seconds ago       549MB
apache/camel-k                            2.3.0-SNAPSHOT-amd64                                                         509a6b88f5f5   About a minute ago   556MB

Which can them be combined to a multiarch image like this

$ make images-push
docker push docker.io/apache/camel-k:2.3.0-SNAPSHOT-amd64
docker push docker.io/apache/camel-k:2.3.0-SNAPSHOT-arm64
...
docker manifest create docker.io/apache/camel-k:2.3.0-SNAPSHOT --amend docker.io/apache/camel-k:2.3.0-SNAPSHOT-amd64 --amend docker.io/apache/camel-k:2.3.0-SNAPSHOT-arm64
Created manifest list docker.io/apache/camel-k:2.3.0-SNAPSHOT
docker manifest push docker.io/apache/camel-k:2.3.0-SNAPSHOT
sha256:13f2e249b41046ddfbfbe70906736ac899dd252bc685ae459f689aa26b2ba8d8

https://hub.docker.com/repository/docker/nessusio/camel-k/tags?page=1&ordering=last_updated

PS: Instead of docker.io/apache I used this repository docker.io/nessusio

@tdiesler
Copy link
Contributor Author

tdiesler commented Mar 7, 2024

The above would only work if your buildx extensions supports both (linux/amd64, linux/arm64) platforms.
Perhaps there needs to be more logic in the Makefile to account for that.

pkg/util/slice/slice.go Outdated Show resolved Hide resolved
@christophd
Copy link
Contributor

This is my workflow that is working with current main branch already:

make IMAGE_ARCH=arm64 images

or

make images-all

This gives you the arm64 Camel K operator image:

docker images
REPOSITORY                                TAG                    IMAGE ID       CREATED          SIZE
apache/camel-k                            2.3.0-SNAPSHOT-arm64   2a756fd2ebc4   8 minutes ago    546MB
apache/camel-k                            2.3.0-SNAPSHOT         c2421a7255cc   15 minutes ago   554MB

then you can install Camel K with the arm64 image

kamel install --global --operator-image apache/camel-k:2.3.0-SNAPSHOT-arm64

Copy link
Contributor

@squakez squakez left a comment

Choose a reason for hiding this comment

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

Thanks for the work. I think we may need to remove all the changes from the previous PR (ie the golang code changes) which are no longer required.

Then, for the makefile changes, I think we don't need all those changes. Probably we only need to tweak the images-push and images-push-staging in order to create a manifest. We already have the images-all that should take care of building all the expected architectures (amd64-arm64), so, don't see the need to do all those changes. In order to simplify the rest of operations (see failing checks), we need to assume that the default image is the amd-64, so, no need to add the suffix explicitly, however we must amend it during publishing as you're already doing.

With the manifest creation in place, then, the operation we'd perform would be:

make images-all
make images-push

And the result we expect is a docker manifest using both containers architectures.

@tdiesler
Copy link
Contributor Author

tdiesler commented Mar 8, 2024

@squakez How about this ...

  1. By default build the platform native image. This would build either linux/amd64 or linux/arm64 depending on the platform you are currently using
  2. On demand build images for other platforms preserving the workflow that exists already
  3. Push requires linux/amd64 and hence would fail if not available - it ensures that the amd64 variant is always available on the remote repo. Push also searches for other platform variants (e.g. linux/arm64) and if found uploads the multiarch manifest list

In that way, the build would also work on platforms that cannot produce arm64. On arm64 platforms that cannot produce amd64, it would also work except the final push. The release platform may support a variety of target platform builds and can explicitly select which to build and finally push the manifest list for that selection.

@tdiesler tdiesler force-pushed the ghi5169 branch 6 times, most recently from 0b1c994 to e59c655 Compare March 11, 2024 14:46
@tdiesler
Copy link
Contributor Author

tdiesler commented Mar 11, 2024

When you now run

make images

you get the image for your platform. Images for alternative platforms can be built as before e.g.

make IMAGE_ARCH=arm64 images

Push (to staging) works with and without arm64. We only create/push the manifest list when images for both platforms are available

The binary has no suffix -o build/_output/bin/kamel - it is only a temporary thing that gets put in the respective platform image. If you prefer, we could also make this have a platform suffix and change the Dockerfile accordingly

@squakez
Copy link
Contributor

squakez commented Mar 12, 2024

If it's ready I think we can merge and we can verify the nightly release correctly pushes the manifest.

@tdiesler tdiesler force-pushed the ghi5169 branch 3 times, most recently from b1b7f48 to c36510c Compare March 14, 2024 07:52
@tdiesler tdiesler changed the title Install operator/base image according to the target architecture Install operatorimage according to the target architecture Mar 14, 2024
@tdiesler tdiesler changed the title Install operatorimage according to the target architecture Install operator image according to the target architecture Mar 14, 2024
@squakez squakez merged commit a857b91 into apache:main Mar 14, 2024
13 checks passed
@squakez
Copy link
Contributor

squakez commented Mar 14, 2024

Thanks, let's keep tuned to see the manifest during nightly build.

@tdiesler tdiesler deleted the ghi5169 branch March 14, 2024 17:03
realMartinez added a commit to realMartinez/camel-k that referenced this pull request Mar 25, 2024
doc: generated documentation

chore: added E2E test for logging category

chore: changed e2e test to use IntegrationLogs

doc: generated documentation

chore: nightly automatic updates

fix(trait): deprecate operator inspecting secrets

Eventually remove this feature which is making the operator to inspect the list of namespaces secrets

fix(quarkus): build time properties into file

Moving from maven based approach to a file approach in order to let be able to use any character which may be a limitation in pom.xml

Closes apache#5195

fix(e2e): stricter pipe test check

chore: nightly automatic updates

chore(deps): bump github.com/stretchr/testify from 1.8.4 to 1.9.0

Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.8.4 to 1.9.0.
- [Release notes](https://github.com/stretchr/testify/releases)
- [Commits](stretchr/testify@v1.8.4...v1.9.0)

---
updated-dependencies:
- dependency-name: github.com/stretchr/testify
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

chore: nightly automatic updates

fix(ci): add snapshot repo

For those unit test requiring it.

chore(deps): bump golang.org/x/oauth2 from 0.17.0 to 0.18.0

Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.17.0 to 0.18.0.
- [Commits](golang/oauth2@v0.17.0...v0.18.0)

---
updated-dependencies:
- dependency-name: golang.org/x/oauth2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

chore: nightly automatic updates

feat(ci): upgrade golang to 1.21

Closes apache#4795

chore(traits): deprecate registry

fix(trait): watch for resource versions...

...instead of for their content.

chore: nightly automatic updates

fix(ci): swap deprecation notice

fix(ci): lint for 1.21

chore(deps): bump github.com/cloudevents/sdk-go/v2 from 2.13.0 to 2.15.2

Bumps [github.com/cloudevents/sdk-go/v2](https://github.com/cloudevents/sdk-go) from 2.13.0 to 2.15.2.
- [Release notes](https://github.com/cloudevents/sdk-go/releases)
- [Commits](cloudevents/sdk-go@v2.13.0...v2.15.2)

---
updated-dependencies:
- dependency-name: github.com/cloudevents/sdk-go/v2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

chore(lint): Error nil check: use require.NoError

chore(lint): Error not nil check: use require.Error

chore(lint): assert NoError check: use require.NoError

chore(lint): assert Error check: use require.Error

chore(lint): Use golangci-lint version matching go version 1.21

chore(lint): Fix lint errors

chore(lint): Ignore tests

chore(lint): Fix lint errors

chore(lint): Skip test_support go files

chore(lint): Fix lint errors

chore: nightly automatic updates

chore(deps): bump github.com/prometheus/common from 0.48.0 to 0.50.0

Bumps [github.com/prometheus/common](https://github.com/prometheus/common) from 0.48.0 to 0.50.0.
- [Release notes](https://github.com/prometheus/common/releases)
- [Commits](prometheus/common@v0.48.0...v0.50.0)

---
updated-dependencies:
- dependency-name: github.com/prometheus/common
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

fix(build): Container image upgrad to golang 1.21

fix(cron): Add documentation and test on multiple sources

Closes apache#5158

fix(quarkus): don't override application.properties

fix(ctrl): message digest change

Change of a digest would reset an Integration, but a rebuild may not be required.

Closes apache#5219

fix(cmd): delete KameletBinding until they exists

Closes apache#5156

fix(trait): revert persisted status

The work done in apache#5153 is based on the wrong assumption that a trait status can be persisted at any point of the Integration/IntegrationKit lifecycle
This cannot be always true, because the resource move towards different .status.phase with the execution of its logic or not depending on the phase.
Therefore we cannot persist in a consistent way, as the status would reflect the latest execution of a trait which may happen in a different phase (and would be overridden by the new execution phase).
The best way to deal with this, at this stage, seems to be the usage of .status.conditions in order to warn that some trait value was overwritten.

chore(e2e): Improve E2E tests

- Improve common-it to use separate test namespace and default global operator
- Create default integration kits with global operator before tests are run
- TestMain func() creates commonly used Camel K integrations before the test so the integration kits are reused during the test run
- Reuse default integration kits (type=external image) in all test namespaces with custom operator installation
- Reduces builds of integration kits in tests
- Fix missing IntegrationProfile CRD
- Fix flaky update install tests

chore(e2e): Run E2E tests in parallel

chore(e2e): Use fresh Gomega instance for each test

- Recommended use of Gomega NewWithT() instead of RegisterTestingT() to get a fresh instance for each test
- Avoids concurrency errors when running tests in parallel

chore(e2e): Use operator instance per package in common tests

- Gain execution speed on GitHub CI jobs
- Custom Kamelets creation need to use proper operatorID

chore(e2e): Fix concurrent access to viper flags

chore(e2e): Skip cluster setup when installing Camel K operators in test namespaces

chore(e2e): Use separate operator instances for trait e2e tests

chore(e2e): Synchronize kamel install command in e2e tests

chore(e2e): Use separate viper instance per command

chore(e2e): Fix E2E tests

chore: nightly automatic updates

chore(e2e): Fix smoke tests

- Fix execution in Makefile after E2E tests refactoring

chore: fixed e2e to use integration logs

chore: updated e2e

chore: removed unnecessary code, fixed typos

fix(trait): changing data type for rollingUpdateMaxSurge and rollingUpdateMaxUnavailable to strings are also supported

chore: nightly automatic updates

fix(traits): use Comparable matches

Reverting apache#4512 which introduced a function diverging the match from the original design

Azure Key Vault Trait: Support Azure Identity as authentication method (apache#5244)

Signed-off-by: Andrea Cosentino <[email protected]>

chore: nightly automatic updates

chore(ci): Upgrade setup-kubectl action

chore: propagate capabilities to Kit

Useful in order to know what are the capabilities instead of inspecting the dependencies. It may also enable finer tuning on the kits matching.

chore(e2e): Add option to set base image and runtime version in E2E tests

- Useful when running native tests on a macOS arm64 machine (e.g. CAMEL_K_TEST_BASE_IMAGE=arm64v8/eclipse-temurin:17)
- Useful when running tests with SNAPSHOT runtime version (e.g. CAMEL_K_TEST_RUNTIME_VERSION=3.8.0-SNAPSHOT)

chore(e2e): Use new context instance for each E2E test

chore(e2e): Use UpdatePlatform func as it is more stable

chore(e2e): Improve Integration logs waiting for container created

- Avoid logs watch errors when container is still creating

chore(e2e): Use a shared context in E2E tests

chore(e2e): Do not run fast setup locally

- Only run main_test.go fast setup optimizations when env var is set (usually on GitHub CI workflow)

chore: nightly automatic updates

Install operator image according to the target architecture

Fixes apache#5200

chore: nightly automatic updates

chore(ci): Upgrade kind action to 2.0.4

Add Kamelet v1alpha1 sample (apache#5254)

chore: nightly automatic updates

chore: nightly automatic updates

chore: nightly automatic updates

Fix wrong Kamelet sample content (apache#5255)

chore: nightly automatic updates

fix(apache#5252): release-nightly does not build/push multiarch manifest

chore(deps): bump github.com/onsi/gomega from 1.31.1 to 1.32.0

Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.31.1 to 1.32.0.
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](onsi/gomega@v1.31.1...v1.32.0)

---
updated-dependencies:
- dependency-name: github.com/onsi/gomega
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

[chore] improve metrics for integration (apache#5154)

* [chore] improve metrics for integration

improve metrics for integrations, record a vector with integration_name and state

* [chore] add tests

* chore: change test dependency

* solve go.mod conflict

* chore: change test library and fix lint

chore: nightly automatic updates

chore: Use camel case for Pipe error handler ref

fix(ci): use ubuntu which now have 16 GB memory

Closes apache#4885

feat(trait): move runtime logic into trait catalog

chore: nightly automatic updates

chore(deps): bump github.com/docker/docker

Bumps [github.com/docker/docker](https://github.com/docker/docker) from 24.0.7+incompatible to 24.0.9+incompatible.
- [Release notes](https://github.com/docker/docker/releases)
- [Commits](moby/moby@v24.0.7...v24.0.9)

---
updated-dependencies:
- dependency-name: github.com/docker/docker
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

fix(apache#5238): Integration builds fail with arm64 base image

feat(traits): builder image platforms

doc(trait): sourceless Integrations

chore: nightly automatic updates

chore(deps): bump github.com/prometheus/common from 0.50.0 to 0.51.0

Bumps [github.com/prometheus/common](https://github.com/prometheus/common) from 0.50.0 to 0.51.0.
- [Release notes](https://github.com/prometheus/common/releases)
- [Commits](prometheus/common@v0.50.0...v0.51.0)

---
updated-dependencies:
- dependency-name: github.com/prometheus/common
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

feat(catalog): support placeholders

Ref apache/camel-k-runtime#1192

chore(trait): add executed trait condition

chore(trait): polish conditions

Closes apache#5027

chore: nightly automatic updates

chore: nightly automatic updates

chore(deps): bump github.com/prometheus/common from 0.51.0 to 0.51.1

Bumps [github.com/prometheus/common](https://github.com/prometheus/common) from 0.51.0 to 0.51.1.
- [Release notes](https://github.com/prometheus/common/releases)
- [Commits](prometheus/common@v0.51.0...v0.51.1)

---
updated-dependencies:
- dependency-name: github.com/prometheus/common
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

chore: added E2E test for logging category

chore: changed e2e test to use IntegrationLogs

chore: updated e2e

chore: removed unnecessary code, fixed typos
realMartinez added a commit to realMartinez/camel-k that referenced this pull request Mar 25, 2024
chore: added E2E test for logging category

chore: changed e2e test to use IntegrationLogs

doc: generated documentation

chore: nightly automatic updates

fix(trait): deprecate operator inspecting secrets

Eventually remove this feature which is making the operator to inspect the list of namespaces secrets

fix(quarkus): build time properties into file

Moving from maven based approach to a file approach in order to let be able to use any character which may be a limitation in pom.xml

Closes apache#5195

fix(e2e): stricter pipe test check

chore: nightly automatic updates

chore(deps): bump github.com/stretchr/testify from 1.8.4 to 1.9.0

Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.8.4 to 1.9.0.
- [Release notes](https://github.com/stretchr/testify/releases)
- [Commits](stretchr/testify@v1.8.4...v1.9.0)

---
updated-dependencies:
- dependency-name: github.com/stretchr/testify
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

chore: nightly automatic updates

fix(ci): add snapshot repo

For those unit test requiring it.

chore(deps): bump golang.org/x/oauth2 from 0.17.0 to 0.18.0

Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.17.0 to 0.18.0.
- [Commits](golang/oauth2@v0.17.0...v0.18.0)

---
updated-dependencies:
- dependency-name: golang.org/x/oauth2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

chore: nightly automatic updates

feat(ci): upgrade golang to 1.21

Closes apache#4795

chore(traits): deprecate registry

fix(trait): watch for resource versions...

...instead of for their content.

chore: nightly automatic updates

fix(ci): swap deprecation notice

fix(ci): lint for 1.21

chore(deps): bump github.com/cloudevents/sdk-go/v2 from 2.13.0 to 2.15.2

Bumps [github.com/cloudevents/sdk-go/v2](https://github.com/cloudevents/sdk-go) from 2.13.0 to 2.15.2.
- [Release notes](https://github.com/cloudevents/sdk-go/releases)
- [Commits](cloudevents/sdk-go@v2.13.0...v2.15.2)

---
updated-dependencies:
- dependency-name: github.com/cloudevents/sdk-go/v2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

chore(lint): Error nil check: use require.NoError

chore(lint): Error not nil check: use require.Error

chore(lint): assert NoError check: use require.NoError

chore(lint): assert Error check: use require.Error

chore(lint): Use golangci-lint version matching go version 1.21

chore(lint): Fix lint errors

chore(lint): Ignore tests

chore(lint): Fix lint errors

chore(lint): Skip test_support go files

chore(lint): Fix lint errors

chore: nightly automatic updates

chore(deps): bump github.com/prometheus/common from 0.48.0 to 0.50.0

Bumps [github.com/prometheus/common](https://github.com/prometheus/common) from 0.48.0 to 0.50.0.
- [Release notes](https://github.com/prometheus/common/releases)
- [Commits](prometheus/common@v0.48.0...v0.50.0)

---
updated-dependencies:
- dependency-name: github.com/prometheus/common
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

fix(build): Container image upgrad to golang 1.21

fix(cron): Add documentation and test on multiple sources

Closes apache#5158

fix(quarkus): don't override application.properties

fix(ctrl): message digest change

Change of a digest would reset an Integration, but a rebuild may not be required.

Closes apache#5219

fix(cmd): delete KameletBinding until they exists

Closes apache#5156

fix(trait): revert persisted status

The work done in apache#5153 is based on the wrong assumption that a trait status can be persisted at any point of the Integration/IntegrationKit lifecycle
This cannot be always true, because the resource move towards different .status.phase with the execution of its logic or not depending on the phase.
Therefore we cannot persist in a consistent way, as the status would reflect the latest execution of a trait which may happen in a different phase (and would be overridden by the new execution phase).
The best way to deal with this, at this stage, seems to be the usage of .status.conditions in order to warn that some trait value was overwritten.

chore(e2e): Improve E2E tests

- Improve common-it to use separate test namespace and default global operator
- Create default integration kits with global operator before tests are run
- TestMain func() creates commonly used Camel K integrations before the test so the integration kits are reused during the test run
- Reuse default integration kits (type=external image) in all test namespaces with custom operator installation
- Reduces builds of integration kits in tests
- Fix missing IntegrationProfile CRD
- Fix flaky update install tests

chore(e2e): Run E2E tests in parallel

chore(e2e): Use fresh Gomega instance for each test

- Recommended use of Gomega NewWithT() instead of RegisterTestingT() to get a fresh instance for each test
- Avoids concurrency errors when running tests in parallel

chore(e2e): Use operator instance per package in common tests

- Gain execution speed on GitHub CI jobs
- Custom Kamelets creation need to use proper operatorID

chore(e2e): Fix concurrent access to viper flags

chore(e2e): Skip cluster setup when installing Camel K operators in test namespaces

chore(e2e): Use separate operator instances for trait e2e tests

chore(e2e): Synchronize kamel install command in e2e tests

chore(e2e): Use separate viper instance per command

chore(e2e): Fix E2E tests

chore: nightly automatic updates

chore(e2e): Fix smoke tests

- Fix execution in Makefile after E2E tests refactoring

chore: fixed e2e to use integration logs

chore: updated e2e

chore: removed unnecessary code, fixed typos

fix(trait): changing data type for rollingUpdateMaxSurge and rollingUpdateMaxUnavailable to strings are also supported

chore: nightly automatic updates

fix(traits): use Comparable matches

Reverting apache#4512 which introduced a function diverging the match from the original design

Azure Key Vault Trait: Support Azure Identity as authentication method (apache#5244)

Signed-off-by: Andrea Cosentino <[email protected]>

chore: nightly automatic updates

chore(ci): Upgrade setup-kubectl action

chore: propagate capabilities to Kit

Useful in order to know what are the capabilities instead of inspecting the dependencies. It may also enable finer tuning on the kits matching.

chore(e2e): Add option to set base image and runtime version in E2E tests

- Useful when running native tests on a macOS arm64 machine (e.g. CAMEL_K_TEST_BASE_IMAGE=arm64v8/eclipse-temurin:17)
- Useful when running tests with SNAPSHOT runtime version (e.g. CAMEL_K_TEST_RUNTIME_VERSION=3.8.0-SNAPSHOT)

chore(e2e): Use new context instance for each E2E test

chore(e2e): Use UpdatePlatform func as it is more stable

chore(e2e): Improve Integration logs waiting for container created

- Avoid logs watch errors when container is still creating

chore(e2e): Use a shared context in E2E tests

chore(e2e): Do not run fast setup locally

- Only run main_test.go fast setup optimizations when env var is set (usually on GitHub CI workflow)

chore: nightly automatic updates

Install operator image according to the target architecture

Fixes apache#5200

chore: nightly automatic updates

chore(ci): Upgrade kind action to 2.0.4

Add Kamelet v1alpha1 sample (apache#5254)

chore: nightly automatic updates

chore: nightly automatic updates

chore: nightly automatic updates

Fix wrong Kamelet sample content (apache#5255)

chore: nightly automatic updates

fix(apache#5252): release-nightly does not build/push multiarch manifest

chore(deps): bump github.com/onsi/gomega from 1.31.1 to 1.32.0

Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.31.1 to 1.32.0.
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](onsi/gomega@v1.31.1...v1.32.0)

---
updated-dependencies:
- dependency-name: github.com/onsi/gomega
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

[chore] improve metrics for integration (apache#5154)

* [chore] improve metrics for integration

improve metrics for integrations, record a vector with integration_name and state

* [chore] add tests

* chore: change test dependency

* solve go.mod conflict

* chore: change test library and fix lint

chore: nightly automatic updates

chore: Use camel case for Pipe error handler ref

fix(ci): use ubuntu which now have 16 GB memory

Closes apache#4885

feat(trait): move runtime logic into trait catalog

chore: nightly automatic updates

chore(deps): bump github.com/docker/docker

Bumps [github.com/docker/docker](https://github.com/docker/docker) from 24.0.7+incompatible to 24.0.9+incompatible.
- [Release notes](https://github.com/docker/docker/releases)
- [Commits](moby/moby@v24.0.7...v24.0.9)

---
updated-dependencies:
- dependency-name: github.com/docker/docker
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

fix(apache#5238): Integration builds fail with arm64 base image

feat(traits): builder image platforms

doc(trait): sourceless Integrations

chore: nightly automatic updates

chore(deps): bump github.com/prometheus/common from 0.50.0 to 0.51.0

Bumps [github.com/prometheus/common](https://github.com/prometheus/common) from 0.50.0 to 0.51.0.
- [Release notes](https://github.com/prometheus/common/releases)
- [Commits](prometheus/common@v0.50.0...v0.51.0)

---
updated-dependencies:
- dependency-name: github.com/prometheus/common
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

feat(catalog): support placeholders

Ref apache/camel-k-runtime#1192

chore(trait): add executed trait condition

chore(trait): polish conditions

Closes apache#5027

chore: nightly automatic updates

chore: nightly automatic updates

chore(deps): bump github.com/prometheus/common from 0.51.0 to 0.51.1

Bumps [github.com/prometheus/common](https://github.com/prometheus/common) from 0.51.0 to 0.51.1.
- [Release notes](https://github.com/prometheus/common/releases)
- [Commits](prometheus/common@v0.51.0...v0.51.1)

---
updated-dependencies:
- dependency-name: github.com/prometheus/common
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

chore: added E2E test for logging category

chore: changed e2e test to use IntegrationLogs

chore: updated e2e

chore: removed unnecessary code, fixed typos
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants