Compare commits

...

520 Commits

Author SHA1 Message Date
Humair Khan 6ccf261e25
chore: add ci to test sphinx builds (#12116)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-08-06 13:51:54 +00:00
Humair Khan ccd0c334e0
chore: switch to using git-cliff instead of changelog and test for kfp-server codegen (#12113)
* switch to git-cliff instead of changelog

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

* test for kfp-server-api codegen in ci

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

---------

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-08-06 13:43:54 +00:00
Humair Khan 00c95e91b3
chore: ignore adding pb2.py files for kfp-k8s docs (#12115)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-08-05 22:45:53 +00:00
Humair Khan 798647b08d
chore: update sphinx deps (#12114)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-08-05 21:56:54 +00:00
Humair Khan 10f340bf73
chore: cherrypick 2.14 release branch (#12112)
* update python packages to 2.14

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

* chore(release): bumped version to 2.14.0

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

* bump sdk to 2.14.1

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

---------

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-08-05 17:04:55 +00:00
Nelesh Singla 87106d06bc
docs(KEP): K8s native api test plan (WIP) (#12035)
initial draft of k8s native api test plan

rh-pre-commit.version: 2.3.2
rh-pre-commit.check-secrets: ENABLED



adding few more tests

rh-pre-commit.version: 2.3.2
rh-pre-commit.check-secrets: ENABLED



adding more tests and expected results

rh-pre-commit.version: 2.3.2
rh-pre-commit.check-secrets: ENABLED



adding question to K8s storage with custom role binding section



rh-pre-commit.version: 2.3.2
rh-pre-commit.check-secrets: ENABLED

adding few more test cases

rh-pre-commit.version: 2.3.2
rh-pre-commit.check-secrets: ENABLED



adding a new test case and some section details

rh-pre-commit.version: 2.3.2
rh-pre-commit.check-secrets: ENABLED



adding expected result to the test cases

rh-pre-commit.version: 2.3.2
rh-pre-commit.check-secrets: ENABLED



adding expected results and fixing a test description

rh-pre-commit.version: 2.3.2
rh-pre-commit.check-secrets: ENABLED



fixing section titles

rh-pre-commit.version: 2.3.2
rh-pre-commit.check-secrets: ENABLED

resolving pr comments

rh-pre-commit.version: 2.3.2
rh-pre-commit.check-secrets: ENABLED

removing odh/rhoai only tests



reducing the Without migration script test scope



removing 2 sections as per pr comment - consolidated it with other sections

Signed-off-by: Nelesh Singla <117123879+nsingla@users.noreply.github.com>
2025-08-05 13:23:53 +00:00
Humair Khan 472f72c934
test generating backend proto go code (#12108)
* test generating backend proto go code

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

* generate & update backend v1beta1 proto code

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

---------

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-08-05 11:29:54 +00:00
Humair Khan 9f5abab7d2
add versioning policy for KFP (#12105)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-08-04 15:25:53 +00:00
Humair Khan 000a111396
fix(backend): omit unknown fields in json marshaling (#12101)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-08-04 00:10:51 +00:00
Michael c64feac20e
fix(deps): revert metadata_writer k8s version (#12099)
Signed-off-by: zazulam <m.zazula@gmail.com>
2025-08-01 20:06:50 +00:00
Matt Prahl 4bd3d4b4e9
fix(sdk,backend): Make the workspace size required (#12094)
This forces the user to think about how much storage they need for the
shared workspace.

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-08-01 17:27:50 +00:00
Googler 8b84ad0f5b chore(components): Bump image version for Structured Data pipelines
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 789406421
2025-07-31 11:19:42 -07:00
Vani Haripriya Mudadla ecf488b65f
feat(sdk) Add Input Parameter support for node affinity (#12028)
* feat(sdk) Add Input Parameter support for node affinity

Signed-off-by: VaniHaripriya <vmudadla@redhat.com>

* Add driver and sdk changes to support adding nodeAffinity

Signed-off-by: VaniHaripriya <vmudadla@redhat.com>

---------

Signed-off-by: VaniHaripriya <vmudadla@redhat.com>
2025-07-30 13:45:49 +00:00
Alyssa Goins a870b1a325
feat(backend): Support more than one label & annotations setting per component (#12049)
* Parameterize pod metadata to allow separate labels/annotations on separate components.

Signed-off-by: agoins <alyssacgoins@gmail.com>

# Conflicts:
#	backend/src/v2/compiler/argocompiler/container.go
#	samples/v2/sample_test.py

* Extend PodMetadata parameters to handle multiple annotations/labels.

Signed-off-by: agoins <alyssacgoins@gmail.com>

---------

Signed-off-by: agoins <alyssacgoins@gmail.com>
2025-07-29 21:08:48 +00:00
Helber Belmiro 169e45f6f0
chore: Switch Argo Workflows manifests to remote Git references (#12074)
* chore: Switch Argo Workflows manifests to remote Git references

Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>

* chore: Remove obsolete Argo kustomize configuration files

Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>

* Update manifests/kustomize/third-party/argo/README.md

Co-authored-by: Matt Prahl <mprahl@users.noreply.github.com>
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>

* Update manifests/kustomize/third-party/argo/README.md

Co-authored-by: Matt Prahl <mprahl@users.noreply.github.com>
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>

* chore(docs): Remove Argo customizations section from README.md

Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>

---------

Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
Co-authored-by: Matt Prahl <mprahl@users.noreply.github.com>
2025-07-29 15:43:48 +00:00
Humair Khan 8b9d224b0e
chore(backend): resolve linting errors (#12083)
Also disable kfp-pipeline-spec source install,
but keep the utility code to install it again
for kfp sample tests.

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

# Conflicts:
#	sdk/python/kfp/local/pipeline_orchestrator_test.py
#	sdk/python/kfp/local/task_dispatcher_test.py
#	sdk/python/test_data/pipelines/component_with_pip_index_urls.py
2025-07-29 15:06:48 +00:00
Michael bcb9ee4324
fix: backwards compatibility for pipeline spec task_name (#12061)
Signed-off-by: zazulam <m.zazula@gmail.com>
2025-07-29 13:39:47 +00:00
Humair Khan cc35187dff
fix(backend/sdk): update proto packages (#12067)
Summary of the various changes are below:

--
Update backend protobuf runtime dependencies:

This change comes with a large changeset to accommodate the api breaking
changes introduced with protoc-gen-openapiv2 (grpc-gateway v2+) and other associated (protoc-gen-go, protobuf, etc.).

Some noteworthy changes:

* Newer protoc-gen-go-grpc requires UnimplementedXxxServer struct to help
with forward compatibility and optional method implementations.

Because of this, we can no longer used shared servers for both v1 and v2
APIs. To keep the diff low this change adds a wrapper server to split
them up, whilst keeping shared code co-located.

* use custrom marshaler for grpc-gateway to retain proto field names as json field names

* client go code is updated to accommodate other breaking changes

* presubmit and associated scripts are removed as they are no longer used
by CI.

--
Update testing and CI code to accommodate protobuf upgrades:

This change makes various updates to CI and testing code to achieve
this.

GitHub workflows:

Protobuf dependency installation and management are moved to a separate
action. This allows us to manage versions in one location and remove
redundant code.

Similarly, installation of KFP-Kubernetes, and transitively KFP sdk are
also moved to a separate action.

Presubmit tests now support optional dep installation, allowing us to
instead opt to install dependencies from the CI env instead. This is
to prevent the script from overwriting the python packages we install
via our new re-usable GitHub action.

kfp-k8s and kfp-sdk execution tests have been updated to leverage
kfp-pipeline-spec from the source for runtime tests.

kfp-readiness requirements are moved to their own file, since the
dependency requirement for this script is much smaller than sdk, it makes
more sense to scope this to a smaller, more targeted requirements file.

--
Bump protobuf to 6.x for kfp-kubernetes-platform

The change also includes the re-generated python and go code.

There is also an update to setup.py, where dependencies are split into
separate requirements.txt to supplement dep management via third party
tools.

There are two noteworthy changes to the Makefile:

* Support for installing dependent packages sourced locally, via:
USE_FIND_LINKS, FIND_LINKS_PATH. See inline comments for details.
* Support for fetching dependent protos. Here we re-use the make target
already available from pipeline_spec.

--
Bump protobuf to 6.x for kfp sdk

This change will bump KFP sdk to leverage protobuf 6.x. It also bumps
kfp-pipeline-spec to 0.8.0 which too requires protobuf 6.x.

Note that the version of KFP is also bumped to 2.4.0. This is required
because CI will fail otherwise when it attempts to retrieve KFP 2.3.0
due to a mismatch between kfp sdk 2.13 protobuf requirements (>=4.x,<5),
and kfp sdk 2.14 requirements (>=6.x, <7).

In order to accompany CI, we need to also ensure any CI that tries to
re-compile KFP from source must also install kfp-pipeline-spec from source,
otherwise it will try to download 0.8.0 before it is released. In order to
support this case, there is an env var introduced:

"KFP_PIPELINE_SPEC_PACKAGE_PATH", this var when set will have the executing
pipeline install pipeline-spec from the designated store instead of pypi
(transitively through KFP).

This change is also utilized in some of the kfp.local tests that will
compile and run tests locally via subprocess.

--
Bump protobuf to 6.x for pipeline spec

This change bumps support for kfp-pipeline-spec to 6.x. This is a
significant bump by two major versions. We specifically opt not to support
a range (e.g. >=5.x,<=6.x) because we are bumping protoc to 30.x+ and this
compiler is only compatible with 6.x+.

Accompanying this change is a change to the makefile command. Previously,
the developer was required to hunt down and manually download the protos
originating from the protobuf libraries in git. The makefile will now
download these proto dependencies for the user.

--
Update release and generator dockerfile

Update proto & swagger generator libraries for generator dockerfile.

--
Proto tests for backwards compatibility

The generated files in the proto-test folder were generated using
(generated) protofiles pre-proto upgrades.

The proto-test folder verifies that the newly generated proto files
will result in same json objects, as well as unmarshal
correctly into the same proto go structs.

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-07-28 19:29:49 +00:00
dependabot[bot] 1791485129
chore(deps): bump github.com/go-viper/mapstructure/v2 from 2.2.1 to 2.3.0 (#12076)
Bumps [github.com/go-viper/mapstructure/v2](https://github.com/go-viper/mapstructure) from 2.2.1 to 2.3.0.
- [Release notes](https://github.com/go-viper/mapstructure/releases)
- [Changelog](https://github.com/go-viper/mapstructure/blob/main/CHANGELOG.md)
- [Commits](https://github.com/go-viper/mapstructure/compare/v2.2.1...v2.3.0)

---
updated-dependencies:
- dependency-name: github.com/go-viper/mapstructure/v2
  dependency-version: 2.3.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-25 15:42:02 +00:00
Helber Belmiro ca52e050f5
chore: Upgrade Argo Workflows to v3.6.7, bump golang version to v.1.24 (#12072)
* feat(backend): Upgrade argo to v3.6.7

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>

* chore: Bump go to v1.24 in backend Dockerfiles

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>

* chore: Update ControllerRuntime dependency

- Required by Argo Upgrade to v3.6.x
- Implements refactored functions in Faked clients

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>

* chore: Add workflowtaskresults permissions to pipeline-runner role

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>

* chore: Update print statements to use constant string

- Updated linting causes CI to fail starting in Go1.24

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>

* chore: Update pre-commit GHAction to use go1.24

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>

* chore: Rebase

Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>

* chore: Set go.mod file as source of Go version in pre-commit.yml

Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>

* chore: Fixed pre-commit.yml

Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>

* chore: Fixed NewBadKubernetesNameError to pass format string and args separately instead of using fmt.Sprintf

Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>

---------

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
Co-authored-by: Giulio Frasca <gfrasca@redhat.com>
2025-07-25 15:03:02 +00:00
Mai Nakagawa ce848730b8
fix(sdk): Support partial replace of placeholders in dict/list objects (#12039)
Signed-off-by: Mai Nakagawa <nakagawa.mai@gmail.com>
2025-07-25 10:27:02 +00:00
Helber Belmiro 756c7ad202
chore(docs): Added new AI/ML lifecycle blog post link to README.md (#12065)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2025-07-22 20:55:00 +00:00
dependabot[bot] dcd2707477
chore(deps): bump urllib3 from 2.2.3 to 2.5.0 in /backend/metadata_writer (#12025)
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.2.3 to 2.5.0.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.2.3...2.5.0)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-version: 2.5.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-22 12:49:59 +00:00
dependabot[bot] ec2cb97a64
chore(deps): bump golang.org/x/oauth2 from 0.22.0 to 0.27.0 (#12070)
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.22.0 to 0.27.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.22.0...v0.27.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-20 20:48:57 +00:00
Anish Asthana f8a8faa175
chore: Update owners instructions to ensure other locations are up to date (#12069)
Signed-off-by: Anish Asthana <anishasthana1@gmail.com>
2025-07-19 20:55:56 +00:00
dependabot[bot] bc32adbccd
chore(deps): bump golang.org/x/oauth2 from 0.0.0-20210628180205-a41e5a781914 to 0.27.0 in /test/tools/project-cleaner (#12066)
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.0.0-20210628180205-a41e5a781914 to 0.27.0.
- [Commits](https://github.com/golang/oauth2/commits/v0.27.0)

---
updated-dependencies:
- dependency-name: golang.org/x/oauth2
  dependency-version: 0.27.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-19 20:53:56 +00:00
Vani Haripriya Mudadla dc398f689e
feat(sdk): Add support for compiling pipelines to Kubernetes native format in SDK (#12012)
Signed-off-by: VaniHaripriya <vmudadla@redhat.com>
2025-07-18 20:05:42 +00:00
Nelesh Singla fb5262f2d2
docs(KEP): Adding a proposal for the overhaul of tests in the KFP project (#11991)
Signed-off-by: Nelesh Singla <117123879+nsingla@users.noreply.github.com>

Update proposals/11991-tests-refactor/README.md

Co-authored-by: Matt Prahl <mprahl@users.noreply.github.com>
Signed-off-by: Nelesh Singla <117123879+nsingla@users.noreply.github.com>

moving ai generated specs to be outside of the goal for this effort

Signed-off-by: Nelesh Singla <117123879+nsingla@users.noreply.github.com>

resolving pr comments

Signed-off-by: Nelesh Singla <117123879+nsingla@users.noreply.github.com>

Signed-off-by: Nelesh Singla <117123879+nsingla@users.noreply.github.com>

adding back overriden resolved pr comment

Signed-off-by: Nelesh Singla <117123879+nsingla@users.noreply.github.com>

Signed-off-by: Nelesh Singla <117123879+nsingla@users.noreply.github.com>

Moving e2e semi exploratory tests to non-goals

Signed-off-by: Nelesh Singla <117123879+nsingla@users.noreply.github.com>

resolving mr comments

Signed-off-by: Nelesh Singla <117123879+nsingla@users.noreply.github.com>

rh-pre-commit.version: 2.3.2
rh-pre-commit.check-secrets: ENABLED
2025-07-18 18:12:41 +00:00
Matt Prahl f358787e5f
docs: Add a proposal for Model Registry integration (#12020)
Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-07-18 14:01:41 +00:00
dependabot[bot] 9cad3200a5
chore(deps): bump on-headers and compression in /frontend (#12064)
Bumps [on-headers](https://github.com/jshttp/on-headers) and [compression](https://github.com/expressjs/compression). These dependencies needed to be updated together.

Updates `on-headers` from 1.0.2 to 1.1.0
- [Release notes](https://github.com/jshttp/on-headers/releases)
- [Changelog](https://github.com/jshttp/on-headers/blob/master/HISTORY.md)
- [Commits](https://github.com/jshttp/on-headers/compare/v1.0.2...v1.1.0)

Updates `compression` from 1.7.4 to 1.8.1
- [Release notes](https://github.com/expressjs/compression/releases)
- [Changelog](https://github.com/expressjs/compression/blob/master/HISTORY.md)
- [Commits](https://github.com/expressjs/compression/compare/1.7.4...v1.8.1)

---
updated-dependencies:
- dependency-name: on-headers
  dependency-version: 1.1.0
  dependency-type: indirect
- dependency-name: compression
  dependency-version: 1.8.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-18 12:35:41 +00:00
Mohamed Hasan f20cec5b70
Fix broken Pipeline Root documentation link (#12051)
- Update URL from /overview/pipeline-root/ to /concepts/pipeline-root/
- Resolves 404 error when users click the documentation link
- Located in frontend/src/components/NewRunParametersV2.tsx line 245

Signed-off-by: Mohamed Hasan <93756682+mustachemo@users.noreply.github.com>
2025-07-18 04:21:40 +00:00
Alex 09ced38500
fix(backend): increase max_metadata_size for ml-metadata grpc server (#12062)
Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
2025-07-17 20:17:40 +00:00
Vani Haripriya Mudadla daac099508
feat(backend): update Argo Workflow Compiler to create workspace PVCs (#11982)
Signed-off-by: VaniHaripriya <vmudadla@redhat.com>
2025-07-17 18:47:40 +00:00
Googler ea10149c66 chore(components): Bump image version for Structured Data pipelines
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 784030294
2025-07-16 22:18:59 -07:00
𝕄!𝕝!𝕟𝕕 ad2730cf19
fix: Delete the pipeline along with its all versions. Fixes #11665 (#12019)
* feat: add cascade functionality in delete_pipeline

Signed-off-by: milinddethe15 <milinddethe15@gmail.com>

* feat(ui): delete pipeline + its all versions

Signed-off-by: milinddethe15 <milinddethe15@gmail.com>

* format code

Signed-off-by: milinddethe15 <milinddethe15@gmail.com>

* ui: add new tests

Signed-off-by: milinddethe15 <milinddethe15@gmail.com>

* backend: fix tests

Signed-off-by: milinddethe15 <milinddethe15@gmail.com>

* add log

Signed-off-by: milinddethe15 <milinddethe15@gmail.com>

---------

Signed-off-by: milinddethe15 <milinddethe15@gmail.com>
2025-07-16 19:08:38 +00:00
Humair Khan 69a184637a
add new KFP maintainers (#12059)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-07-16 18:51:38 +00:00
Andrey Velichkevich 9aa3dfb0d9
feat(docs): Guide to report security vulnerabilities (#12044)
Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
2025-07-15 15:00:39 +00:00
Alyssa Goins ecfe94ebc3
feat(backend): support for optional input parameters in nested pipelines (#11980)
Signed-off-by: agoins <alyssacgoins@gmail.com>
2025-07-14 19:00:37 +00:00
Matt Prahl 63acc678aa
chore(deps): Update go-grpc-middleware to v2 (#12043)
* Update go-grpc-middleware to v2

Signed-off-by: mprahl <mprahl@users.noreply.github.com>

* Fix the CI when installing protobuf-compiler

Signed-off-by: mprahl <mprahl@users.noreply.github.com>

---------

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-07-11 21:33:53 +00:00
Matt Prahl 04407fbe93
feat(backend): Add support for platform specs on K8s native API (#12016)
This adds an optional spec.platformSpec field to the PipelineVersion
CRD.

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-07-11 15:45:53 +00:00
DARSHAN RAJOPADHYE ada935a0ad
fix(sdk): Move version info to version.py for editable installs. (#11997)
* Fix: Move version info to version.py for editable installs and update setup.py accordingly

Signed-off-by: therrshan <therrshan@gmail.com>

* Update sdk/python/kfp/version.py

Co-authored-by: Humair Khan <HumairAK@users.noreply.github.com>
Signed-off-by: DARSHAN RAJOPADHYE <43828746+therrshan@users.noreply.github.com>
Signed-off-by: therrshan <therrshan@gmail.com>

* Update RELEASE.md with bug fix entry

Signed-off-by: therrshan <therrshan@gmail.com>

* Update SDK release instructions to reflect new version.py structure

Signed-off-by: therrshan <therrshan@gmail.com>

---------

Signed-off-by: therrshan <therrshan@gmail.com>
Signed-off-by: DARSHAN RAJOPADHYE <43828746+therrshan@users.noreply.github.com>
Co-authored-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-07-01 19:47:17 +00:00
Alexander Bieniek e8e23f0d7a
fix(sdk): Fixes for Identifying Untagged Images for Running (#11984)
Signed-off-by: Alex Bieniek <BieniekAlexander@gmail.com>
2025-07-01 19:18:17 +00:00
Googler b7f1d279d8 chore(components): Bump image version for Structured Data pipelines
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 778104148
2025-07-01 10:43:25 -07:00
Harshvir Potpose a603d40812
chore: Migrate busybox images form registory.k8s.io to ghcr (#12014)
Signed-off-by: Harshvir Potpose <hpotpose62@gmail.com>
2025-06-30 09:13:21 +00:00
Michael 7f60100602
fix: input resolution with set_display_name (#11938)
* fix: input resolution with set_display_name

Signed-off-by: zazulam <m.zazula@gmail.com>

* chore: update IR stubs & test display_name

Signed-off-by: zazulam <m.zazula@gmail.com>

---------

Signed-off-by: zazulam <m.zazula@gmail.com>
2025-06-26 18:27:17 +00:00
Alexander Bieniek 268e0898ec
feat(sdk): Add Support for Docker Container Run Arguments (#12006)
Signed-off-by: Alex Bieniek <BieniekAlexander@gmail.com>
2025-06-25 18:19:16 +00:00
Tlaquetzal a123d53be0
fix(components): Changed method_whitelist. Fixes #11880 (#11961)
Signed-off-by: Tlaquetzal <rochingoon@gmail.com>
2025-06-25 17:03:16 +00:00
Alvaro Alonso 99326e1bd1
feat(docs): erdiagram of kfp-db (#12009)
* docs: erdiagram of kfp-db

Signed-off-by: Alvaro Alonso <112358.fn@gmail.com>

* docs: fix pipelines experiments run_metrics

Add missing fields in pipelines and experiments
Remove run_metrics

Signed-off-by: Alvaro Alonso <112358.fn@gmail.com>

---------

Signed-off-by: Alvaro Alonso <112358.fn@gmail.com>
2025-06-25 15:21:16 +00:00
Martin Piták c3d05eb0b1
feat(ui): add `ESC` shortcut for closing SidePanel. Fixes #11873 (#11874)
Signed-off-by: EnyMan <mous.imp@gmail.com>
2025-06-25 13:19:16 +00:00
dependabot[bot] c09b635a6b
chore(deps-dev): bump pbkdf2 from 3.1.2 to 3.1.3 in /frontend (#12007)
Bumps [pbkdf2](https://github.com/crypto-browserify/pbkdf2) from 3.1.2 to 3.1.3.
- [Changelog](https://github.com/browserify/pbkdf2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/crypto-browserify/pbkdf2/compare/v3.1.2...v3.1.3)

---
updated-dependencies:
- dependency-name: pbkdf2
  dependency-version: 3.1.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-24 15:12:15 +00:00
Humair Khan 4dc64056b4
chore(docs): change adrs to kep in contrib doc (#12011)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-06-24 14:19:16 +00:00
dependabot[bot] 9b252ff4fb
chore(deps): bump urllib3 from 2.4.0 to 2.5.0 in /sdk/python (#11999)
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.4.0 to 2.5.0.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.4.0...2.5.0)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-version: 2.5.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-23 20:14:14 +00:00
Helber Belmiro 8bbdd6e81f
chore(backend): Fixed warnings in Dockerfiles (#12003)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2025-06-23 17:30:15 +00:00
Humair Khan a30e9ead10
chore(backend): upgrade minio-go to v7 (#12005)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-06-23 17:07:14 +00:00
Helber Belmiro f240685bf3
fix(backend): Fix boolean flag syntax for `--cache_disabled` and update test to cover pipelines with outputs (#12001)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2025-06-23 15:39:14 +00:00
Milos Grubjesic 3154ef9258
fix(apiserver): fix typos in resource_manager.go: (#11998)
This PR fixes several minor typos in backend/src/apiserver/resource/resource_manager.go:

Changes "gabarage-collected" to "garbage-collected"
Changes "successfull" to "successful"
Fixes "successfully workflows runs" and "failed workflows runs" to "successful workflow runs" and "failed workflow runs"
Corrects "reties" to "retries"
These changes improve code clarity and documentation quality. No functional code changes were made.

Signed-off-by: milosjava <milosjava@gmail.com>
2025-06-23 12:00:14 +00:00
Michael 88870823fa
chore: update workflows to test proto changes in ci (#11995)
Signed-off-by: zazulam <m.zazula@gmail.com>
2025-06-20 00:00:12 +00:00
dependabot[bot] da358e5176
chore(deps): bump urllib3 from 1.26.15 to 2.5.0 in /components/aws/sagemaker (#11993)
Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.15 to 2.5.0.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/1.26.15...2.5.0)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-version: 2.5.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-18 21:57:10 +00:00
dependabot[bot] b9a01c0e40
chore(deps): bump protobuf from 4.25.4 to 4.25.8 in /test/sample-test (#11986)
Bumps [protobuf](https://github.com/protocolbuffers/protobuf) from 4.25.4 to 4.25.8.
- [Release notes](https://github.com/protocolbuffers/protobuf/releases)
- [Changelog](https://github.com/protocolbuffers/protobuf/blob/main/protobuf_release.bzl)
- [Commits](https://github.com/protocolbuffers/protobuf/compare/v4.25.4...v4.25.8)

---
updated-dependencies:
- dependency-name: protobuf
  dependency-version: 4.25.8
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-17 12:56:10 +00:00
Humair Khan 5181358d6a
user master for dev manifests (#11977)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-06-17 12:55:09 +00:00
dependabot[bot] 11000f5fab
chore(deps): bump protobuf from 4.25.3 to 4.25.8 in /test/kfp-functional-test (#11985)
Bumps [protobuf](https://github.com/protocolbuffers/protobuf) from 4.25.3 to 4.25.8.
- [Release notes](https://github.com/protocolbuffers/protobuf/releases)
- [Changelog](https://github.com/protocolbuffers/protobuf/blob/main/protobuf_release.bzl)
- [Commits](https://github.com/protocolbuffers/protobuf/compare/v4.25.3...v4.25.8)

---
updated-dependencies:
- dependency-name: protobuf
  dependency-version: 4.25.8
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-17 12:54:09 +00:00
dependabot[bot] aadf9e3cdf
chore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /frontend/server (#11978)
Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.11 to 1.1.12.
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](https://github.com/juliangruber/brace-expansion/compare/1.1.11...v1.1.12)

---
updated-dependencies:
- dependency-name: brace-expansion
  dependency-version: 1.1.12
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-16 13:15:43 +00:00
dependabot[bot] cfa47fecbc
chore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /frontend (#11972)
Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.11 to 1.1.12.
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](https://github.com/juliangruber/brace-expansion/compare/1.1.11...v1.1.12)

---
updated-dependencies:
- dependency-name: brace-expansion
  dependency-version: 1.1.12
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-13 12:52:52 +00:00
dependabot[bot] 40a9ad4823
chore(deps): bump brace-expansion in /test/frontend-integration-test (#11971)
Bumps  and [brace-expansion](https://github.com/juliangruber/brace-expansion). These dependencies needed to be updated together.

Updates `brace-expansion` from 2.0.1 to 2.0.2
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](https://github.com/juliangruber/brace-expansion/compare/v2.0.1...v2.0.2)

Updates `brace-expansion` from 1.1.11 to 2.0.2
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](https://github.com/juliangruber/brace-expansion/compare/v2.0.1...v2.0.2)

---
updated-dependencies:
- dependency-name: brace-expansion
  dependency-version: 2.0.2
  dependency-type: indirect
- dependency-name: brace-expansion
  dependency-version: 2.0.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-11 22:37:51 +00:00
Matt Prahl 54475637a2
fix(test): Fix the frontend sample test (#11968)
Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-06-10 19:47:49 +00:00
dependabot[bot] 441a465d19
chore(deps): bump requests from 2.32.2 to 2.32.4 in /test/kfp-functional-test (#11966)
Bumps [requests](https://github.com/psf/requests) from 2.32.2 to 2.32.4.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.32.2...v2.32.4)

---
updated-dependencies:
- dependency-name: requests
  dependency-version: 2.32.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-10 19:30:50 +00:00
Matt Prahl b4772693ae
fix(backend): Fix the pipeline samples (#11967)
After making name and display_name separate fields in the API, the
pipeline sample upload code needed to accomodate that, otherwise it
would try to upload the pipeline without a display name, which is a
required field. The backwards compatibility was handled at the API
server level but this code bypassed the API server endpoints and used
the resource manager directly.

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-06-10 17:41:49 +00:00
dependabot[bot] b306d8d6d6
chore(deps): bump requests from 2.18.4 to 2.32.4 in /components/contrib/arena/docker (#11963)
Bumps [requests](https://github.com/psf/requests) from 2.18.4 to 2.32.4.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.18.4...v2.32.4)

---
updated-dependencies:
- dependency-name: requests
  dependency-version: 2.32.4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-10 16:31:50 +00:00
jpthompson23 2b04d2f896
test(backend): Add unit test for NewLauncherV2 (#11854)
Signed-off-by: John Thompson <jpthompson23@gmail.com>
2025-06-06 19:38:16 +00:00
Laurent Goderre cc7830812a
feat(backend): Use native k8s probes for api-server and visualization (#11960)
Signed-off-by: Laurent Goderre <laurent.goderre@docker.com>
2025-06-06 19:07:17 +00:00
Alyssa Goins 0d857b6f8a
feat(backend/sdk): support PipelineTaskFinalStatus input (#11953)
Add support for exit handlers to take input PipelineTaskFinalStatus.

Signed-off-by: agoins <alyssacgoins@gmail.com>
2025-06-06 19:01:16 +00:00
Christian Bartram faa2c8cd16
fix(cache): Optimize cache expiration query solves #11614 (#11920)
* fix(cache): Optimize cache expiration query, add index to db column, rm duplicate cache row insertions

Signed-off-by: cbartram <cbartram3@gmail.com>

* fix(cache): Use composite index for cache started_at_in_sec and id fields Signed-off-by: cbartram <cbartram3@gmail.com>

Signed-off-by: cbartram <cbartram3@gmail.com>

* chore(format): Fix formatting, rm commented code Signed-off-by: cbartram <cbartram3@gmail.com>

Signed-off-by: cbartram <cbartram3@gmail.com>

---------

Signed-off-by: cbartram <cbartram3@gmail.com>
2025-06-06 18:42:16 +00:00
dependabot[bot] 8f5c277d9b
chore(deps): bump torch from 2.6.0 to 2.7.1 in /samples/contrib/ibm-samples/ffdl-seldon/source/seldon-pytorch-serving-image (#11959)
Bumps [torch](https://github.com/pytorch/pytorch) from 2.6.0 to 2.7.1.
- [Release notes](https://github.com/pytorch/pytorch/releases)
- [Changelog](https://github.com/pytorch/pytorch/blob/main/RELEASE.md)
- [Commits](https://github.com/pytorch/pytorch/compare/v2.6.0...v2.7.1)

---
updated-dependencies:
- dependency-name: torch
  dependency-version: 2.7.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-06 18:27:16 +00:00
Laurent Goderre 48468ae1fa
feat(frontend) Use native k8s probes for pipeline-ui (#11955)
Signed-off-by: Laurent Goderre <laurent.goderre@docker.com>
2025-06-06 17:18:16 +00:00
Matt Prahl ea20731060
feat(backend/frontend): Add the name field for pipelines and pipeline versions (#11952)
* Add the name field for pipelines and pipeline versions

The API only accepted display_name, which accepted arbitrary characters
but this does not work well in Kubernetes native API mode (Kubernetes
pipeline store) since object names must be a valid DNS subdomain.

This commit adds the name field which is required, but for backwards
compatibility, the API will accept just name or display_name and
duplicate the set value to the unset field. For existing users, they
will only see that there is an extra field of "name" on pipelines and
pipeline versions that is the same value as "display_name".

The database migration logic adds a new DisplayName column and sets the
values to what was in the Name column. Confusingly, the API field
"display_name" used to map the a database column of "Name".

The UI now handles both name and display name but for a simpler user
experience, the display name form fields when uploading a pipeline are
hidden when not in Kubernetes native API mode (Kubernetes pipeline
store) since there is no need to have a display name since there is no
naming restrictions on the name.

Signed-off-by: mprahl <mprahl@users.noreply.github.com>

* Add a better API error when a Kubernetes object name is invalid

Signed-off-by: mprahl <mprahl@users.noreply.github.com>

---------

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-06-06 15:01:16 +00:00
Vani Haripriya Mudadla dda6033a03
feat(sdk): update PipelineConfig to reflect new workspace Protobuf changes (#11934)
Signed-off-by: VaniHaripriya <vmudadla@redhat.com>
2025-06-05 17:51:15 +00:00
Michael 7ba495fcc3
chore: add c1 to ADOPTERS.md (#11954)
Signed-off-by: Michael <m.zazula@gmail.com>
2025-06-03 13:53:14 +00:00
Robert Sun b87b521fe9
docs(frontend): Added clean up section to openshift docs (#11951)
Signed-off-by: rsun19 <robertssun1234@gmail.com>
2025-06-02 16:24:24 +00:00
Francisco Arceo 8b0c022b33
chore: Adding Devin's DeepWiki to README (#11948)
* chore: Adding Devin's DeepWiki to README

Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>

using Devin's badge instead

Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>

Adding badge and section:

Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>

* adding warning and moved below documentation

Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>

---------

Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
2025-06-02 15:54:23 +00:00
Anish Asthana f342504655
chore: Nest sdk docs (#11945)
* Nest SDK readthedocs documentation

Signed-off-by: Anish Asthana <anishasthana1@gmail.com>

* Merge sdk OWNERS with KFP website approvers

Signed-off-by: Anish Asthana <anishasthana1@gmail.com>

---------

Signed-off-by: Anish Asthana <anishasthana1@gmail.com>
2025-05-30 20:36:20 +00:00
Robert Sun 73b58e4f16
docs(frontend): added build instruction to readme (#11943)
Signed-off-by: rsun19 <robertssun1234@gmail.com>
2025-05-30 14:55:20 +00:00
Humair Khan 4c966f7773
chore: pipeline api spec minor release (#11939)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-05-29 14:35:20 +00:00
Alyssa Goins 8fe090d461
fix(tests): free up space in kfp samples test workflow (#11942)
Fixes flaky test behavior in kfp-samples.

Signed-off-by: agoins <alyssacgoins@gmail.com>
2025-05-29 12:55:19 +00:00
dependabot[bot] 9fdbe980c8
chore(deps): bump tornado from 6.4.2 to 6.5.1 in /test/sample-test (#11936)
Bumps [tornado](https://github.com/tornadoweb/tornado) from 6.4.2 to 6.5.1.
- [Changelog](https://github.com/tornadoweb/tornado/blob/master/docs/releases.rst)
- [Commits](https://github.com/tornadoweb/tornado/compare/v6.4.2...v6.5.1)

---
updated-dependencies:
- dependency-name: tornado
  dependency-version: 6.5.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-28 21:16:19 +00:00
Alyssa Goins beae62fb52
feat(backend) implement retryStrategy for nested pipelines (#11908)
Signed-off-by: agoins <alyssacgoins@gmail.com>
2025-05-28 19:52:19 +00:00
Matt Prahl 53bb3a0aad
test: Update the Kubernetes and Python version ranges in the CI (#11924)
* Minimize the Kubernetes version range in the CI

This reduces the matrix to only include the low and high versions.

See the KFP community call notes for more context:
https://docs.google.com/document/d/1cHAdK1FoGEbuQ-Rl6adBDL5W2YpDiUbnMLIwmoXBoAU/edit?tab=t.0#heading=h.fovolzywu84d

Signed-off-by: mprahl <mprahl@users.noreply.github.com>

* Reduce the testing matrix for Python versions

This reduces the Python versions being tested to the low and high
versions to reduce GitHub CI consumption.

See the KFP community call discussion for more context:
https://docs.google.com/document/d/1cHAdK1FoGEbuQ-Rl6adBDL5W2YpDiUbnMLIwmoXBoAU/edit?tab=t.0#heading=h.fovolzywu84d

Signed-off-by: mprahl <mprahl@users.noreply.github.com>

* Add an option to run integration tests locally

Signed-off-by: mprahl <mprahl@users.noreply.github.com>

* Stop using whalesay in the tests

The container image is over 10 years old and is in a format that is
deprecated on newer Kubernetes versions.

Signed-off-by: mprahl <mprahl@users.noreply.github.com>

---------

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-05-28 13:37:20 +00:00
Alyssa Goins 1b0e6535b5
docs: add GoLand-specific configs to backend Readme (#11919)
Updates V2_DRIVER_COMMAND argument and adds runtime arguments for starting a remote debug session in GoLand.

Signed-off-by: agoins <alyssacgoins@gmail.com>
2025-05-28 13:36:19 +00:00
Francisco Arceo 6c32514c35
chore: Updating KFP docs (#11927)
* chore: Updating KFP docs

Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>

* remove html reference

Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>

* updating python version

Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>

* Update index.rst

Co-authored-by: Matt Prahl <mprahl@users.noreply.github.com>
Signed-off-by: Francisco Arceo <farceo@redhat.com>

* Update quickstart.rst

Co-authored-by: Matt Prahl <mprahl@users.noreply.github.com>
Signed-off-by: Francisco Arceo <farceo@redhat.com>

* Update quickstart.rst

Co-authored-by: Matt Prahl <mprahl@users.noreply.github.com>
Signed-off-by: Francisco Arceo <farceo@redhat.com>

* rebasing

Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>

* removed overview file

Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>

* updated to make things look better

Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>

* Update docs/source/overview.rst

Co-authored-by: Matt Prahl <mprahl@users.noreply.github.com>
Signed-off-by: Francisco Arceo <farceo@redhat.com>

* Update docs/source/overview.rst

Co-authored-by: Matt Prahl <mprahl@users.noreply.github.com>
Signed-off-by: Francisco Arceo <farceo@redhat.com>

* Update docs/source/installation.rst

Co-authored-by: Matt Prahl <mprahl@users.noreply.github.com>
Signed-off-by: Francisco Arceo <farceo@redhat.com>

* updating conf.py

Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>

---------

Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
Signed-off-by: Francisco Arceo <farceo@redhat.com>
Co-authored-by: Matt Prahl <mprahl@users.noreply.github.com>
2025-05-27 21:02:18 +00:00
Humair Khan 8329e64716
feat: add openshift env to manifests (#11932)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-05-27 20:26:13 +00:00
Humair Khan 732a3f26f5
docs(frontend): add ui dev docs (#11931)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-05-27 17:19:12 +00:00
Matthieu Evrin d45b5810eb
chore(ci): clean up unnecessary parentheses and fix the formatting of the CI files (#11926)
* chore(ci): clean up unnecessary parentheses

Signed-off-by: lekaf974 <matthieu.evrin@gmail.com>

* chore(ci): update adding missing spaces based on suggestions from code review

Co-authored-by: Helber Belmiro <helber.belmiro@gmail.com>
Signed-off-by: Matthieu Evrin <6630779+lekaf974@users.noreply.github.com>

---------

Signed-off-by: lekaf974 <matthieu.evrin@gmail.com>
Signed-off-by: Matthieu Evrin <6630779+lekaf974@users.noreply.github.com>
Co-authored-by: Helber Belmiro <helber.belmiro@gmail.com>
2025-05-27 12:44:02 +00:00
Anton Pechenin 3337b5e323
- fix(launcher): missing executorInput parameter values caused by {{$}} evaluation order (#11925)
Signed-off-by: arpechenin <arpechenin@avito.ru>
Co-authored-by: arpechenin <arpechenin@avito.ru>
2025-05-22 17:59:20 +00:00
Vani Haripriya Mudadla 67f9b7d73c
feat(proto): Add WorkspaceConfig and KubernetesWorkspaceConfig message types to pipeline_spec proto (#11921)
Signed-off-by: VaniHaripriya <vmudadla@redhat.com>
2025-05-21 21:57:19 +00:00
Helber Belmiro 9761a31ec3
chore(test): fixed log collection in tests (#11910)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2025-05-21 18:15:46 +00:00
Caroline DeVoto e329fa39b6
chore: Enable go fmt as a lint check for Go code (#11830)
Signed-off-by: Caroline DeVoto <cmdevoto@users.noreply.github.com>
Co-authored-by: Caroline DeVoto <cmdevoto@users.noreply.github.com>
2025-05-19 14:31:37 +00:00
Humair Khan dc841dde6f
chore(backend): upgrade mysql to 8.4 (#11917)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-05-16 17:59:24 +00:00
Matt Prahl 7342f2b737
docs(KEP): Propose a new pipeline run workspace feature (#11875)
* Propose a new pipeline run workspace feature

Signed-off-by: mprahl <mprahl@users.noreply.github.com>

* Fix update-toc.sh and fix outdated ToCs

Signed-off-by: mprahl <mprahl@users.noreply.github.com>

---------

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-05-16 17:41:23 +00:00
Helber Belmiro 4f09f01090
chore(test): Update cache test timeout and polling intervals (#11916)
Adjusted the timeout from 3 to 4 minutes and polling interval from 10 to 5 seconds in the cache integration test. This ensures more robust testing by allowing sufficient time for operations to complete while increasing polling frequency.

Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2025-05-15 17:00:23 +00:00
Vani Haripriya Mudadla c368ac6881
feat(backend): Add CLI flags to support Kubernetes native API implementation (#11907)
Signed-off-by: VaniHaripriya <vmudadla@redhat.com>
2025-05-15 13:22:24 +00:00
Chen Sun d6c864f038 chore(components): Update OS packages in GCPC container image
Signed-off-by: Chen Sun <chesu@google.com>
PiperOrigin-RevId: 758746089
2025-05-14 10:43:21 -07:00
Humair Khan 0031766201
chore(backend): break up driver logic (#11885)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-05-14 15:11:23 +00:00
Helber Belmiro 2a175883ee
chore(tests): fix KFP SDK tests (#11911)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2025-05-14 13:27:22 +00:00
Anish Asthana 5bc1a9bed1
chore: Add IBM Research Foundation Model Data Engineering team (#11905)
Signed-off-by: Anish Asthana <anishasthana1@gmail.com>
2025-05-13 19:28:21 +00:00
Chen Sun 943643b413 chore(components): GCPC 2.20.1 Release
Signed-off-by: Chen Sun <chesu@google.com>
PiperOrigin-RevId: 757922879
2025-05-12 14:53:46 -07:00
Vani Haripriya Mudadla 988477a7de
feat(backend): Add migration script to create Pipeline and PipelineVersion objects from the database to Kubernetes API (#11884)
Signed-off-by: VaniHaripriya <vmudadla@redhat.com>
2025-05-09 20:56:43 +00:00
Chen Sun 508fc9dd8f chore(components): fix v1 model_evaluations components mingled under the preview module
Signed-off-by: Chen Sun <chesu@google.com>
PiperOrigin-RevId: 756808592
2025-05-09 10:02:44 -07:00
Mai Nakagawa ef94ccd734
fix(sdk): Resolves issue when using ParallelFor with param and depending tasks (#11903)
Signed-off-by: Mai Nakagawa <nakagawa.mai@gmail.com>
2025-05-09 15:49:41 +00:00
Shekhar Prasad Rajak 18bed6c70d
chore: correct broken links in README.md (#11896)
* Update README.md

Signed-off-by: Shekhar Prasad Rajak <5774448+Shekharrajak@users.noreply.github.com>

* Part 3 link reverted

Co-authored-by: Helber Belmiro <helber.belmiro@gmail.com>
Signed-off-by: Shekhar Prasad Rajak <5774448+Shekharrajak@users.noreply.github.com>

---------

Signed-off-by: Shekhar Prasad Rajak <5774448+Shekharrajak@users.noreply.github.com>
Co-authored-by: Helber Belmiro <helber.belmiro@gmail.com>
2025-05-09 14:59:41 +00:00
Humair Khan e276474f97
add maintainer to kfp (#11900)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-05-08 16:57:40 +00:00
Yunkai Li 0e7e806b4c
feat(frontend): Add "Always Use Latest Version" option for recurring runs (fixes #11581) (#11755)
Implements a checkbox UI component that enables automatic pipeline version selection for recurring runs, building upon @muzzlol's original work.

Key changes:

- Added "Use Latest Version" toggle functionality
- Removed localStorage dependency (per @mprahl's feedback)
- Improved version selector accessibility labels
- Added comprehensive test coverage

Signed-off-by: kaikaila <lyk2772@126.com>
Co-authored-by: muzzlol <muzxmmilkhxn@gmail.com>
2025-05-08 13:10:40 +00:00
Helber Belmiro 9aebb62be1
feat(backend): add the option to enable/disable cache globally (#11831)
* feat(backend): add the option to enable/disable cache globally

Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>

* chore(backend): added logging when cache is disabled globally

Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>

* Update backend/src/apiserver/resource/resource_manager.go

Co-authored-by: Giulio Frasca <giulio.m.frasca@gmail.com>
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>

* chore(backend): Fixed Scheduled Workflows

Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>

* chrore(backend): Added integration tests

Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>

* chrore(backend): Removed container arg when --cache_enabled is true

Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>

* Update backend/src/v2/cmd/driver/main.go

Co-authored-by: Matt Prahl <mprahl@users.noreply.github.com>
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>

* Update backend/src/v2/cmd/compiler/main.go

Co-authored-by: Matt Prahl <mprahl@users.noreply.github.com>
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>

* chrore(backend): Renamed to CacheDisabled and removed pointers

Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>

* chrore(backend): Added Argo compiler unit test with the cache disabled

Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>

---------

Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
Co-authored-by: Giulio Frasca <giulio.m.frasca@gmail.com>
Co-authored-by: Matt Prahl <mprahl@users.noreply.github.com>
2025-05-08 12:45:40 +00:00
Humair Khan 0010b06731
chore: handle empty tolerations dict/lists parrameterization (#11898)
* remove unnecessary nil err

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

* ignore empty tolerations

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

---------

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-05-07 20:41:39 +00:00
Matt Prahl 9e4f26ce74
chore: Add mprahl to the samples owners file (#11897)
Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-05-07 19:21:39 +00:00
Alyssa Goins 9245739f6f
feat(backend): parameterize retryStrategy input in Argo workflow (#11861)
Prior to this commit, there was a workflow template added for every unique
retryStrategy setting. This is now consolidates to a single retryStrategy
template.

Signed-off-by: agoins <alyssacgoins@gmail.com>
2025-05-07 19:14:39 +00:00
Francisco Arceo e5cb3023b1
chore: Adding Adopters file for CNCF graduation (#11894)
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
2025-05-06 18:55:38 +00:00
Daniel Dowler 4503eae10d
fix(sdk): fix pip install for dev (#11891)
Signed-off-by: Daniel Dowler <12484302+dandawg@users.noreply.github.com>
2025-05-06 04:00:38 +00:00
Michael ed828b513a
feat(backend/sdk): enable dsl.Collected for parameters & artifacts (#11725)
* feat(backend/sdk): enable dsl.Collected for params & artifacts

Signed-off-by: zazulam <m.zazula@gmail.com>

* feat(backend): collect through loops & dags

Signed-off-by: zazulam <m.zazula@gmail.com>

To enable users to use loops similar to subdags, the initial collecting
implementation went only 1 layer deep of loops/subdags. This
implementation serves to handle multifacted approaches of pipelines that
users can generate.

---------

Signed-off-by: zazulam <m.zazula@gmail.com>
2025-05-05 22:55:37 +00:00
Matt Prahl 70d28885f2
feat(backend): Allow the launcher command to be configurable (#11888)
This allows the launcher command to be overridden with
the V2_LAUNCHER_COMMAND environment variable. This is useful if you need
to override the command to launch Delve for debugging or you have a
situation that requires using a different binary in the container image
based on the environment.

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-05-02 15:06:06 +00:00
Humair Khan 24782d178d
chore: update all owners files (#11886)
Various owners' files reviewers/approvers are no longer involved with
the community. Additionaly, we have various other folks that are
involved and have shown an active interest in reviewing various portions
of the code base. This change updates all owners files to reflect this
current state of the community.

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-05-02 14:47:04 +00:00
Matt Prahl 56da004d91
fix(backend): Stop logging the strack trace on benign user errors (#11883)
Prior to this change, if a user requested a pipeline version that no
longer exists, it'd cause a whole stack trace to be displayed in the
logs. For benign errors, this now is a single info log.

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-04-30 20:52:03 +00:00
Christian c68640d950
fix(sdk): resolve issue when creating pipeline version from pipeline name using the cli. Fixes #11810 (#11866)
It is checked that not both are passed in as parameters, however in the
case of passing in the `pipeline_name` the `pipeline_id` is fetched via
the client and then both values are passed to `upload_pipeline_version`
defeating the initial check and raising an error.

Simply removing the `pipeline_name` argument from the call to
`upload_pipeline_version` fixes this as the `pipeline_id` is always set.

Signed-off-by: Christian Junker <chjdev@users.noreply.github.com>
2025-04-30 20:21:03 +00:00
Matt Prahl c03127d967
feat(backend): Add the Kubernetes native pipeline store (#11881)
* Add the Kubernetes native pipeline store

This also improves cache update race conditions in the webhooks.

Co-authored-by: Matt Prahl <mprahl@users.noreply.github.com>
Signed-off-by: Ricardo M. Oliveira <rmartine@redhat.com>

* Use controller-runtime for the non-caching client

Signed-off-by: mprahl <mprahl@users.noreply.github.com>

* Put the Kubernetes native CI manifests under the Argo manifests

Signed-off-by: mprahl <mprahl@users.noreply.github.com>

* Fix the flaky Kubernetes pipeline store tests

Some tests set the viper configuration of POD_NAMESPACE while others
didn't and so the order of the tests mattered. This now sets and resets
the viper configuration for each test.

Signed-off-by: mprahl <mprahl@users.noreply.github.com>

* Modify the suggested pipeline version name to be a valid K8s name

This is more important for the Kubernetes pipeline store.

Signed-off-by: mprahl <mprahl@users.noreply.github.com>

* Fix the ml-pipeline Service ports in K8s native mode

The KFP UI automatically uses the first port listed in the ml-pipeline
Service to communicate with the KFP API. Using a JSON patch to add the
webhook port ensures it doesn't change the order.

Signed-off-by: mprahl <mprahl@users.noreply.github.com>

---------

Signed-off-by: Ricardo M. Oliveira <rmartine@redhat.com>
Signed-off-by: mprahl <mprahl@users.noreply.github.com>
Co-authored-by: Ricardo M. Oliveira <rmartine@redhat.com>
2025-04-30 19:53:03 +00:00
Hana Joo d90e4e8a54 No public description
Tested:
Signed-off-by: Hana Joo <hanajoo@google.com>
PiperOrigin-RevId: 753224247
2025-04-30 10:35:03 -07:00
dependabot[bot] 2b94ee6101
chore(deps): bump sagemaker from 2.1.0 to 2.237.3 in /components/aws/sagemaker (#11876)
Bumps [sagemaker](https://github.com/aws/sagemaker-python-sdk) from 2.1.0 to 2.237.3.
- [Release notes](https://github.com/aws/sagemaker-python-sdk/releases)
- [Changelog](https://github.com/aws/sagemaker-python-sdk/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/sagemaker-python-sdk/compare/v2.1.0...v2.237.3)

---
updated-dependencies:
- dependency-name: sagemaker
  dependency-version: 2.237.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-30 12:06:04 +00:00
Humair Khan 8261e4af70
chore: bump master to release 2.5 (#11872)
* chore(release): bumped version to 2.5.0

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

* remove unneeded ci files

these are added from the release script, until the scripts are updated,
these are manually removed.

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

* revert incorrect changelog changes for 2.5

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

* correct 2.5.x change log (#11878)

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

---------

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-04-29 18:24:02 +00:00
Chen Sun 27ba5ff671 chore(components): Relax KFP SDK dependency for GCPC
Signed-off-by: Chen Sun <chesu@google.com>
PiperOrigin-RevId: 752807981
2025-04-29 11:11:28 -07:00
Chen Sun 3ab625c645 chore(components): GCPC 2.20.0 Release
Signed-off-by: Chen Sun <chesu@google.com>
PiperOrigin-RevId: 752751814
2025-04-29 08:48:38 -07:00
Humair Khan 8a402c10a8
update release doc paths & make script executable (#11871)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-04-28 21:51:01 +00:00
Humair Khan fe51dfd792
chore(sdk): kfp and kfp-kubernetes 2.13 & 1.5 (#11870)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-04-28 20:37:00 +00:00
Humair Khan 64e8264352
chore: fix kfp-kubernetes pipeline spec resolution errors (#11868)
* use packaged pipeline spec in k8s platform pkg

kfp-kubernetes expects pipeline spec to be present in global namespace
this change updates generate proto code to replace this import to
correctly reference the spec in the kfp.pipeline_spec namespace.

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

* update to protoc 3.20

upgrading to 3.20 resolves issues where some of the proto python
generated code attempts to directly create descriptors. This issue is
encountered when trying to use kfp-kubernetes packages with kfp sdk,
forcing the user to downgrade protobuf to 3.20 or lower despite the
kfp sdk and kfp-kubernetes supporting >=4.0. This change resolves
this issue.

updating protoc also requires regeneration of all go and python proto code, as well us updates to the api generate and release images.

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

---------

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-04-28 15:11:01 +00:00
Ricardo M. Oliveira 0359551b76 Fix Integration tests
Signed-off-by: Ricardo M. Oliveira <rmartine@redhat.com>
2025-04-25 16:20:06 -04:00
Humair Khan fb182355f0 add list or dict support for add toleration json
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-04-25 13:31:20 -04:00
Humair Khan 90909fc0ef add backend support for toleration lists.
clarify toleration json docs

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-04-25 13:31:20 -04:00
Humair Khan 7529bbeba7 switch selenium image to ghcr
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-04-25 11:31:02 -04:00
Humair Khan e21bbbaf22
chore(sdk): release kfp sdk 2.12.2 (#11843)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-04-23 20:02:57 +00:00
Helber Belmiro 93675b03d4
chore(backend): fixed support for Podman in Makefile (#11844)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2025-04-23 17:34:32 +00:00
dependabot[bot] 5c868d40ad
chore(deps): bump sagemaker from 2.1.0 to 2.237.3 in /components/aws/sagemaker/TrainingJob/samples/mnist-kmeans-training (#11847)
Bumps [sagemaker](https://github.com/aws/sagemaker-python-sdk) from 2.1.0 to 2.237.3.
- [Release notes](https://github.com/aws/sagemaker-python-sdk/releases)
- [Changelog](https://github.com/aws/sagemaker-python-sdk/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/sagemaker-python-sdk/compare/v2.1.0...v2.237.3)

---
updated-dependencies:
- dependency-name: sagemaker
  dependency-version: 2.237.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-22 13:26:31 +00:00
dependabot[bot] 3f6a93b28d
chore(deps): bump torch from 1.0.0 to 2.6.0 in /samples/contrib/ibm-samples/ffdl-seldon/source/seldon-pytorch-serving-image (#11848)
Bumps [torch](https://github.com/pytorch/pytorch) from 1.0.0 to 2.6.0.
- [Release notes](https://github.com/pytorch/pytorch/releases)
- [Changelog](https://github.com/pytorch/pytorch/blob/main/RELEASE.md)
- [Commits](https://github.com/pytorch/pytorch/compare/v1.0.0...v2.6.0)

---
updated-dependencies:
- dependency-name: torch
  dependency-version: 2.6.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-22 13:25:31 +00:00
dependabot[bot] f63c7c530d
chore(deps): bump minimist from 1.2.5 to 1.2.8 in /frontend (#11846)
Bumps [minimist](https://github.com/minimistjs/minimist) from 1.2.5 to 1.2.8.
- [Changelog](https://github.com/minimistjs/minimist/blob/main/CHANGELOG.md)
- [Commits](https://github.com/minimistjs/minimist/compare/v1.2.5...v1.2.8)

---
updated-dependencies:
- dependency-name: minimist
  dependency-version: 1.2.8
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-21 22:15:30 +00:00
Humair Khan f3e3fac699
chore(sdk): update go toolchain patch (#11845)
and also add api reference to k8s platform reference to kfp sdk api

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-04-21 22:14:30 +00:00
Helber Belmiro d38418efea
fix(backend): fixed Dockerfile (#11841)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2025-04-21 15:26:26 +00:00
Humair Khan 611d582004
add missing release note updates to sdk main branch (#11842)
* add missing release note for #11839

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

* add missing release note for #11804

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

---------

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-04-21 15:15:27 +00:00
Matt Prahl f9d487cb60
fix(sdk): Add SDK support for setting resource limits on older KFP versions (#11839)
For context, the commit 70aaf8a9a4 removed
support for the old fields (without a resource_ prefix). This was
added back in commit 6ebf4aae03 but done in a way
that broke any usage of pipeline input parameters but was to support the
current KFP backend which did not yet support the new fields. In commit
7c931ae201, the old fields were removed
again but added support for the new field in KFP backend.

This commit addresses the case where a user is using a new SDK but with
a KFP backend prior to 2.4.

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-04-21 13:46:27 +00:00
dependabot[bot] 05581ccefc
chore(deps): bump golang.org/x/net from 0.36.0 to 0.38.0 (#11838)
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.36.0 to 0.38.0.
- [Commits](https://github.com/golang/net/compare/v0.36.0...v0.38.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-version: 0.38.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-17 14:06:24 +00:00
Helber Belmiro e696472a5b
chore(backend): Optimized Dockerfiles (#11834)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2025-04-17 13:57:24 +00:00
dependabot[bot] 924b13c98c
chore(deps): bump golang.org/x/net from 0.36.0 to 0.38.0 in /test/tools/project-cleaner (#11835)
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.36.0 to 0.38.0.
- [Commits](https://github.com/golang/net/compare/v0.36.0...v0.38.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-version: 0.38.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-17 13:43:24 +00:00
Anton Pechenin 598826e1cc
fix component retry test (#11836)
Signed-off-by: ntny <ntny1986@gmail.com>
Signed-off-by: arpechenin <arpechenin@avito.ru>
Co-authored-by: arpechenin <arpechenin@avito.ru>
2025-04-17 13:36:24 +00:00
Ricardo Martinelli de Oliveira a4f07231a7
chore: Add the OpenSSF Best Practices badge (#11543)
Signed-off-by: Ricardo M. Oliveira <rmartine@redhat.com>
2025-04-16 14:31:24 +00:00
Humair Khan 177cd3b3e7
chore: update release notes (#11827)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-04-15 22:00:22 +00:00
Helber Belmiro aa95142f5a
chore(test): Improved path filtering in the CI (#11806)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2025-04-15 20:40:23 +00:00
Alyssa Goins 88cff55914
fix(docs): Remove Podman as backend README pre-req (#11824)
* Remove Podman as backend README pre-req

Signed-off-by: agoins <alyssacgoins@gmail.com>

* Note Docker req for dev-kinda-cluster

Signed-off-by: agoins <alyssacgoins@gmail.com>

* Change back to Docker or Podman

Signed-off-by: agoins <alyssacgoins@gmail.com>

---------

Signed-off-by: agoins <alyssacgoins@gmail.com>
2025-04-15 14:07:23 +00:00
Michele Dolfi 866ff3556a
fix(deps): widen urllib3 upper bound to <3.0.0 (#11819)
Signed-off-by: Michele Dolfi <dol@zurich.ibm.com>
2025-04-14 15:30:09 +00:00
Googler cc56d04c46 fix(components): Set tensorboard_experiment_name to random uuid when uploading plots in Starry Net pipeline
fix(components): Upgrade default Tensorflow version when setting test set and retrieving training artifacts to random uuid when uploading plots in Starry Net pipeline
fix(components): Bump Starry Net dataprep, trainer and predictor image versions.

Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 747428987
2025-04-14 08:27:55 -07:00
Humair Khan eee4986f18
(chore): add cleanup resources to sdk execution tests (#11823)
also disable argo logs

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-04-14 15:27:09 +00:00
dependabot[bot] 6877d16eac
chore(deps): bump @babel/runtime-corejs3 from 7.12.5 to 7.27.0 in /frontend (#11815)
Bumps [@babel/runtime-corejs3](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime-corejs3) from 7.12.5 to 7.27.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.27.0/packages/babel-runtime-corejs3)

---
updated-dependencies:
- dependency-name: "@babel/runtime-corejs3"
  dependency-version: 7.27.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-12 16:11:06 +00:00
Matt Prahl 69ba50b3fb
fix(backend): Fix run submissions with OwnerReferencesPermissionEnforcement on (#11821)
If the run is associated with a ScheduledWorkflow and the
OwnerReferencesPermissionEnforcement admission controller is on, it
requires the update verb on scheduledworkflows/finalizers to set the
proper owner reference.

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-04-11 18:01:06 +00:00
Matt Prahl 92e4921c4c
fix(docs): Use the latest driver and launcher images in the dev environment (#11820)
Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-04-11 17:11:07 +00:00
Alex 478ca08901
fix(tests): free up space in some test runners (#11818)
* fix(tests): free up space in some test runners

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>

* Add comments and logs

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>

---------

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
2025-04-11 16:43:05 +00:00
Alex 5a3dc8473e
chore(tests): remove unused logic (#11816)
Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
2025-04-11 03:17:05 +00:00
Alex 464ca3974f
feat(backend): implement logs as artifacts + CI updates (#11809)
* feat(backend): implement logs as artifacts

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: cmdevoto <carolined321@gmail.com>

* Address feedback and update golangci-lint

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>

* Implement flag

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: carter.fendley <carter.fendley@gmail.com>

* Handle logs in kubernetesPlatformOps

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>

* Broaden sdk execution test filter

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>

* Delete MinIO PVC at end of SDK execution tests

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>

* Emit more logs from sdk execution tests

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>

---------

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: cmdevoto <carolined321@gmail.com>
Co-authored-by: carter.fendley <carter.fendley@gmail.com>
2025-04-11 00:15:05 +00:00
Humair Khan 38a46533fc
update driver & launcher image handling (#11533)
This change relies on manifest yamls to specify the launcher & driver
that is pinned to a specific KFP version. The goal is to decouple having
to build launcher/driver at separate stages compared to api server.

This is accomplished by setting the hardcoded default to point to
"latest" and during release, api server is built with this hardcoding,
and the images for driver/launcher are patched into manifests post build
along with the other images.

The apiserver deployment manifest is reformatted using yq so the next
time the release.sh is ran, the user is not surprised by the entire file
reformatting unexpectedly.

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

# Conflicts:
#	manifests/kustomize/base/pipeline/ml-pipeline-apiserver-deployment.yaml

# Conflicts:
#	.github/resources/manifests/tekton/kustomization.yaml
2025-04-10 20:54:05 +00:00
Trevor Royer 1ad4f608a0
feat(sdk): add upload pipeline and upload pipeline version from pipeline function (#11804)
Signed-off-by: Trevor Royer <troyer@redhat.com>
2025-04-10 18:16:28 +00:00
Humair Khan 9544293af3
chore(backend): removed tekton backend (#11813)
As per community discussion, the tekton backend is being removed due to
lack of maintainers.

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-04-10 17:47:06 +00:00
Helber Belmiro 6e3548f33e
feat(backend): Add the ability to set a proxy for accessing external resources (#11771)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2025-04-10 17:44:05 +00:00
Alex a680e2230c
Revert "feat(backend): implement logs as artifacts (#11762)" (#11807)
This reverts commit cd3e747b5d.

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
2025-04-09 21:35:04 +00:00
co63oc 503beb51a3
chore: Fix typos (#11668)
Signed-off-by: co63oc <co63oc@users.noreply.github.com>
2025-04-09 18:56:07 +00:00
Humair Khan eacb586f62
(chore): add image builds for default branch (#11800)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-04-09 16:37:20 +00:00
Alex cd3e747b5d
feat(backend): implement logs as artifacts (#11762)
* feat(backend): implement logs as artifacts

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: cmdevoto <carolined321@gmail.com>

* Address feedback and update golangci-lint

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>

* Implement flag

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: carter.fendley <carter.fendley@gmail.com>

---------

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: cmdevoto <carolined321@gmail.com>
Co-authored-by: carter.fendley <carter.fendley@gmail.com>
2025-04-09 15:47:23 +00:00
Humair Khan f10c7bfbbc
fix setup env for kfp k8s lib tests (#11798)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-04-09 11:21:20 +00:00
Sidney Radcliffe 7c90446966
docs: mention that `set_container_image` works with dynamic images (#11795)
Signed-off-by: Sidney Radcliffe <sidneyradcliffe@gmail.com>
2025-04-09 11:19:21 +00:00
Helber Belmiro c5b9e4d21e
chore(test): Removed the no longer needed rerun-pr-jobs.yml (#11796)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2025-04-09 04:25:22 +00:00
Matt Prahl bb7a1082c4
Handle optional pipeline inputs in the driver (#11788)
If the pipeline run is submitted without specifying an optional
parameter and there is no default, it was not handled by the driver.
The approach taken is explicitly set null for these values and let the
driver handle if the component parameter has a default that can be
used in the launcher.

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-04-09 03:57:20 +00:00
M!l!nd 230c1b8f13
fix(deployment): Update kustomize manifests to use new label and patch syntax (#11733)
Signed-off-by: milinddethe15 <milinddethe15@gmail.com>
2025-04-08 19:02:21 +00:00
Ihar Hrachyshka 564522c42d
fix(local): warn about oci:// not supported too (#11794)
AFAIU no remote schema is currently supported for Local. This patch
consolidates all possible values under an Enum and then checks the
supplied url against all possible prefixes.

Signed-off-by: Ihar Hrachyshka <ihar.hrachyshka@gmail.com>
2025-04-08 16:00:21 +00:00
Anthonios Partheniou bd4fc5c667
fix(sdk): allow google-cloud-storage < 4 (#11735)
Signed-off-by: Anthonios Partheniou <partheniou@google.com>
2025-04-08 15:08:20 +00:00
Matt Prahl 048f28332b
Fix recurring run output when always using latest (#11790)
Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-04-07 20:35:19 +00:00
Humair Khan ade8a2d072
increase stale action timers (#11792)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-04-07 17:11:54 +00:00
Matt Prahl c9be64dca3
feat(backend): Add a mutating webhook for the PipelineVersion kind (#11782)
* Add a mutating webhook for the PipelineVersion kind

This mutating webhook adds labels to query pipeline versions by their
pipeline ID and pipeline name, and adds an owner's reference to the
pipeline it's a part of.

Signed-off-by: mprahl <mprahl@users.noreply.github.com>

* Delete the Argo Workflow object after successful SDK execution test

This will hopefully free up resources on the cluster and reduce the CI
flakes.

Signed-off-by: mprahl <mprahl@users.noreply.github.com>

---------

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-04-04 16:15:35 +00:00
Giulio Frasca 97e57368d1
chore: Upgrade Argo Workflows to v3.5.14, use Argo-provided images (#11783)
* chore: Upgrade Argo Workflows to v3.5.14

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>

* chore: Use upstream Argo Workflow images

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>

---------

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>
2025-04-02 20:50:34 +00:00
dependabot[bot] 556c98ae4e
chore(deps): bump axios from 1.6.0 to 1.8.2 in /frontend/server (#11732)
Bumps [axios](https://github.com/axios/axios) from 1.6.0 to 1.8.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.6.0...v1.8.2)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-02 13:06:33 +00:00
dependabot[bot] 9605c08026
chore(deps): bump @babel/runtime and @material-ui/icons in /frontend (#11787)
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) to 7.27.0 and updates ancestor dependencies [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) and [@material-ui/icons](https://github.com/mui-org/material-ui/tree/HEAD/packages/material-ui-icons). These dependencies need to be updated together.


Updates `@babel/runtime` from 7.14.6 to 7.27.0
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.27.0/packages/babel-runtime)

Updates `@babel/runtime` from 7.16.7 to 7.27.0
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.27.0/packages/babel-runtime)

Updates `@babel/runtime` from 7.2.0 to 7.27.0
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.27.0/packages/babel-runtime)

Updates `@babel/runtime` from 7.14.8 to 7.27.0
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.27.0/packages/babel-runtime)

Updates `@babel/runtime` from 7.14.0 to 7.27.0
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.27.0/packages/babel-runtime)

Updates `@babel/runtime` from 7.15.4 to 7.27.0
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.27.0/packages/babel-runtime)

Updates `@material-ui/icons` from 3.0.1 to 3.0.2
- [Release notes](https://github.com/mui-org/material-ui/releases)
- [Changelog](https://github.com/mui/material-ui/blob/v3.0.2/CHANGELOG.md)
- [Commits](https://github.com/mui-org/material-ui/commits/v3.0.2/packages/material-ui-icons)

---
updated-dependencies:
- dependency-name: "@babel/runtime"
  dependency-version: 7.27.0
  dependency-type: indirect
- dependency-name: "@babel/runtime"
  dependency-version: 7.27.0
  dependency-type: indirect
- dependency-name: "@babel/runtime"
  dependency-version: 7.27.0
  dependency-type: indirect
- dependency-name: "@babel/runtime"
  dependency-version: 7.27.0
  dependency-type: indirect
- dependency-name: "@babel/runtime"
  dependency-version: 7.27.0
  dependency-type: indirect
- dependency-name: "@babel/runtime"
  dependency-version: 7.27.0
  dependency-type: indirect
- dependency-name: "@material-ui/icons"
  dependency-version: 3.0.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-02 00:14:32 +00:00
Helber Belmiro ec727fd5f3
chore(test): Bumped ubuntu runner to 24.04 in rerun-pr-jobs.yml (#11786)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2025-04-01 21:20:32 +00:00
Helber Belmiro ae7c5243c5
chore(test): Replaced the unmaintained rerun action (#11784)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2025-04-01 14:57:32 +00:00
Abhinav2777 35041ef2bd
fix(metadata-writer): use mlmd_store.get_context_types() instead of workaround (#11753)
Replaced the previous workaround for checking if the DB is empty with
mlmd_store.get_context_types(), as the upstream issue (#28) is now resolved.

Signed-off-by: Abhinav Sai D <abhinavsai491@tutanota.com>
2025-03-31 20:07:33 +00:00
Humair Khan 596ec90bb8
chore(backend): upgade go and deps (#11780)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-03-31 19:50:31 +00:00
dependabot[bot] 3fa617f19c
chore(deps): bump @babel/helpers from 7.24.0 to 7.26.10 in /frontend (#11747)
Bumps [@babel/helpers](https://github.com/babel/babel/tree/HEAD/packages/babel-helpers) from 7.24.0 to 7.26.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.26.10/packages/babel-helpers)

---
updated-dependencies:
- dependency-name: "@babel/helpers"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-31 17:12:31 +00:00
Helber Belmiro 8ffcc2ccb0
test: Added the result of `kubectl get pods` to logs when waiting for pods to get ready (#11779)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2025-03-31 15:27:33 +00:00
dependabot[bot] ea9a8f2344
chore(deps): bump sagemaker from 2.1.0 to 2.237.3 in /samples/contrib/aws-samples/hosting_model_monitor_pipeline (#11769)
Bumps [sagemaker](https://github.com/aws/sagemaker-python-sdk) from 2.1.0 to 2.237.3.
- [Release notes](https://github.com/aws/sagemaker-python-sdk/releases)
- [Changelog](https://github.com/aws/sagemaker-python-sdk/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/sagemaker-python-sdk/compare/v2.1.0...v2.237.3)

---
updated-dependencies:
- dependency-name: sagemaker
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-31 15:21:32 +00:00
Matt Prahl 2efcde5efd
feat(backend): Create a validating webhook for the PipelineVersion kind (#11774)
* Create a validating webhook for the PipelineVersion kind

Signed-off-by: VaniHaripriya <vmudadla@redhat.com>

* Fix the manifests for the validating webhook

This fixes deployment and local development for the Kubernetes native
API manifests.

This also addresses other feedback.

Signed-off-by: mprahl <mprahl@users.noreply.github.com>

---------

Signed-off-by: VaniHaripriya <vmudadla@redhat.com>
Signed-off-by: mprahl <mprahl@users.noreply.github.com>
Co-authored-by: VaniHaripriya <vmudadla@redhat.com>
2025-03-31 11:23:31 +00:00
Humair Khan e9f5b5aee2
chore(backend): refactor driver tests (#11777)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-03-31 11:14:30 +00:00
Humair Khan fd1b48b471
feat(backend/sdk): Add input parameterization for various k8s resources (#11770)
* add backend support for k8s platform inputs

This change adds driver support for input parameter support for the
kubernetes platform spec. Input resolution change is extracted and made
more generic so it may be re-used when building out the container spec
for the k8s config.

Also add unit tests for constant & runtime input parameters.
TaskOutput parameter support are omitted due to a lack of appropriate
mlmd mock framework.

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

* add sdk implementation for k8s params inputs

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

* add tests for k8s input params

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

* add setup/teardown of prereqs and secret tests

and update/re-enable secret env tests

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

* have kfp sample tests use local python pkgs

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

* use a better configmap k8s name input...

Add support for multiple input types for pull secrets.
Clarify toleration docstring
Remove unnecessary resolve function

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

---------

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-03-28 20:30:29 +00:00
Helber Belmiro 95bd63ef15
test: Fixed `collect-logs.sh` path (#11775)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2025-03-28 11:53:28 +00:00
Giulio Frasca 715ed40b92
fix(backend): Include missing go.mod for cacheserver/viewercontroller images (#11776)
- Add api and k8s_platform go.mod files so cacheserver and
  viewercontroller images will build

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>
2025-03-28 11:30:28 +00:00
Helber Belmiro c46c1d2cf9
test: Fixed and improved log collection (#11773)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2025-03-27 19:59:50 +00:00
Harshvir Potpose 01999b8fea
Fix PSS restricted warnings (#11751)
* fix pss warnings

Signed-off-by: Harshvir Potpose <hpotpose62@gmail.com>

* fix

Signed-off-by: Harshvir Potpose <hpotpose62@gmail.com>

---------

Signed-off-by: Harshvir Potpose <hpotpose62@gmail.com>
2025-03-26 18:15:44 +00:00
VS 95c3f2c04d
fix(CI) Github action is vulnerable to code execution via `comment body` (#11772)
* Fix code execution on untrusted user input

Signed-off-by: VS <vspachyn@gmail.com>

* Remove redundant env variable 

Signed-off-by: VS <vspachyn@gmail.com>

---------

Signed-off-by: VS <vspachyn@gmail.com>
2025-03-26 01:13:03 +00:00
Ricardo Martinelli de Oliveira c5aba41bca
feat(proto): Add TTL fields to KFP IR yaml proto (#11758)
Signed-off-by: Ricardo M. Oliveira <rmartine@redhat.com>
2025-03-24 17:31:56 +00:00
Matt Prahl 2694605996
bug(backend,sdk): Use a valid path separator for Modelcar imports (#11767)
Forward slashes are invalid characters in a path and can't be escaped.

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-03-21 20:35:27 +00:00
Stijn Tratsaert d1b15ef4da
fix(sdk): avoid conflicting component names in DAG when reusing pipelines (#11071)
* make component names in dag more unique

Signed-off-by: Stijn Tratsaert <stijn.tratsaert.it@gmail.com>

* tweak ordering so that renaming is handled in LIFO fashion

Signed-off-by: Stijn Tratsaert <stijn.tratsaert.it@gmail.com>

* add test that reuses a pipeline multiple times

Signed-off-by: Stijn Tratsaert <stijn.tratsaert.it@gmail.com>

---------

Signed-off-by: Stijn Tratsaert <stijn.tratsaert.it@gmail.com>
2025-03-18 23:25:45 +00:00
Anish Asthana 06a7350191
chore(backend): Allow specification of image registry when building images (#11759)
Signed-off-by: Anish Asthana <anishasthana1@gmail.com>
2025-03-18 19:10:08 +00:00
dependabot[bot] 3e7d499236
chore(deps): bump github.com/expr-lang/expr from 1.16.0 to 1.17.0 (#11756)
Bumps [github.com/expr-lang/expr](https://github.com/expr-lang/expr) from 1.16.0 to 1.17.0.
- [Release notes](https://github.com/expr-lang/expr/releases)
- [Commits](https://github.com/expr-lang/expr/compare/v1.16.0...v1.17.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-18 15:32:21 +00:00
Alex 12f4676b4c
docs(ui): add multi-user proxy instructions (#11743)
* docs(ui): add multi-user proxy instructions

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>

* Update frontend/README.md

Co-authored-by: Anish Asthana <anishasthana1@gmail.com>
Signed-off-by: Alex <mythicalsunlight@gmail.com>

---------

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Signed-off-by: Alex <mythicalsunlight@gmail.com>
Co-authored-by: Anish Asthana <anishasthana1@gmail.com>
2025-03-18 15:12:21 +00:00
Ayush Gupta df4e9c2bf5
Fix Istio sidecar injection by moving from annotations to labels (#11750)
Signed-off-by: madmecodes <ayushguptadev1@gmail.com>
2025-03-17 20:29:20 +00:00
dependabot[bot] 11e84d0caa
chore(deps): bump golang.org/x/net from 0.33.0 to 0.36.0 in /test/tools/project-cleaner (#11748)
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.33.0 to 0.36.0.
- [Commits](https://github.com/golang/net/compare/v0.33.0...v0.36.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-17 01:36:50 +00:00
Julius von Kohout 8d0ae5381e
fix: minio fsgroup for popular clusters (#11734)
Signed-off-by: Julius von Kohout <45896133+juliusvonkohout@users.noreply.github.com>
2025-03-12 14:46:05 +00:00
Alex d502687061
chore(frontend): update kubernetes client version to 0.12.1 (#11737)
Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: ColeVogs <colevogs@gmail.com>
2025-03-11 15:00:39 +00:00
Ricardo Martinelli de Oliveira 0d9a7b00e9
feat(backend): Add types for KFP Kubernete Native API (#11672)
Signed-off-by: Ricardo M. Oliveira <rmartine@redhat.com>
2025-03-07 13:57:55 +00:00
Humair Khan 3a89bd8564
chore(release): bumped version to 2.4.1 (#11718)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-03-05 00:07:06 +00:00
Julius von Kohout 03453bc3b5
Chore: fix the PPC image for the dockerhub ratelimit and add the securitycontext (#11669)
* fix the PPC image

Signed-off-by: juliusvonkohout <45896133+juliusvonkohout@users.noreply.github.com>

* Update deployment.yaml

Signed-off-by: Julius von Kohout <45896133+juliusvonkohout@users.noreply.github.com>

---------

Signed-off-by: juliusvonkohout <45896133+juliusvonkohout@users.noreply.github.com>
Signed-off-by: Julius von Kohout <45896133+juliusvonkohout@users.noreply.github.com>
2025-03-05 00:06:06 +00:00
Alex afb3b1461b
fix(frontend): compatibility with pod_names v1 (#11682)
Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: cmdevoto <carolined321@gmail.com>
2025-03-05 00:04:07 +00:00
Humair Khan 89c8bd7274
remove unused function (#11719)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-03-01 18:12:15 +00:00
Anton Pechenin 30210e33bf
fix(backend) fix execution-level retry on the Argo Workflows backend (#11673)
Signed-off-by: ntny <ntny1986@gmail.com>
Signed-off-by: arpechenin <arpechenin@avito.ru>
Co-authored-by: arpechenin <arpechenin@avito.ru>
2025-02-28 20:24:49 +00:00
Chen Sun 1956d69968
chore(sdk): release kfp sdk 2.12.1 (#11715)
Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2025-02-28 19:22:30 +00:00
Chen Sun b5c204300b
chore(sdk): Relax kfp-server-api upper bound to include 2.4 (#11685)
Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2025-02-28 18:02:14 +00:00
Matt Prahl a7ec34f571
Ignore empty PULL_NUMBER environment variables in SDK tests (#11714)
On pushes to the master branch, PULL_NUMBER was an empty string.

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-02-28 17:58:56 +00:00
Julius von Kohout 78675b0d7f
chore: improved securitycontext for mysql (#11678)
* Update mysql-deployment.yaml

Signed-off-by: Julius von Kohout <45896133+juliusvonkohout@users.noreply.github.com>

* Update mysql-deployment.yaml

Signed-off-by: Julius von Kohout <45896133+juliusvonkohout@users.noreply.github.com>

* Update mysql-deployment.yaml

Signed-off-by: Julius von Kohout <45896133+juliusvonkohout@users.noreply.github.com>

---------

Signed-off-by: Julius von Kohout <45896133+juliusvonkohout@users.noreply.github.com>
2025-02-28 16:35:19 +00:00
Humair Khan 7838009538
feat(sdk): Add Input Parameter support for configmap, secrets, node selectors, tolerations, pull secrets (#11621)
This change adds the necessary proto changes to accomodate parameterized
input for various k8s platform fields: secrets, configmaps, node
selectors, tolerations, and image pull secrets.

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-02-28 15:48:44 +00:00
Humair Khan 13b819424e
chore: partially revert 9afe23e7 (#11713)
In 9afe23e7 we introduced blackend dropping of unknown fields for
unmarshalling, but going forward we want to handle this more on a case
by case basis. In the case for driver we should drop them because by
this point the api server has declare the pipeline spec is acceptable,
so the driver should not fail here. As such we keep driver changes, but
revert those utilized by the api server.

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-02-28 15:47:32 +00:00
Matt Prahl 7d8e9211f6
Fix format string in get_kfp_package_path (#11712)
* Fix format string in get_kfp_package_path

Signed-off-by: mprahl <mprahl@users.noreply.github.com>

* Use the in repo SDK for "k8s execution tests"

Signed-off-by: mprahl <mprahl@users.noreply.github.com>

---------

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-02-28 14:45:26 +00:00
Matt Prahl 355f78c51b
Use the correct SDK version in the SDK execution tests CI (#11683)
The KFP SDK execution tests weren't using the SDK from the pull request.
Additionally, this commit adds support for choosing the right SDK in
forks.

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-02-28 00:19:43 +00:00
Matt Prahl 976fba871f
Limit the number of parallel tests in SDK execution tests (#11680)
Often times, pods could not be scheduled because of insufficient CPU
and the worker would run out of disk space.

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-02-27 21:01:10 +00:00
george-kuanli-peng 30d7c397e6
docs: Add documentation for set_image_pull_secrets (#11676)
* Update README.md

Adds doc for set_image_pull_secrets

Signed-off-by: george-kuanli-peng <12026360+george-kuanli-peng@users.noreply.github.com>

* Update kubernetes_platform/python/README.md

Co-authored-by: Helber Belmiro <helber.belmiro@gmail.com>
Signed-off-by: george-kuanli-peng <12026360+george-kuanli-peng@users.noreply.github.com>

---------

Signed-off-by: george-kuanli-peng <12026360+george-kuanli-peng@users.noreply.github.com>
Co-authored-by: Helber Belmiro <helber.belmiro@gmail.com>
2025-02-27 20:23:10 +00:00
Chen Sun c8fe908ba8
chore(sdk): release kfp sdk 2.12.0 (#11679)
Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2025-02-27 11:32:38 -08:00
Humair Khan 0a94ac418d
chore: nominate sdk/backend reviewers (#11675)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-02-26 23:08:09 +00:00
Matt Prahl eb7286d859
docs: Add a KEP for a Kubernetes native API for pipelines (#11551)
Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-02-26 15:12:09 +00:00
Matt Prahl 0afb12d6a7
Allow system.Model artifacts in the Modelcar format (#11674)
This skips uploading the model to S3 when the model URI starts with
oci://.

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-02-25 22:13:08 +00:00
Humair Khan 9afe23e748
fix(backend): ignore unknown fields for pb json unmarshaling (#11662)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-02-24 14:42:46 +00:00
Tarek Abouzeid ebaaf75631
fix(manifests): Upgrading metacontroller to v4.11.22 (#11656)
Signed-off-by: Tarek Abouzeid <tarek.abouzeid@teliacompany.com>
2025-02-23 02:31:44 +00:00
kundan kumar a6b944b894
fix(frontend): fixes optional pipeline inputs. Fixes #11632 (#11657)
Signed-off-by: izuku-sds <izuku.labs@gmail.com>
2025-02-21 17:57:44 +00:00
Michael f7c0616db7
fix(backend): parallelFor resolve upstream inputs. Fixes #11520 (#11627)
Signed-off-by: zazulam <m.zazula@gmail.com>
2025-02-21 16:54:43 +00:00
Carter Fendley d2c0376b0a
feat(backend): configurable log level for driver / launcher images (#11278)
* Do not invoke get image methods twice.

Signed-off-by: carter.fendley <carter.fendley@gmail.com>

* Add configurable driver / launcher log level

Signed-off-by: carter.fendley <carter.fendley@gmail.com>

* Add configurable driver / launcher log level

Signed-off-by: carter.fendley <carter.fendley@gmail.com>

* Update argocompiler golden files

Signed-off-by: carter.fendley <carter.fendley@gmail.com>

* Handle errors from flag setting and tests

Signed-off-by: carter.fendley <carter.fendley@gmail.com>

* Update gold files & image masking to use ghcr

Signed-off-by: carter.fendley <carter.fendley@gmail.com>

* Update tests with new images

Signed-off-by: carter.fendley <carter.fendley@gmail.com>

* Use unified var for driver / launcher log level + patch user code
launcher

Signed-off-by: carter.fendley <carter.fendley@gmail.com>

* Add PIPELINE_LOG_LEVEL to deployment for discoverability

Signed-off-by: carter.fendley <carter.fendley@gmail.com>

---------

Signed-off-by: carter.fendley <carter.fendley@gmail.com>
2025-02-21 00:34:42 +00:00
Helber Belmiro 1c4f676d94
chore(test): Increased timeout in test (#11658)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2025-02-20 14:15:43 +00:00
Vani Haripriya Mudadla 7719b38061
fix(backend): fixes DAG status update to reflect completion of all tasks (#11651)
Signed-off-by: VaniHaripriya <vmudadla@redhat.com>
2025-02-20 05:49:42 +00:00
Matt Prahl cc1c435f1e
feat(backend): Add support for importing models stored in the Modelcar format (sidecar) (#11606)
This allows dsl.import to leverage Modelcar container images in an OCI
repository. This works by having an init container prepull the image and
then adding a sidecar container when the launcher container is running.
The Modelcar container adds a symlink to its /models directory in an
emptyDir volume that is accessible by the launcher container. Once the
launcher is done running the user code, it stops the Modelcar
containers.

This approach has the benefit of leveraging image pull secrets
configured on the Kubernetes cluster rather than require separate
credentials for importing the artifact. Additionally, no data is copied
to the emptyDir volume, so the storage cost is just pulling the Modelcar
container image on the Kubernetes worker node.

Note that once Kubernetes supports OCI images as volume mounts for
several releases, consider replacing the init container with that
approach.

This also adds a new environment variable of PIPELINE_RUN_AS_USER to
set the runAsUser on all Pods created by Argo Workflows.

Resolves:
https://github.com/kubeflow/pipelines/issues/11584

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-02-19 19:02:42 +00:00
Muzammil Khan c0778ba88c
fix(frontend): restrict file explorer to show only .yaml, .yml, .zip, and .tar.gz files (#11623)
* fix(frontend): restrict file explorer to show only .yaml, .yml, .zip, and .tar.gz files

Signed-off-by: muzzlol <muzxmmilkhxn@gmail.com>

* test(frontend): update NewPipelineVersion snapshot for file filters

Signed-off-by: muzzlol <muzxmmilkhxn@gmail.com>

---------

Signed-off-by: muzzlol <muzxmmilkhxn@gmail.com>
2025-02-19 04:54:41 +00:00
chahat sagar 8ca7ec1768
(test) : Collect and upload logs when test fails for k8s (#11618)
fix:



add log upload functionality



changes



test



update permission



update permission



fail test



remove exit



update permission



update



update



add condition



test



test



Remove exit



test



fix pod name



Remove exit



refactor



test



remove exit

Signed-off-by: chahatsagarmain <chahatsagar2003@gmail.com>
2025-02-18 18:32:40 +00:00
Anton Pechenin b1315667be
fix(backend) fix run retry for argo (#11585)
Signed-off-by: arpechenin <arpechenin@avito.ru>
2025-02-17 17:54:39 +00:00
Daniel Dowler 87498e8b60
fix(backend): upgrade go version to 1.22.12 to fix CVE-2024-45336 (#11631)
Signed-off-by: Daniel Dowler <12484302+dandawg@users.noreply.github.com>
2025-02-15 16:41:38 +00:00
Humair Khan 472f8779de
chore: use local proto go packages for ci (#11629)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-02-14 18:57:37 +00:00
Anish Asthana 7bb0c448cd
Refer to central KEP template (#11593)
Signed-off-by: Anish Asthana <anishasthana1@gmail.com>
2025-02-14 17:18:37 +00:00
Ze Mao 94eca2102c chore(components): GCPC 2.19.0 Release
Signed-off-by: Ze Mao <zemao@google.com>
PiperOrigin-RevId: 726255520
2025-02-12 17:19:21 -08:00
chahat sagar 22c372437d
[chore][backend] Add workflow to validate affected generated files (#11539)
Check if there is a difference in generated files



fix lint



fix make file

Signed-off-by: chahatsagarmain <chahatsagar2003@gmail.com>
2025-02-12 22:12:31 +00:00
Daniel Dowler a1f3262f37
docs(backend): fixed docker cmd in docs for non-amd64 (#11610)
Signed-off-by: Daniel Dowler <12484302+dandawg@users.noreply.github.com>
2025-02-12 15:42:29 +00:00
Daniel Dowler ba22703263
docs(backend): small formatting improvements (#11570)
* rebase resolution

Signed-off-by: Daniel Dowler <12484302+dandawg@users.noreply.github.com>

* removing go-licenses install instruction

Signed-off-by: Daniel Dowler <12484302+dandawg@users.noreply.github.com>

---------

Signed-off-by: Daniel Dowler <12484302+dandawg@users.noreply.github.com>
2025-02-12 12:05:29 +00:00
Ze Mao dcaf5a48e5 feat(components): Fix typos: 'statgey' -> 'strategy'in v1 GCPC custom job components/utils
Signed-off-by: Ze Mao <zemao@google.com>
PiperOrigin-RevId: 725795071
2025-02-11 15:32:23 -08:00
Daniel Dowler 65d1d79fb7
chore(backend): updated deprecated grpc func (#11603)
Signed-off-by: Daniel Dowler <12484302+dandawg@users.noreply.github.com>
2025-02-11 11:43:28 +00:00
Matt Prahl 6a13f4bad0
feat(backend): Add support for job and task placeholders in the KFP backend (#11599)
This adds support for the following placeholders in the KFP backend:

- dsl.PIPELINE_JOB_NAME_PLACEHOLDER
- dsl.PIPELINE_JOB_RESOURCE_NAME_PLACEHOLDER
- dsl.PIPELINE_JOB_ID_PLACEHOLDER
- dsl.PIPELINE_TASK_NAME_PLACEHOLDER
- dsl.PIPELINE_TASK_ID_PLACEHOLDER

Resolves:
https://github.com/kubeflow/pipelines/issues/10453

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-02-10 22:10:43 +00:00
chahat sagar 926aec55d4
chor(test) : Fix kfp-sdk-test for different python versions (#11559)
Signed-off-by: chahatsagarmain <chahatsagar2003@gmail.com>
2025-02-10 19:25:07 +00:00
dependabot[bot] 51c776c745
chore(deps): bump github.com/golang/glog from 1.2.0 to 1.2.4 (#11563)
Bumps [github.com/golang/glog](https://github.com/golang/glog) from 1.2.0 to 1.2.4.
- [Release notes](https://github.com/golang/glog/releases)
- [Commits](https://github.com/golang/glog/compare/v1.2.0...v1.2.4)

---
updated-dependencies:
- dependency-name: github.com/golang/glog
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-10 18:29:06 +00:00
Humair Khan c100648fa8
chore: Remove License checker (#11609)
* update dependencies

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

* remove license checking

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

---------

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-02-10 18:04:06 +00:00
Ze Mao 42fc132616
feat: Introduce cache_key to sdk (#11466)
Signed-off-by: Ze Mao <zemao@google.com>
Co-authored-by: Ze Mao <zemao@google.com>
2025-02-10 09:10:49 -08:00
Julius von Kohout a40163fdf2
fix(backend): the metacontroller is broken since #11474 (#11608)
* Update cluster-role-binding.yaml

Signed-off-by: Julius von Kohout <45896133+juliusvonkohout@users.noreply.github.com>

* Create cluster-role.yaml

Signed-off-by: juliusvonkohout <45896133+juliusvonkohout@users.noreply.github.com>

* Update kustomization.yaml

Signed-off-by: juliusvonkohout <45896133+juliusvonkohout@users.noreply.github.com>

* Update stateful-set.yaml

Signed-off-by: juliusvonkohout <45896133+juliusvonkohout@users.noreply.github.com>

---------

Signed-off-by: Julius von Kohout <45896133+juliusvonkohout@users.noreply.github.com>
Signed-off-by: juliusvonkohout <45896133+juliusvonkohout@users.noreply.github.com>
2025-02-10 14:34:06 +00:00
Daniel Dowler 0178d41bf2
chore(backend): fixed imports on metadata_helpers.py (#11604)
Signed-off-by: Daniel Dowler <12484302+dandawg@users.noreply.github.com>
2025-02-10 12:42:05 +00:00
Googler af4540e7d3 chore(components): Bump image version for Structured Data pipelines
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 723803948
2025-02-05 23:32:49 -08:00
Ze Mao 6cb7cf71fa feat(components): Introduce max_wait_duration to custom job to v1 GCPC custom job components/utils
Signed-off-by: Ze Mao <zemao@google.com>
PiperOrigin-RevId: 723577407
2025-02-05 11:03:08 -08:00
Mahdi Khashan 32bdbe8dbc
docs: change node version from 14 to 22 in frontend project (#11567)
Signed-off-by: mahdikhashan <mahdikhashan1@gmail.com>
2025-02-05 16:53:37 +00:00
Helber Belmiro 18641e16cb
fix(backend): Replaced hardcoded ServiceAccount with default config (#11578)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2025-02-05 15:28:37 +00:00
chahat sagar d3a016dd64
chore(frontend) : Fix frontend failing ci test (#11575)
Signed-off-by: chahatsagarmain <chahatsagar2003@gmail.com>
2025-02-02 22:33:34 +00:00
Daniel Dowler cd66b6965c
chore(deps): replace deprecated ioutil with os and io in tests (#11577)
* updated backend tests

Signed-off-by: Daniel Dowler <12484302+dandawg@users.noreply.github.com>

* backend switched from ioutil to os and io

Signed-off-by: Daniel Dowler <12484302+dandawg@users.noreply.github.com>

---------

Signed-off-by: Daniel Dowler <12484302+dandawg@users.noreply.github.com>
2025-01-31 20:42:16 +00:00
Matt Prahl 9c5b72c2d0
feat(backend): Allow recurring runs to always use the latest pipeline version (#11560)
* Allow recurring runs to always use the latest pipeline version

This makes the pipeline_version_id optional and makes the
Scheduled Workflow controller levarege the REST API to launch the run
rather than rely on compiled Argo Workflows stored in the
ScheduledWorkflow object.

The previous behavior is preserved if the user is using the v1 API or
specifies a pipeline version ID or pipeline spec manifest.

Resolves:
https://github.com/kubeflow/pipelines/issues/11542

Signed-off-by: mprahl <mprahl@users.noreply.github.com>

* Add instructions to debug the SWF controller

Signed-off-by: mprahl <mprahl@users.noreply.github.com>

---------

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-01-31 20:22:15 +00:00
Dharmit Dalvi 915cc552f5
feat(api): Add SemaphoreKey and MutexName fields to proto (#11384)
Signed-off-by: ddalvi <ddalvi@redhat.com>
2025-01-29 18:40:52 +00:00
Matt Prahl ac9b257a7a
fix(CI): Use the correct image registry for replacements in integration tests (#11564)
* Use the correct image registry for replacements in integration tests

The image registry was changed to GitHub Container Registry in the 2.4
release.

Signed-off-by: mprahl <mprahl@users.noreply.github.com>

* Print the pod logs when the pods fail to start in integration tests

Signed-off-by: mprahl <mprahl@users.noreply.github.com>

* Fix the sample compilation in the API server container build

Signed-off-by: mprahl <mprahl@users.noreply.github.com>

* Show the output when building the container images in CI

Signed-off-by: mprahl <mprahl@users.noreply.github.com>

---------

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-01-29 17:26:52 +00:00
Daniel Dowler ce3850ad9a
docs(backend): improved backend README (#11511)
* improved backend README

Signed-off-by: Daniel Dowler <12484302+dandawg@users.noreply.github.com>

* Update backend/README.md

Co-authored-by: Helber Belmiro <helber.belmiro@gmail.com>
Signed-off-by: Daniel Dowler <12484302+dandawg@users.noreply.github.com>

* Update backend/README.md

Co-authored-by: Helber Belmiro <helber.belmiro@gmail.com>
Signed-off-by: Daniel Dowler <12484302+dandawg@users.noreply.github.com>

* Update backend/README.md

Co-authored-by: Helber Belmiro <helber.belmiro@gmail.com>
Signed-off-by: Daniel Dowler <12484302+dandawg@users.noreply.github.com>

* Update backend/README.md

Co-authored-by: Helber Belmiro <helber.belmiro@gmail.com>
Signed-off-by: Daniel Dowler <12484302+dandawg@users.noreply.github.com>

---------

Signed-off-by: Daniel Dowler <12484302+dandawg@users.noreply.github.com>
Co-authored-by: Helber Belmiro <helber.belmiro@gmail.com>
2025-01-29 02:27:51 +00:00
Helber Belmiro 37a7b4ecb9
chore(test): Fixed namespace in tests (#11545)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2025-01-27 15:47:49 +00:00
Daniel Dowler a81b51339c
fix: Update broken api-connect link (#11521)
Signed-off-by: Daniel Dowler <12484302+dandawg@users.noreply.github.com>
2025-01-26 19:20:49 +00:00
Assurance MBULA 1234c8d6fe
Fix typo in documentation for contribution and developer guide (#11537)
Signed-off-by: Assurance MBULA <assurancekayikake4@gmail.com>
2025-01-26 19:03:49 +00:00
Humair Khan d2ddb2ed1c
feat(backend): add support for uploading new sample pipeline vers (#11553)
This change adds additional sampleconfig options that provide support
for uploading new Pipelines and PipelineVersion samples. To accommodate
this and backwards compatibility the structure of the samples config has
been changed. Configs following the old format will continue to be
supported.

Sample config code is also moved to its own file so as not to bloat
main.go

In order to handle conflicts, and detecting pipeline/pipelineVersion
existence, additional db queries are made per pipeline and pipeline
version at apiserver startup.

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-01-25 12:42:47 +00:00
SimonDR-Boltzmann 113a4c6788
chore: bump requests-toolbelt to 1.0.0 (#10762)
* bump requests-toolbelt to 1.0.0

Signed-off-by: Simon De Ridder <simon.deridder+gitlab@silverfin.com>

* remove changes in test/kfp-functional-test

Signed-off-by: Simon De Ridder <simon.deridder+gitlab@silverfin.com>

---------

Signed-off-by: Simon De Ridder <simon.deridder+gitlab@silverfin.com>
2025-01-24 20:12:22 +00:00
Daniel Dowler dbefbb8ee9
fix(sdk): dsl.component docstring typo (#11547)
Signed-off-by: Daniel Dowler <12484302+dandawg@users.noreply.github.com>
2025-01-24 17:09:21 +00:00
Harshvir Potpose a469b10806
fix: Extend env variables in ml-pipeline-ui deployment (#11552)
Signed-off-by: Your Name <hpotpose62@gmail.com>
2025-01-23 22:26:20 +00:00
ElayAharoni 8fe21574c6
fix(frontend): fixes Default pipeline input params are missing from the GUI. Fixes #11515 (#11518)
Signed-off-by: Elay Aharoni (EXT-Nokia) <elay.aharoni.ext@nokia.com>
Co-authored-by: Elay Aharoni (EXT-Nokia) <elay.aharoni.ext@nokia.com>
2025-01-22 22:21:20 +00:00
Anish Asthana 7497b65067
feat(docs): Replace ADRs with KEPs for documentation (#11535)
We have elected to adopt KEPs instead of ADRs to track
important decisions and proposals for the KFP project.
This brings us into better alignment with the wider Kubeflow project.

More context can be found at https://cloud-native.slack.com/archives/C073N7BMLB1/p1734476179079839

Signed-off-by: Anish Asthana <anishasthana1@gmail.com>
2025-01-22 19:54:20 +00:00
Daniel Dowler 906b5c0841
fix(backend): removed old version comment (#11549)
Signed-off-by: Daniel Dowler <12484302+dandawg@users.noreply.github.com>
2025-01-21 23:12:28 +00:00
Karim Ouada 76ce3226ec
chore: Remove ouadakarim from Kubeflow Pipelines reviewers (#11538)
Signed-off-by: Karim Ouada <ouadakarim@google.com>
2025-01-21 18:57:01 +00:00
Anish Asthana 3e423d8d1c
feat(docs): Add architecture diagram (#11490)
* Fix minor lint errors

Signed-off-by: Anish Asthana <anishasthana1@gmail.com>

* Add Kubeflow Pipelines Architecture

Signed-off-by: Anish Asthana <anishasthana1@gmail.com>

* Update community section

Signed-off-by: Anish Asthana <anishasthana1@gmail.com>

---------

Signed-off-by: Anish Asthana <anishasthana1@gmail.com>
2025-01-17 12:42:46 +00:00
Humair Khan a0e24069e3
chore(release): bumped version to 2.4.0 (#11531)
* chore(release): bumped version to 2.4.0

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

* remove unneeed auto generated files

these files are created via the release.sh and don't seem like they are
needed any more, a follow up change to fix the automation here will also
be needed

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

---------

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-01-16 21:32:16 +00:00
Vani Haripriya Mudadla 954145b877
test: fix CI failure by upgrading upload-artifact version (#11529)
Signed-off-by: VaniHaripriya <vmudadla@redhat.com>
2025-01-16 20:14:16 +00:00
Humair Khan 83791e7703
switch release/api generator images to ghcr (#11528)
Also update the go version in api generator image to 1.23
The previous version used 1.20.5, in this version the go generate
command would fail on the current go mod (using 1.22), because it
expects the go version to be in the format "x.y" insted of "x.y.z", in
1.23 this is no longer an issue.

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-01-16 13:58:02 -05:00
Ricardo Martinelli de Oliveira 027ca8b9c9
fix(backend): Fix enable_caching issues when handling PVC creation/deletion (#11411)
Signed-off-by: Ricardo M. Oliveira <rmartine@redhat.com>
2025-01-16 15:33:23 +00:00
Humair Khan 4517cbe872
chore: switch to using gh container registry in manifests (#11526)
This change switches majority of the images coming from gcr repository
to the ghcr repository. For this various manifests were updated, as well
as the hardcoded launcher/driver images. All images that are regularly
updated during the release process have been switched over to ghcr.

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-01-16 13:55:31 +00:00
Matt Prahl 533a3c6b66
fix(frontend): Fix the frontend image build with Node 22 (#11524)
Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-01-15 23:18:19 +00:00
Humair Khan 682d3aca5f
add remaining dockerfiles to build workflow (#11522)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-01-15 17:49:13 +00:00
Matt Prahl dc97ce77a7
chore: Address CVEs (#11514)
This updates:
- Jinja2 (Python) (CVE-2024-56201)
- nanoid (JavaScript) (CVE-2024-55565)
- path-to-regexp (JavaScript) (CVE-2024-52798)
- golang.org/x/net (Go) (CVE-2024-45338)

This also updates to Node.js 22.

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-01-15 17:41:13 +00:00
Matt Prahl 8bce9c4ef6
Fix the failing exit handler SDK execution tests (#11519)
The SDK execution tests were not run on the PR CI that fixed the
pipeline run state to be failed even when an exit handler is run after a
failed component.

This also makes the SDK execution tests run whenever the backend
compiler code is modified to help prevent a similar issue.

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-01-15 15:08:13 +00:00
ElayAharoni 028d81b624
fix(frontend): Detailed information of nodes is not displayed when clicking the node. Fixes #11325 (#11493)
Signed-off-by: Elay Aharoni (EXT-Nokia) <elay.aharoni.ext@nokia.com>
Co-authored-by: Elay Aharoni (EXT-Nokia) <elay.aharoni.ext@nokia.com>
2025-01-14 21:50:20 +00:00
dependabot[bot] b4ecbabbba
chore(deps): bump nanoid and mocha in /test/frontend-integration-test (#11454)
Removes [nanoid](https://github.com/ai/nanoid). It's no longer used after updating ancestor dependency [mocha](https://github.com/mochajs/mocha). These dependencies need to be updated together.


Removes `nanoid`

Updates `mocha` from 10.2.0 to 10.8.2
- [Release notes](https://github.com/mochajs/mocha/releases)
- [Changelog](https://github.com/mochajs/mocha/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mochajs/mocha/compare/v10.2.0...v10.8.2)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: indirect
- dependency-name: mocha
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-12 14:30:07 +00:00
Humair Khan 56e6116d05
nominate reviewers for backend (#11508)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-01-10 18:33:16 +00:00
Humair Khan 81ebd7ff9b
nominate approver & reviewer for backend (#11507)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2025-01-10 18:22:51 +00:00
Matt Prahl 3059f7c124
fix(backend): Use an Argo Workflow exit lifecycle hook for exit handlers (#11470)
As described in #10917, exit handlers were implemented as dependent
tasks that always ran within an Argo Workflow. The issue is that this
caused the pipeline to have a succeeded status regardless of if the
tasks within the exit handlers all succeeded.

This commit changes exit handlers to be exit lifecycle hooks on an
Argo Workflow so that the overall pipeline status is not impacted.

Resolves:
https://github.com/kubeflow/pipelines/issues/11405

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-01-10 16:05:27 +00:00
Matt Prahl a40be7b569
chore: Add instructions to remote debug the Driver pods (#11499)
This makes the driver command configurable so that Delve can be used to
execute the driver binary and adds Make targets to build the Driver
image for debugging.

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-01-09 18:23:22 +00:00
Matt Prahl 7c931ae201
feat(sdk/backend): Add support for placeholders in resource limits (#11501)
The API introduced new fields prefixed with Resource (e.g.
ResourceCpuLimit) to replace the old fields without the prefix. The
Driver hadn't been updated to honor those fields but the SDK started
using them which led to unexpected behavior.

The Driver now honors both fields but prioritizes the new fields. The
SDK now only sets the new fields.

The outcome is that resource limits/requests can now use input
parameters.

Note that pipeline_spec_builder.py was doing some validation on the
limits/requests being set, but that's already handled in the user facing
method (e.g. set_cpu_limit).

Resolves:
https://github.com/kubeflow/pipelines/issues/11500

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-01-09 15:35:24 +00:00
Matt Prahl e89d2d5f2d
chore(deps): Update client-go and controller-runtime (#11473)
This updates k8s.io/client-go to v0.30.1 and
sigs.k8s.io/controller-runtime to v0.18.6. Updating any higher requires
updating github.com/argoproj/argo-workflows/v3 which requires updating
to Go 1.23 which isn't widely available in base container images yet.

Some other dependencies were updated for dependency resolution to
succeed.

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2025-01-09 14:47:22 +00:00
Helber Belmiro d21fca650c
fix(backend): Synced ScheduledWorkflow CRs on apiserver startup (#11469)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2025-01-08 15:24:22 +00:00
Helber Belmiro 2686e017ce
chore(backend): Fixed ServiceAccount in job creation (#11481)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2025-01-08 14:06:21 +00:00
Helber Belmiro 72f11d9801
chore(backend): Fixed namespace in job creation (#11480)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2025-01-08 14:05:21 +00:00
Ricardo Martinelli de Oliveira 873e9dedd7
chore(test): Fix SDK tests (#11496)
Signed-off-by: Ricardo M. Oliveira <rmartine@redhat.com>
2025-01-02 15:28:16 +00:00
Helber Belmiro 2ebb853fd7
chore(tests): fixed conflicting artifacts names (#11491)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2024-12-30 12:02:21 +00:00
Helber Belmiro 9c6ec0f4f7
test: fixes SDK tests (#11488)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2024-12-29 17:33:20 +00:00
Helber Belmiro 2a77a89e34
chore(deps): bump golang.org/x/crypto from 0.22.0 to 0.31.0 (#11482)
* chore(deps): bump golang.org/x/crypto from 0.22.0 to 0.31.0

Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.22.0 to 0.31.0.
- [Commits](https://github.com/golang/crypto/compare/v0.22.0...v0.31.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): Updated licenses

Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-20 21:36:13 +00:00
Julius von Kohout f3cb244198
chore: Add securitycontext for PSS PoC (rootless Kubeflow) (#11462)
* Update securitycontext

Signed-off-by: biswassri <srijoni.biswas1994@gmail.com>

Update ml-pipeline-scheduledworkflow-deployment.yaml

Signed-off-by: juliusvonkohout <45896133+juliusvonkohout@users.noreply.github.com>

Update ml-pipeline-persistenceagent-deployment.yaml

Upstreaming off pss patches

Signed-off-by: Julius von Kohout <45896133+juliusvonkohout@users.noreply.github.com>

Updating server,ui,visualization,veiwercrd deployment yaml

Signed-off-by: biswassri <58236793+biswassri@users.noreply.github.com>
Signed-off-by: juliusvonkohout <45896133+juliusvonkohout@users.noreply.github.com>

Updating remaining PSS patches

Signed-off-by: biswassri <srijoni.biswas1994@gmail.com>

* add cache-server

Signed-off-by: juliusvonkohout <45896133+juliusvonkohout@users.noreply.github.com>

---------

Signed-off-by: biswassri <srijoni.biswas1994@gmail.com>
Signed-off-by: juliusvonkohout <45896133+juliusvonkohout@users.noreply.github.com>
2024-12-20 16:12:13 +00:00
Humair Khan 803d7a8ebb
fix(backend): upgrade various old dependencies (#11448)
* fix(backend): update various old dependencies

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

update k8s deps

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

chore: upgrade x/net

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

* fix(backend): patch go-git to v5 drop in replacement for v4

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

* fix(backend): update outdated dependencies

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

---------

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2024-12-20 15:31:13 +00:00
Helber Belmiro 97acacbd2a
fix(backend): modelToCRDTrigger was not including periodic schedule correctly (#11475)
* fix(backend): modelToCRDTrigger was not including periodic schedule correctly

Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>

* Added copyright headers

Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>

* Fixed IsEmpty

Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>

---------

Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2024-12-20 15:05:12 +00:00
Srijoni Biswas 54b9a253da
chore: Update image for metacontroller (#11474)
Signed-off-by: biswassri <srijoni.biswas1994@gmail.com>
2024-12-20 14:28:13 +00:00
Dharmit Dalvi 399a597185
chore: Update test READMEs to reflect correct information on testing workflows (#11445)
Signed-off-by: ddalvi <ddalvi@redhat.com>
2024-12-18 19:22:11 +00:00
Helber Belmiro cb07619ec6
chore: Added Kubernetes 1.30 and 1.31 to other tests (#11463)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2024-12-13 11:26:05 +00:00
Matt Prahl e71825abe6
chore: Add instructions to develop the API server locally with kind (#11459)
* Add instructions to develop the API server locally with kind

This provides instructions to provision a kind cluster with all
components deployed except for the API server. The API server can then
be run locally through VSCode for debugging and faster development.

Signed-off-by: mprahl <mprahl@users.noreply.github.com>

* Add missing k8s_version input to the kfp-cluster GH action

Signed-off-by: mprahl <mprahl@users.noreply.github.com>

---------

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2024-12-12 22:34:05 +00:00
Helber Belmiro 0eb67e1f7b
chore: Added Kubernetes 1.30 and 1.31 to e2e tests (#11450)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2024-12-10 07:35:05 +00:00
Chen Sun 2eed0b8faf
chore(sdk): release kfp sdk 2.11.0 (#11451)
Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2024-12-09 21:27:04 +00:00
Ze Mao d49b5d0c4b
chore(sdk): Upgrade kfp-pipeline-spec to 0.6.0 (#11434) (#11447)
Signed-off-by: Ze Mao <zemao@google.com>
Co-authored-by: Ze Mao <zemao@google.com>
2024-12-06 20:42:02 +00:00
Matt Prahl 87bdb7c3b1
fix(backend): Allow initializing the Kubernetes client with a kubeconfig (#11443)
This makes it so that the API server will first try the in-cluster
configuration and fallback to a kubeconfig. This is helpful when the API
server is running outside of the cluster (e.g. locally) so you don't
need to create token files.

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
2024-12-06 20:30:02 +00:00
dependabot[bot] 6c567adfb8
chore(deps): bump path-to-regexp and express in /frontend/mock-backend (#11444)
Bumps [path-to-regexp](https://github.com/pillarjs/path-to-regexp) to 0.1.12 and updates ancestor dependency [express](https://github.com/expressjs/express). These dependencies need to be updated together.


Updates `path-to-regexp` from 0.1.10 to 0.1.12
- [Release notes](https://github.com/pillarjs/path-to-regexp/releases)
- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/master/History.md)
- [Commits](https://github.com/pillarjs/path-to-regexp/compare/v0.1.10...v0.1.12)

Updates `express` from 4.21.0 to 4.21.2
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/4.21.2/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.21.0...4.21.2)

---
updated-dependencies:
- dependency-name: path-to-regexp
  dependency-type: indirect
- dependency-name: express
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-06 17:37:01 +00:00
Humair Khan 2b1aed3a30
chore: add adr template/docs (#11437)
The template and first ADR draws inspiration from similar docs produced by Greg Sheremeta and Edson Tirell in the Open Data Hub organization.

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2024-12-05 21:50:00 +00:00
Ze Mao 50b367f232
feat: Introduce cache_key for cache key customization (#11434)
Signed-off-by: Ze Mao <zemao@google.com>
Co-authored-by: Ze Mao <zemao@google.com>
2024-12-05 18:06:01 +00:00
Ze Mao b4799df4ba chore(components): release GCPC SDK 2.18.0
Signed-off-by: Ze Mao <zemao@google.com>
PiperOrigin-RevId: 702756501
2024-12-04 09:40:26 -08:00
Humair Khan 22e85de2bc
feat(sdk/backend): enable parameterization of container images (#11404)
This change allows component base images to be parameterized using runtime pipeline parameters. The container images can be specified within an @pipeline decorated function, and takes precedence over the @component(base_image=..) argument.

This change also adds logic to resolve these runtime parameters in the argo driver logic. It also includes resolution steps for resolving the accelerator type which functions the same way but was missing the resolution logic. The resolution logic is a generic workaround solution for any run time pod spec input parameters that cannot be resolved because they cannot be added dynamically in the argo pod spec container template.

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2024-12-04 12:45:00 +00:00
Giulio Frasca b7d8c97d65
feat(backend): Add Parallelism Limit to ParallelFor tasks. Fixes #8718 (#10798)
* feat(backend): Add Parallelism Limit to ParallelFor tasks

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>

* feat(backend): Add intermediate Template for iterator Tasks in ArgoCompiler

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>

* test: Add argoCompiler test case to validate individual parallel-limited tasks

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>

* test: Update tests for ParallelFor loop update

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>

* fix(backend): Fix broken dependantTasks in ParallelFor

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>

* fix(backend): pass correct ParentDagID to iterator DAG

- Passthrough ParentDagID rather than DriverExecutionID to iterator such
  that iteration item correctly detects dependentTasks.
- Remove depends from iterator DAG as it is already handled by
  root-level task
- Update Iterator template names/nomenclature for clarity
- Update tests accordingly

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>

* fix(backend): Remove DAG Driver from Iterator abstraction template

- Removes the Driver pod from the Iterator abstraction-layer template
  as it confuses MLMD and is purley an Argo implementation
- Drivers still used on the Component and Iteration-item templates

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>

---------

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>
2024-12-03 23:38:00 +00:00
Ricardo Martinelli de Oliveira 6ebf4aae03
fix(sdk): Backport fixes in kubeflow/pipelines#11075 (#11392)
Introduced back the functions to convert k8s size values to float, but
moved to kfp.dsl.utils

Signed-off-by: Ricardo M. Oliveira <rmartine@redhat.com>
2024-12-03 22:32:59 +00:00
Helber Belmiro 60e4163923
chore: Fix pr-commands.yml to enable /ok-to-test alongside other commands (#11427)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2024-12-03 13:53:59 +00:00
Sébastien Han 7f2278f252
fix(backend): remove unused function argument (#11425)
`outputDefinitions` has not been used since
`collectOutPutParametersFromCache()` was removed in
0be57c3880.

Signed-off-by: Sébastien Han <seb@redhat.com>
2024-12-03 00:49:57 +00:00
Yael Fishel 4a64fe9532
fix(sdk): Add error handling. Fixes #11164 (#11356)
Signed-off-by: Yael <fishel.yael@gmail.com>
2024-12-03 00:24:58 +00:00
Ze Mao 1cdd648239 feat(components): add strategy to v1 GCPC custom job components/utils
Signed-off-by: Ze Mao <zemao@google.com>
PiperOrigin-RevId: 702090506
2024-12-02 14:41:52 -08:00
ChaosEternal 22e77805ed
feat(component): Created Snowflake data unload component (#11349)
* Created Snowflake data unload component

Signed-off-by: Jun Sheng <jscheng@google.com>

* chore: rename subfolder

Signed-off-by: Jun Sheng <jscheng@google.com>

---------

Signed-off-by: Jun Sheng <jscheng@google.com>
2024-12-02 22:15:58 +00:00
Sébastien Han 13f83cf745
fix(backend): return error properly (#11424)
The `return` statement was missing when `id == 0`.

Signed-off-by: Sébastien Han <seb@redhat.com>
2024-12-02 13:32:57 +00:00
dependabot[bot] 58b2d8d721
chore(deps): bump tornado from 6.4.1 to 6.4.2 in /test/sample-test (#11407)
Bumps [tornado](https://github.com/tornadoweb/tornado) from 6.4.1 to 6.4.2.
- [Changelog](https://github.com/tornadoweb/tornado/blob/v6.4.2/docs/releases.rst)
- [Commits](https://github.com/tornadoweb/tornado/compare/v6.4.1...v6.4.2)

---
updated-dependencies:
- dependency-name: tornado
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-28 19:53:54 +00:00
Humair Khan c00d2139fd
chore: add workflow to approve pr runs (#11416)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2024-11-28 11:34:55 +00:00
Ze Mao ca004cca30 chore(components): Update Dockerfile
Signed-off-by: Ze Mao <zemao@google.com>
PiperOrigin-RevId: 700828757
2024-11-27 16:10:08 -08:00
Humair Khan 37279617d6
chore: have ci check run from default branch (#11414)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2024-11-27 23:09:53 +00:00
Dave 23f718d02e
fix(ui): Disable GKE Metadata as default Fixes: #11247, fixes #11260 (#11403)
Signed-off-by: Dave Canton <dvcanton7@gmail.com>
2024-11-27 17:17:54 +00:00
Helber Belmiro da02858061
chore: Added Dockerfiles to .dockerignore (#11408)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2024-11-26 19:32:52 +00:00
dependabot[bot] 5cc1b8d221
chore(deps-dev): bump elliptic from 6.5.7 to 6.6.0 in /frontend (#11343)
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.7 to 6.6.0.
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.7...v6.6.0)

---
updated-dependencies:
- dependency-name: elliptic
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-26 19:05:53 +00:00
dependabot[bot] 51f4a3b6e2
chore(deps): bump tornado from 6.3.3 to 6.4.2 in /backend/src/apiserver/visualization (#11402)
Bumps [tornado](https://github.com/tornadoweb/tornado) from 6.3.3 to 6.4.2.
- [Changelog](https://github.com/tornadoweb/tornado/blob/v6.4.2/docs/releases.rst)
- [Commits](https://github.com/tornadoweb/tornado/compare/v6.3.3...v6.4.2)

---
updated-dependencies:
- dependency-name: tornado
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-26 18:59:52 +00:00
demarna1 9ccec4c7d1
fix(backend): stop heartbeat status updates for ScheduledWorkflows. Fixes #8757 (#11363)
* fix(backend): stop heartbeat status updates in ScheduledWorkflow controller. Fixes #8757

Signed-off-by: demarna1 <noah.demarco@gmail.com>

* Update scheduled_workflow_test.go

Signed-off-by: demarna1 <noah.demarco@gmail.com>

---------

Signed-off-by: demarna1 <noah.demarco@gmail.com>
2024-11-26 18:53:53 +00:00
Evgeniy Mamchenko 94a21cc7e2
fix(backend): handle client side HTTP timeouts to fix crashes of metadata-writer. Fixes #8200 (#11361)
* Catch exceptions in case of client side timeouts of k8s_watch.stream, adjust timeouts according to the recommendations of the Kubernetes client authors.

Signed-off-by: Evgeniy Mamchenko <evgeniy@deevio.ai>

* Remove catch-all except so that unexpected errors are not hidden from users.

Signed-off-by: Evgeniy Mamchenko <evgeniy@deevio.ai>

* Add pass statement below server-side timeout comment for clarity.

Signed-off-by: Evgeniy Mamchenko <evgeniy@deevio.ai>

* Improve the comment about the server-side timeout.

Signed-off-by: Evgeniy Mamchenko <evgeniy@deevio.ai>

* Replace pass with continue in the handler of ReadTimeoutError.

Signed-off-by: Evgeniy Mamchenko <evgeniy@deevio.ai>

---------

Signed-off-by: Evgeniy Mamchenko <evgeniy@deevio.ai>
2024-11-26 14:34:52 +00:00
Googler 11c5d7ed43 chore(components): Bump image version for Structured Data pipelines
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 700238690
2024-11-26 00:24:45 -08:00
Tom Coufal 35793be416
feat(cli): expose existing_token client property (#11400)
Signed-off-by: Tomas Coufal <tcoufal@redhat.com>
2024-11-25 21:24:51 +00:00
Chen Sun 2e05b3db26 chore(components): User virtual env in GCPC Dockerfile and update incompatible dependencies
Signed-off-by: Chen Sun <chesu@google.com>
PiperOrigin-RevId: 698806473
2024-11-21 09:15:45 -08:00
Alex 467f30cf61
feat[frontend]: implement artifact-repositories configmap support (#11354)
* feat[frontend]: implement configmap parsing

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: quinnovator <jack@jq.codes>

* Improve error handling

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>

---------

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: quinnovator <jack@jq.codes>
2024-11-20 15:40:25 +00:00
Chen Sun 533eddc942 chore(components): support KFP SDK 2.10.*
Signed-off-by: Chen Sun <chesu@google.com>
PiperOrigin-RevId: 698162967
2024-11-19 15:19:55 -08:00
Helber Belmiro c57e8973ac
test: Added support for Python 3.13 to tests (#11376)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2024-11-19 09:13:23 +00:00
Anton Pechenin 634aadf808
chore(backend): remove mentions of Argo Workflows from the pipelinerun (#11368)
Signed-off-by: arpechenin <arpechenin@avito.ru>
2024-11-15 17:47:20 +00:00
Chen Sun 8faa24dfd6
chore(sdk): release kfp-kubernetes 1.4.0 (#11380)
Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2024-11-14 21:48:20 +00:00
Chen Sun 77f23c950e
chore(sdk): release KFP SDK 2.10.1 (#11379)
Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2024-11-14 21:46:20 +00:00
Chen Sun af0cd0628d
chore(api): release kfp-pipeline-spec 0.5.0 (#11378)
Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2024-11-14 19:05:19 +00:00
Chen Sun 1ea240e893
chore(sdk): support Python 3.13 (#11372)
* chore(sdk): support Python 3.13

Signed-off-by: Chen Sun <chensun@users.noreply.github.com>

* chore: remove python_requires upperbound for kfp-kubernetes

Signed-off-by: Chen Sun <chensun@users.noreply.github.com>

---------

Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2024-11-14 02:36:19 +00:00
Humair Khan 64e390069d
fix(sdk): accelerator type setting in kfp (#11373)
An api breaking change was introduced in 2.10 that removed deprecate
fields in the compilation step for the accelerator fields. This has
resulted in the driver being unable to fetch the old fields. This change
re-introduces the deprecated fields to allow for a proper timespan for
allowing driver to adjust to the new values.

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2024-11-13 23:43:18 +00:00
Chen Sun 55de4a3a54 chore(components): remove upper limit on python_requires
Signed-off-by: Chen Sun <chesu@google.com>
PiperOrigin-RevId: 696177924
2024-11-13 10:10:29 -08:00
Fiona Waters cac3739565
chore: Updating Pytorch-Launcher component to work with pipelines v2 (#11273)
Signed-off by: Fiona-Waters fiwaters6@gmail.com

Signed-off-by: Fiona Waters <fiwaters6@gmail.com>
2024-11-12 22:44:17 +00:00
Chen Sun 11a8b866e9
chore(sdk): remove kfp.deprecated from sdk, legacy samples, and legacy tests (#11366)
* chore(sdk): remove kfp.deprecated and legacy samples and tests

Signed-off-by: Chen Sun <chensun@users.noreply.github.com>

* chore: clean up unused imports

Signed-off-by: Chen Sun <chensun@users.noreply.github.com>

---------

Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2024-11-12 17:26:18 +00:00
Chen Sun 48a1340ce5 chore(components): bump highest support KFP SDK version to 2.10.0 and highest support Python version to 3.13
Signed-off-by: Chen Sun <chesu@google.com>
PiperOrigin-RevId: 695535624
2024-11-11 17:24:20 -08:00
Chen Sun 1708ce79bb
chore(sdk): release KFP SDK 2.10.0 (#11364)
* chore(sdk): release KFP SDK 2.10.0

Signed-off-by: Chen Sun <chensun@users.noreply.github.com>

* fix: version check regex in test

Signed-off-by: Chen Sun <chensun@users.noreply.github.com>

---------

Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2024-11-08 01:38:13 +00:00
Chen Sun 8d018aff6e
feat(sdk)!: stop auto-populating metrics as dag output (#11362)
* feat(sdk)!: stop auto-populating metrics as dag output

Signed-off-by: Chen Sun <chensun@users.noreply.github.com>

* add release note

Signed-off-by: Chen Sun <chensun@users.noreply.github.com>

---------

Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2024-11-07 22:27:12 +00:00
Ricardo Martinelli de Oliveira f8973d27cc
chore: Update the generated cache proto file (#11359)
Signed-off-by: Ricardo M. Oliveira <rmartine@redhat.com>
2024-11-06 13:49:11 +00:00
Helber Belmiro 5dc43b6c5b
chore: Added cached layer for Go dependencies to Dockerfiles (#11348)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2024-11-05 20:53:11 +00:00
Vani Haripriya Mudadla 9a9cf73179
test: Fix ci-passed label update on PR synchronization (#11358)
Signed-off-by: VaniHaripriya <vmudadla@redhat.com>
2024-11-05 20:07:11 +00:00
Julius von Kohout 60a88654d4
chore: upstream our authorization changes for oauth2-proxy (#11347)
Signed-off-by: juliusvonkohout <45896133+juliusvonkohout@users.noreply.github.com>
2024-11-01 18:00:13 +00:00
Alex c5b787aacc
feat(backend): implement subdag output resolution (#11196)
* fix(backend): implement subdag output resolution

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: zazulam <m.zazula@gmail.com>
Co-authored-by: CarterFendley <carter.fendley@gmail.com>

* Add support for subdags of subdags

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: zazulam <m.zazula@gmail.com>
Co-authored-by: CarterFendley <carter.fendley@gmail.com>

* handle edge case

Signed-off-by: zazulam <m.zazula@gmail.com>
Co-authored-by: droctothorpe <mythicalsunlight@gmail.com>

* Handle artifact outputs as well

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: zazulam <m.zazula@gmail.com>
Co-authored-by: CarterFendley <carter.fendley@gmail.com>
Co-authored-by: edmondop <edmondo.porcu@gmail.com>

* Simplify parameter handling logic

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: zazulam <m.zazula@gmail.com>

* Begin decomposition

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>

* Add support for multiple artifacts and params

Signed-off-by: Tyler Kalbach <tkalbach@athenahealth.com>

* Implement large tests for subdagio

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: zazulam <m.zazula@gmail.com>
Co-authored-by: CarterFendley <carter.fendley@gmail.com>

* Address PR comments & handle oneof

Signed-off-by: zazulam <m.zazula@gmail.com>
Co-authored-by: droctothorpe <mythicalsunlight@gmail.com>

* update backend metadata client test

Signed-off-by: zazulam <m.zazula@gmail.com>

* Enable nested pipeline IO large tests in CI

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: CarterFendley <carter.fendley@gmail.com>
Co-authored-by: zazulam <m.zazula@gmail.com>

* Execute narrow lookup before broad task lookup

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: zazulam <m.zazula@gmail.com>
Co-authored-by: CarterFendley <carter.fendley@gmail.com>

* reimplement getDAGTasks to address edge cases

Signed-off-by: zazulam <m.zazula@gmail.com>
Co-authored-by: droctothorpe <mythicalsunlight@gmail.com>

* handle parallelfor in getDAGTask

Signed-off-by: zazulam <m.zazula@gmail.com>
Co-authored-by: droctothorpe <mythicalsunlight@gmail.com>

* Check if iterationIndex is nil

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: zazulam <m.zazula@gmail.com>

* check iteration_count for parallel tasks

Signed-off-by: zazulam <m.zazula@gmail.com>
Co-authored-by: droctothorpe <mythicalsunlight@gmail.com>

* update comment & disable v(4) logs

Signed-off-by: zazulam <m.zazula@gmail.com>

* Address Chen's feedback

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: zazulam <m.zazula@gmail.com>

* Clarify comment

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>

---------

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Signed-off-by: zazulam <m.zazula@gmail.com>
Signed-off-by: Tyler Kalbach <tkalbach@athenahealth.com>
Co-authored-by: zazulam <m.zazula@gmail.com>
Co-authored-by: CarterFendley <carter.fendley@gmail.com>
Co-authored-by: edmondop <edmondo.porcu@gmail.com>
Co-authored-by: Tyler Kalbach <tkalbach@athenahealth.com>
2024-10-31 06:19:12 +00:00
Gage Krumbach f2fead51cc
chore(backend): typo in max concurrency error text (#11342)
Signed-off-by: Gage Krumbach <gkrumbach@gmail.com>
2024-10-30 23:00:12 +00:00
Yifan Chen 6684b6d671 chore(components): Update docker base image to marketplace.gcr.io/google/ubuntu2404, which will install newer Python
Signed-off-by: Yifan Chen <chenyifan@google.com>
PiperOrigin-RevId: 691140914
2024-10-29 13:28:27 -07:00
Chen Sun 04d600b2d3 fix(components): Fix create_custom_training_job_from_component default location
Signed-off-by: Chen Sun <chesu@google.com>
PiperOrigin-RevId: 691105600
2024-10-29 11:52:30 -07:00
Chen Sun c81c61e101
chore: fix release note (#11337)
* chore: fix RELEASE.md

Signed-off-by: Chen Sun <chensun@users.noreply.github.com>

* fix: Update RELEASE.md

Signed-off-by: Chen Sun <chensun@users.noreply.github.com>

---------

Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2024-10-29 18:27:11 +00:00
Greg Sheremeta df4d7878c4
feat(sdk): add PipelineConfig to DSL to re-implement pipeline-level config (#11112)
KFP v1 supported setting pipeline-level configuration via a
`PipelineConf` class. This class was deprecated and no replacement
was added to KFP v2.

add new PipelineConfig class to support setting pipeline-level
configuration in KFP v2.

Signed-off-by: Greg Sheremeta <gshereme@redhat.com>
2024-10-29 18:08:11 +00:00
Sébastien Han df28e891c4
feat(component): execute in a virtual env (#11326)
This commit introduces the ability to run the component inside a virtual
environment, which is particularly useful when the Python system site package
directory is read-only, causing pip to fail during the installation of kfp and
other dependencies.

To bypass this issue, a writable temporary directory is selected to create a
virtual environment that inherits the global system site packages. The entire
workflow is then executed from within this virtual environment.

Furthermore, a new field, `use_venv`, has been added to the component
decorator, with a default value of `False`.

Signed-off-by: Sébastien Han <seb@redhat.com>
2024-10-29 17:02:11 +00:00
Greg Sheremeta c2f56495b9
feat(api): add PipelineConfig to api to re-implement pipeline-level config (#11333)
KFP v1 supported setting pipeline-level configuration via a
`PipelineConf` class. This class was deprecated and no replacement
was added to KFP v2.

add new PipelineConfig message in the api to support setting
pipeline-level configuration in KFP v2.

Signed-off-by: Greg Sheremeta <gshereme@redhat.com>
2024-10-29 14:57:10 +00:00
Chen Sun abbd915a2a feat(components)!: Deprecate preview.custom_job module
Signed-off-by: Chen Sun <chesu@google.com>
PiperOrigin-RevId: 690917387
2024-10-29 01:23:09 -07:00
Chen Sun c84241b736 feat(components): Add reservation_affinity support in v1.create_custom_training_job_from_component
Signed-off-by: Chen Sun <chesu@google.com>
PiperOrigin-RevId: 690750224
2024-10-28 14:25:53 -07:00
ElayAharoni c5f162d552
Add-Create-Experiment-button-when-selecting-experiement-final (#11332)
Signed-off-by: Elay Aharoni (EXT-Nokia) <elay.aharoni.ext@nokia.com>
Co-authored-by: Elay Aharoni (EXT-Nokia) <elay.aharoni.ext@nokia.com>
2024-10-28 13:30:10 +00:00
Valentina Rodriguez Sosa f256d86fbb
adding chore as a new template. Fixes #11263 (#11317)
* adding chore as a new template

Signed-off-by: varodrig <varodrig@redhat.com>

* Update .github/ISSUE_TEMPLATE/CHORE.md

Co-authored-by: Helber Belmiro <helber.belmiro@gmail.com>
Signed-off-by: Valentina Rodriguez Sosa <64439402+varodrig@users.noreply.github.com>

* Update .github/ISSUE_TEMPLATE/CHORE.md

Co-authored-by: Helber Belmiro <helber.belmiro@gmail.com>
Signed-off-by: Valentina Rodriguez Sosa <64439402+varodrig@users.noreply.github.com>

* Update .github/ISSUE_TEMPLATE/CHORE.md

Co-authored-by: Helber Belmiro <helber.belmiro@gmail.com>
Signed-off-by: Valentina Rodriguez Sosa <64439402+varodrig@users.noreply.github.com>

* Update .github/ISSUE_TEMPLATE/CHORE.md

Co-authored-by: Helber Belmiro <helber.belmiro@gmail.com>
Signed-off-by: Valentina Rodriguez Sosa <64439402+varodrig@users.noreply.github.com>

* Update .github/ISSUE_TEMPLATE/CHORE.md

Co-authored-by: Helber Belmiro <helber.belmiro@gmail.com>
Signed-off-by: Valentina Rodriguez Sosa <64439402+varodrig@users.noreply.github.com>

* Update .github/ISSUE_TEMPLATE/CHORE.md

Co-authored-by: Helber Belmiro <helber.belmiro@gmail.com>
Signed-off-by: Valentina Rodriguez Sosa <64439402+varodrig@users.noreply.github.com>

---------

Signed-off-by: varodrig <varodrig@redhat.com>
Signed-off-by: Valentina Rodriguez Sosa <64439402+varodrig@users.noreply.github.com>
Co-authored-by: Helber Belmiro <helber.belmiro@gmail.com>
2024-10-25 14:37:32 +00:00
Alex 6a35ee5144
fix(tests): remove redundant integration test wf (#11322)
* fix(tests): remove redundant integration test wf

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>

* Add paths

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>

* Remove integration-test.sh

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>

---------

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
2024-10-22 20:27:29 +00:00
Vani Haripriya Mudadla 095a794cd4
test: Enabled ci-check and add-ci-passed-label workflows (#11320)
Signed-off-by: VaniHaripriya <vmudadla@redhat.com>
2024-10-21 20:57:28 +00:00
Chen Sun 187ecd0cc4
chore(components): move old components to contrib folder (#11315)
Moving components that as no maintenance activities in the past two
years to contrib folder.

Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2024-10-21 16:50:28 +00:00
Helber Belmiro c2a7713426
test: Disabled ci-check and add-ci-passed-label workflows. (#11306)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2024-10-17 12:51:19 +00:00
Carter Fendley be863a8529
feat(testing): use kustomize to patch deployments before deploy (#11294)
* Use kustomize to patch deployments before deploy

Signed-off-by: carter.fendley <carter.fendley@gmail.com>

* Relocate scripts / manifests to github directory

Signed-off-by: carter.fendley <carter.fendley@gmail.com>

---------

Signed-off-by: carter.fendley <carter.fendley@gmail.com>
2024-10-17 05:05:19 +00:00
Vani Haripriya Mudadla aec28561d5
test: Fix failing SDK tests by creating Python virtual environment (#11300)
Signed-off-by: vmudadla <vmudadla@redhat.com>
2024-10-16 12:24:19 +00:00
Vani Haripriya Mudadla ae4ab389a3
test: Resolve ci-check failures in long-running CI tests (#11295)
Signed-off-by: vmudadla <vmudadla@redhat.com>
2024-10-16 11:58:19 +00:00
chenyifan-vertex a0d313e095
feat: add fields in SinglePlatformSpec (#11299)
Signed-off-by: chenyifan-vertex <151570620+chenyifan-vertex@users.noreply.github.com>
2024-10-15 22:04:18 +00:00
chenyifan-vertex 1aeea0093f
chore: update SinglePlatformSpec and ComponentSpec for Vertex Platform speci… (#11298)
Signed-off-by: chenyifan-vertex <151570620+chenyifan-vertex@users.noreply.github.com>
2024-10-15 18:08:18 +00:00
Helber Belmiro e16b4469d7
Revert "chore(deps): bump golang.org/x/net from 0.0.0-20210726213435-… (#11297)
This reverts commit 7afbbd7aed.

chore: pinned estroz/rerun-actions version (#11257)

Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2024-10-15 15:21:18 +00:00
dependabot[bot] 7afbbd7aed
chore(deps): bump golang.org/x/net from 0.0.0-20210726213435-c6fcb2dbf985 to 0.23.0 in /test/tools/project-cleaner (#10728)
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.0.0-20210726213435-c6fcb2dbf985 to 0.23.0.
- [Commits](https://github.com/golang/net/commits/v0.23.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-15 12:04:17 +00:00
Vani Haripriya Mudadla 4ccb047771
test: Integrate Git Hub Action Results into Tide (#11262)
Signed-off-by: vmudadla <vmudadla@redhat.com>
2024-10-12 13:23:15 +00:00
Carter Fendley 1550b363ae
feat(workflows): use built images in Github workflows (#11284)
* Patch deployments and include debugging info

Signed-off-by: carter.fendley <carter.fendley@gmail.com>

* Build and use driver / launcher too!

Signed-off-by: carter.fendley <carter.fendley@gmail.com>

* Modify waiting status message

Signed-off-by: carter.fendley <carter.fendley@gmail.com>

* Fix typo

Signed-off-by: carter.fendley <carter.fendley@gmail.com>

---------

Signed-off-by: carter.fendley <carter.fendley@gmail.com>
2024-10-11 17:40:11 +00:00
Jason Dai 753a2f148a fix(components): remove default prediction column names in evaluation regression component to fix issues with bigquery data source
Signed-off-by: Jason Dai <jsndai@google.com>
PiperOrigin-RevId: 684488025
2024-10-10 10:15:30 -07:00
Michael 391de8ca9e
fix(backend): set default value to true for ForcePathStyle (#11281)
Signed-off-by: zazulam <m.zazula@gmail.com>
2024-10-09 15:54:09 +00:00
Chen Sun c27df6fd21
chore(doc): Update kfp-kubenetes release instructions. (#11276)
* chore(doc): Update kfp-kubenetes release instructions.

Signed-off-by: Chen Sun <chensun@users.noreply.github.com>

* Update RELEASE.md

Signed-off-by: Chen Sun <chensun@users.noreply.github.com>

---------

Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2024-10-08 21:26:08 +00:00
dependabot[bot] 03b488d1a3
chore(deps): bump webpack from 5.90.3 to 5.95.0 in /frontend (#11271)
Bumps [webpack](https://github.com/webpack/webpack) from 5.90.3 to 5.95.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.90.3...v5.95.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-08 18:41:08 +00:00
dependabot[bot] 8590ec1147
chore(deps): bump rollup from 2.63.0 to 2.79.2 in /frontend (#11254)
Bumps [rollup](https://github.com/rollup/rollup) from 2.63.0 to 2.79.2.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.63.0...v2.79.2)

---
updated-dependencies:
- dependency-name: rollup
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-04 20:18:04 +00:00
Humair Khan 6f6c8aeda9
correct lastrun unittest timestamps (#11270)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2024-10-03 21:53:03 +00:00
b4sus 219725d9f0
fix(backend): randomizing output uri path to avoid overwriting. Fixes #10186 (#11243)
Signed-off-by: b4sus <jurob19@gmail.com>
2024-10-03 20:39:03 +00:00
Giulio Frasca 374b18bc33
feat(backend): Remove PipelineSpec Template storage from ObjStore responsibilies. Fixes #10509 (#10790)
* feat(backend): Remove PipelineSpec Template storage from ObjStore responsibilies. Fixes #10509

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>

* chore: Remove BadObjStore unit tests (no longer applicable)

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>

* test: Update backend unit tests to not retrieve PipelineSpec from mock ObjStore

- Add PipelineSpec to mock PVs as they are no longer retrieved from
  ObjStore

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>

---------

Signed-off-by: Giulio Frasca <gfrasca@redhat.com>
2024-10-03 19:54:03 +00:00
Helber Belmiro f4cdbeb913
chore: pinned estroz/rerun-actions version (#11257)
Signed-off-by: hbelmiro <helber.belmiro@gmail.com>
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2024-09-27 21:56:36 +00:00
Helber Belmiro 6c3ab39ee2
chore: adding @hbelmiro to backend reviewers (#11256)
Signed-off-by: hbelmiro <helber.belmiro@gmail.com>
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2024-09-27 14:25:28 -07:00
Anton Pechenin 85fdd73ae0
feat(backend): add configurable S3 path style support (#11246)
Signed-off-by: ntny <ntny1986@gmail.com>
2024-09-27 15:52:36 +00:00
Chen Sun feacb5287b
chore: adding HumairAK to root OWNERS (#11253)
Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2024-09-27 15:48:35 +00:00
ElayAharoni db8669c33e
feat(frontend/backend): Allow the ability to sort experiments by last run creation. Fixes #10884 (#11163)
* UPSTREAM: <carry>: add last_run_creation

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

* Allow-the-ability-to-sort-Experiments-by-last-run-creation-#10884

Signed-off-by: Elay Aharoni (EXT-Nokia) <elay.aharoni.ext@nokia.com>

* UPSTREAM: <carry>: chore(backend): Rename UpdateLastRun -> SetLastRunTimestamp

follup up to bf77909. Rename UpdateLastRun -> SetLastRunTimestamp

also tweak a related log message

Signed-off-by: Greg Sheremeta <gshereme@redhat.com>

* UPSTREAM: <carry>: chore(backend): Rename UpdateLastRun -> SetLastRunTimestamp

follup up to bf77909. Rename UpdateLastRun -> SetLastRunTimestamp

also tweak a related log message

Signed-off-by: Greg Sheremeta <gshereme@redhat.com>

---------

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
Signed-off-by: Elay Aharoni (EXT-Nokia) <elay.aharoni.ext@nokia.com>
Signed-off-by: Greg Sheremeta <gshereme@redhat.com>
Co-authored-by: Humair Khan <HumairAK@users.noreply.github.com>
Co-authored-by: Elay Aharoni (EXT-Nokia) <elay.aharoni.ext@nokia.com>
Co-authored-by: Greg Sheremeta <gshereme@redhat.com>
2024-09-25 22:31:34 +00:00
Dharmit Dalvi 3f495229f2
feat(sdk): Allow disabling default caching via a CLI flag and env var (#11222)
* feat(sdk): Allow setting a default of execution caching disabled via a compiler CLI flag and env var

Co-authored-by: Greg Sheremeta <gshereme@redhat.com>
Signed-off-by: ddalvi <ddalvi@redhat.com>

* Add tests for disabling default caching var and flag

Signed-off-by: ddalvi <ddalvi@redhat.com>

---------

Signed-off-by: ddalvi <ddalvi@redhat.com>
Co-authored-by: Greg Sheremeta <gshereme@redhat.com>
2024-09-25 22:28:35 +00:00
Helber Belmiro 880e46dc1f
test: Fixed kubeflow-pipelines-integration-v2 workflow (#11244)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2024-09-24 18:35:33 +00:00
Paulina Pacyna be6adb6ae8
chore: Remove PaulinaPacyna from reviewers (#11242)
Signed-off-by: paulinapk <paulinapk@google.com>
2024-09-24 17:39:33 +00:00
Carter Fendley ceeda01d0a
fix(workflows): patch reversed launcher / driver in workflow matrix (#11238)
Signed-off-by: carter.fendley <carter.fendley@gmail.com>
2024-09-23 18:40:32 +00:00
Humair Khan ea8f37c4dc
chore: add workflow to build images (#11232)
This commit adds a github workflow that will build v2 images and push
them to GHCR. It uses the GITHUB_TOKEN to authenticate and uses docker
provisioned github actions to streamline the flow. The workflow also
creates attestations for the packages which can be used to verify
provenance and integrity. The workflow can be triggered manually or via
another workflow call. The latter is to supplement future automation
flows.

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2024-09-23 16:36:32 +00:00
dependabot[bot] 2305344af0
chore(deps): bump send and express in /frontend/server (#11229)
Bumps [send](https://github.com/pillarjs/send) to 0.19.0 and updates ancestor dependency [express](https://github.com/expressjs/express). These dependencies need to be updated together.


Updates `send` from 0.18.0 to 0.19.0
- [Release notes](https://github.com/pillarjs/send/releases)
- [Changelog](https://github.com/pillarjs/send/blob/master/HISTORY.md)
- [Commits](https://github.com/pillarjs/send/compare/0.18.0...0.19.0)

Updates `express` from 4.20.0 to 4.21.0
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/4.21.0/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.20.0...4.21.0)

---
updated-dependencies:
- dependency-name: send
  dependency-type: indirect
- dependency-name: express
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-23 16:35:33 +00:00
dependabot[bot] 28967bc910
chore(deps): bump fast-xml-parser and @aws-sdk/credential-providers in /frontend/server (#11056)
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) to 4.4.1 and updates ancestor dependency [@aws-sdk/credential-providers](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/packages/credential-providers). These dependencies need to be updated together.


Updates `fast-xml-parser` from 4.2.5 to 4.4.1
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v4.2.5...v4.4.1)

Updates `@aws-sdk/credential-providers` from 3.359.0 to 3.621.0
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/packages/credential-providers/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.621.0/packages/credential-providers)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-type: indirect
- dependency-name: "@aws-sdk/credential-providers"
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-22 06:37:30 +00:00
dependabot[bot] 7b38b6b3b0
chore(deps-dev): bump elliptic from 6.5.5 to 6.5.7 in /frontend (#11127)
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.5 to 6.5.7.
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.5...v6.5.7)

---
updated-dependencies:
- dependency-name: elliptic
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-22 06:36:30 +00:00
Chen Sun a4119a6bf1
fix(backend): upgrade PyYMAL to fix metadata_writer build error (#11231)
Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2024-09-20 19:08:29 +00:00
KevinGrantLee 70aaf8a9a4 feat(sdk): support dynamic machine type parameters in pipeline task setters (#11097)
* temp title: change title

Signed-off-by: KevinGrantLee <kglee@google.com>
2024-09-20 17:30:32 +00:00
dependabot[bot] f4857ad84f chore(deps): bump express from 4.17.3 to 4.20.0 in /frontend/server (#11201)
Bumps [express](https://github.com/expressjs/express) from 4.17.3 to 4.20.0.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.17.3...4.20.0)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-20 17:30:20 +00:00
dependabot[bot] 6589d4af07 chore(deps): bump send and express in /frontend/mock-backend (#11200)
Bumps [send](https://github.com/pillarjs/send) to 0.19.0 and updates ancestor dependency [express](https://github.com/expressjs/express). These dependencies need to be updated together.


Updates `send` from 0.17.2 to 0.19.0
- [Release notes](https://github.com/pillarjs/send/releases)
- [Changelog](https://github.com/pillarjs/send/blob/master/HISTORY.md)
- [Commits](https://github.com/pillarjs/send/compare/0.17.2...0.19.0)

Updates `express` from 4.17.3 to 4.21.0
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/4.21.0/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.17.3...4.21.0)

---
updated-dependencies:
- dependency-name: send
  dependency-type: indirect
- dependency-name: express
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-20 17:30:20 +00:00
Kevin James 0b92f86408
refactor: fix invalid escape sequences (#11147)
Signed-off-by: Kevin James <KevinJames@thekev.in>
2024-09-20 16:24:30 +00:00
Ricardo Martinelli de Oliveira ba006bddcb
chore: fix CI by adding a dependency of python/sdk for the e2e-test (#11221)
Signed-off-by: Ricardo M. Oliveira <rmartine@redhat.com>
2024-09-17 21:30:27 +00:00
Googler 581b7e5b7e chore(components): GCPC 2.17.0 Release
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 675267134
2024-09-16 13:21:48 -07:00
Chen Sun b3e75cf649
chore: clean up obsolete requirements.txt under root directory (#11216)
Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2024-09-16 18:39:25 +00:00
ElayAharoni cfb3b3149d
fix(frontend): first time choosing a pipeline definition is VERY slow. Fixes #10897 (#11130)
Signed-off-by: Elay Aharoni (EXT-Nokia) <elay.aharoni.ext@nokia.com>
Co-authored-by: Elay Aharoni (EXT-Nokia) <elay.aharoni.ext@nokia.com>
2024-09-16 18:16:25 +00:00
Jack Quinn eee095e5c8
fix(ui): Fixes V1 Run detail unnecessary reloading. Fixes #10590 (#11214)
Signed-off-by: Jack Quinn <jack@jq.codes>
2024-09-16 18:14:26 +00:00
Chen Sun 1a4849a032
chore: move release instruction screenshots out of root directory (#11215)
Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2024-09-16 18:11:25 +00:00
Greg Sheremeta c64294910e
chore(docs): clean up kfp-kubernetes documentation index page (#11207)
The entry page for kfp-kubernetes was a little lacking. Clean it up
a bit.

Signed-off-by: Greg Sheremeta <gshereme@redhat.com>
2024-09-14 22:05:24 +00:00
Diego Lovison 123ed1eb30
chore: Set Python 3.9 as the Minimum Supported Version (#11159)
Signed-off-by: Diego Lovison <diegolovison@gmail.com>
2024-09-12 19:10:22 +00:00
Humair Khan d23b72bf12
replaced deprecated image repos with registry.k8s.io (#11152)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2024-09-12 04:00:21 +00:00
Chen Sun 1cded35cf5
chore(sdk): release KFP SDK 2.9.0 (#11193)
Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2024-09-09 23:47:20 +00:00
Chen Sun dfd4cc1e53
feat(sdk)!: Pin kfp-pipeline-spec==0.4.0, kfp-server-api>=2.1.0,<2.4.0 (#11192)
Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2024-09-09 23:06:20 +00:00
Chen Sun d3aa8370aa
chore: update kfp-kubernetes release scripts and instructions (#11191)
Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2024-09-09 19:26:20 +00:00
Chen Sun 3af8b6494d
chore: release kfp-kubernetes 1.3.0 (#11190)
Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2024-09-09 17:06:19 +00:00
Chen Sun 2481193faf
chore: Release kfp-pipeline-spec 0.4.0 (#11189)
Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2024-09-09 16:53:20 +00:00
Chen Sun 389776463b
chore: Update RELEASE.md to remove obsolete instructions (#11183)
Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2024-09-06 22:54:16 +00:00
Chen Sun 4467df5f9c chore(release): bumped version to 2.3.0 2024-09-06 22:24:15 +00:00
Chen Sun b69c1b67b3
chore(backend): update driver and launcher default images (#11182)
Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2024-09-06 21:41:16 +00:00
Jan Staněk e9c77ec6d5
fix(ui): fixes empty string value in pipeline parameters (#11175)
Signed-off-by: Jan Staněk <jan@jstanek.cz>
Co-authored-by: Jan Staněk <jan.stanek2@firma.seznam.cz>
2024-09-06 20:58:17 +00:00
Dharmit Dalvi c7f87293a3
chore: Remove unwanted Frontend test files (#10973)
Signed-off-by: ddalvi <ddalvi@redhat.com>
2024-09-06 20:56:17 +00:00
ege uçak a59261c994
chore(sdk): Loosening kubernetes dependency constraint (#11079)
* Loosening kubernetes dependency constraint

Signed-off-by: egeucak <egeucak75@hotmail.com>

* added setuptools in test script

Signed-off-by: egeucak <egeucak75@hotmail.com>

---------

Signed-off-by: egeucak <egeucak75@hotmail.com>
2024-09-06 13:54:56 -07:00
Diego Lovison 3efa02984c
fix(sdk): Kfp support for pip trusted host (#11151)
Signed-off-by: Diego Lovison <diegolovison@gmail.com>
2024-09-06 13:54:25 -07:00
aman23bedi 7f9cf65f1c
test: Move run-all-gcpc-modules to GitHub Actions (#11157)
* add gcpc modules tests to gha

Signed-off-by: Amanpreet Singh Bedi <amanpreet.bedi@zscaler.com>

* remove run-all-gcpc-modules test driver script

Signed-off-by: Amanpreet Singh Bedi <amanpreet.bedi@zscaler.com>

* fix path under gcpc modules tests github action

Signed-off-by: Amanpreet Singh Bedi <amanpreet.bedi@zscaler.com>

* upgrade ubuntu base image

Signed-off-by: Amanpreet Singh Bedi <amanpreet.bedi@zscaler.com>

* upgrade python version to 3.9

Signed-off-by: Amanpreet Singh Bedi <amanpreetsinghbedi23@gmail.com>

---------

Signed-off-by: Amanpreet Singh Bedi <amanpreet.bedi@zscaler.com>
Signed-off-by: Amanpreet Singh Bedi <amanpreetsinghbedi23@gmail.com>
Co-authored-by: Amanpreet Singh Bedi <amanpreet.bedi@zscaler.com>
2024-09-06 13:53:21 -07:00
Chen Sun a34552aa99
chore: add PaulinaPacyna and ouadakarim as reviewers (#11180)
Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2024-09-06 19:34:17 +00:00
Humair Khan d64554b1a8
(fix): reduce executor logs (#11169)
* remove driver logs from executor

These logs congest the executor runtime logs making it difficult for the
user to differentiate between logs. The driver logs are unnecessary here
and can be removed to reduce this clutter.

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

* remove duplicate emissary call in executor

As per the initial inline dev comment, argo podspecpatch did not add the
emissary call, and had to be manualy added. This was fixed a couple of
argo versions back. However, as a result executor pod makes double calls
to the executor, which as a consequence also results in superflous logs.

This change removes the additional call to emissary to resolve this.

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

---------

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2024-09-06 19:25:17 +00:00
Helber Belmiro 01ad460ba4
test: Fixed `kfp-runtime-tests` to run on master branch (#11158)
Signed-off-by: hbelmiro <helber.belmiro@gmail.com>
2024-09-06 19:24:17 +00:00
Chen Sun bd76229fc7
chore: Add instructions for releasing driver and launcher images (#11179)
Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2024-09-06 19:21:17 +00:00
Chen Sun 344ea02549
chore(backend): update driver and launcher default images (#11178)
Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2024-09-06 19:14:17 +00:00
Chen Sun f075d0c516
chore(backend): Update driver and launcher licenses (#11177)
Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2024-09-06 11:20:50 -07:00
Helber Belmiro 4c955f4780
chore: Added DCO link to PR template (#11176)
Signed-off-by: Helber Belmiro <helber.belmiro@gmail.com>
2024-09-06 12:49:16 +00:00
Humair Khan 2c91fb797e
correct artifact preview behavior in UI (#11059)
This change allows KFP UI to fallback to UI host namespace when no
namespaces are provided when referencing the artifact object store
provider secret, in default kubeflow deployments this namespace is
simply "kubeflow", however the user can customize this behavior by
providing the environment variable "SERVER_NAMESPACE" to the KFP UI
deployment.

Further more, this change addresses a bug that caused URL
parse to fail when parsing endpoints without a protocol, this will
support such endpoint types as <ip>:<port> for object store endpoints,
as is the case in the default kfp deployment manifests.

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2024-09-03 23:24:14 +00:00
ElayAharoni 51d2c92b55
fix(frontend): fixes filter pipeline text box shows error when typing anything in it. Fixes #10241 (#11096)
* Filter pipeline text box shows error when typing anything in it #10241

Signed-off-by: Elay Aharoni (EXT-Nokia) <elay.aharoni.ext@nokia.com>

* Filter pipeline text box shows error when typing anything in it #10241

Signed-off-by: Elay Aharoni (EXT-Nokia) <elay.aharoni.ext@nokia.com>

---------

Signed-off-by: Elay Aharoni (EXT-Nokia) <elay.aharoni.ext@nokia.com>
Co-authored-by: Elay Aharoni (EXT-Nokia) <elay.aharoni.ext@nokia.com>
2024-09-03 23:21:15 +00:00
Helber Belmiro 1c7954de26
test: Improvements to wait_for_pods function (#11162)
Signed-off-by: hbelmiro <helber.belmiro@gmail.com>
2024-09-03 18:42:14 +00:00
Michael Hu 0d098db41c chore(components): Update AutoSxS and RLHF image tags
Signed-off-by: Michael Hu <humichael@google.com>
PiperOrigin-RevId: 668536503
2024-08-28 11:28:40 -07:00
Helber Belmiro 7c7ff1234f
chore: Wrapped "Failed GetContextByTypeAndName" error for better troubleshooting (#11098)
Signed-off-by: hbelmiro <helber.belmiro@gmail.com>
2024-08-28 14:16:03 +00:00
Diego Lovison e1d172bb57
Fix: Basic sample tests - sequential is flaky (#11138)
Signed-off-by: Diego Lovison <diegolovison@gmail.com>
2024-08-27 18:25:02 +00:00
dependabot[bot] a71033b20a
chore(deps): bump micromatch from 4.0.5 to 4.0.8 in /test/frontend-integration-test (#11132)
Bumps [micromatch](https://github.com/micromatch/micromatch) from 4.0.5 to 4.0.8.
- [Release notes](https://github.com/micromatch/micromatch/releases)
- [Changelog](https://github.com/micromatch/micromatch/blob/4.0.8/CHANGELOG.md)
- [Commits](https://github.com/micromatch/micromatch/compare/4.0.5...4.0.8)

---
updated-dependencies:
- dependency-name: micromatch
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-26 19:41:02 +00:00
Fiona Waters a3adf9471c
docs:fixing broken links in readme (#11108)
Signed-off-by: Fiona Waters <fiwaters6@gmail.com>
2024-08-23 21:41:58 +00:00
Greg Sheremeta 7506a8eafa
feat(Backend + SDK): Update kfp backend and kubernetes sdk to support EmptyDir (#10913)
Update kfp backend and kubernetes sdk to support mounting EmptyDir
volumes to task pods.

Inspired by #10427

Fixes: #10656

Signed-off-by: Greg Sheremeta <gshereme@redhat.com>
2024-08-23 19:52:59 +00:00
Giulio Frasca ae8315c4e6
chore: Add make targets for building driver and launcher images (#11103)
Signed-off-by: Giulio Frasca <gfrasca@redhat.com>
2024-08-23 19:51:59 +00:00
Diego Lovison 37441afd54
test: Kubeflow Pipelines V2 integration Tests (#11125)
Signed-off-by: Diego Lovison <diegolovison@gmail.com>
2024-08-23 19:46:00 +00:00
Dharmit Dalvi 91cd1f4da3
chore: Adding @DharmitD to SDK reviewers (#11131)
Signed-off-by: ddalvi <ddalvi@redhat.com>
2024-08-22 21:59:58 +00:00
Jason Dai 4f36fe3637 feat(components): release LLM Model Evaluation image version v0.7
Signed-off-by: Jason Dai <jsndai@google.com>
PiperOrigin-RevId: 666102687
2024-08-21 17:35:18 -07:00
Googler 0d3e79adc7 fix(components): Pass moddel name to eval_runner to process batch prediction's output as per the output schema of model used
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 665977093
2024-08-21 12:07:16 -07:00
Oswaldo Gomez 43cdc2081d
Fix view edit cluster roles (#11067)
* Fixing incorrect typing in loop_parallism example

Signed-off-by: Oswaldo Gomez <oswaldo.gomez@roche.com>

* Fixing samples/core/loop_parameter example

Signed-off-by: Oswaldo Gomez <oswaldo.gomez@roche.com>

* Fixing aggregate-to-kubeflow-pipelines-edit

Signed-off-by: Oswaldo Gomez <oswaldo.gomez@roche.com>

* keeping MRs separate.

Signed-off-by: Oswaldo Gomez <oswaldo.gomez@roche.com>

* Adding blank line

Signed-off-by: Oswaldo Gomez <oswaldo.gomez@roche.com>

---------

Signed-off-by: Oswaldo Gomez <oswaldo.gomez@roche.com>
Co-authored-by: Oswaldo Gomez <oswaldo.gomez@roche.com>
2024-08-21 19:04:57 +00:00
Helber Belmiro 38f8f8e44f
chore: Renamed GitHub workflows from *.yaml to *.yml for consistency (#11126)
Signed-off-by: hbelmiro <helber.belmiro@gmail.com>
2024-08-21 14:10:57 +00:00
Googler 1a07ffa911 fix(components): Use instance.target_field_name format for text-bison models only, use target_field_name for gemini models
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 665638487
2024-08-20 19:33:59 -07:00
ElayAharoni 120a908305
test: Fail fast when image build fails on tests #11102 (#11115)
* Fail fast when image build fails on tests #11102

Signed-off-by: Elay Aharoni (EXT-Nokia) <elay.aharoni.ext@nokia.com>

* Fail fast when image build fails on tests #11102

Signed-off-by: Elay Aharoni (EXT-Nokia) <elay.aharoni.ext@nokia.com>

---------

Signed-off-by: Elay Aharoni (EXT-Nokia) <elay.aharoni.ext@nokia.com>
Co-authored-by: Elay Aharoni (EXT-Nokia) <elay.aharoni.ext@nokia.com>
2024-08-20 17:54:56 +00:00
Googler 36cf06677d chore(components): GCPC 2.16.1 Release
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 663883139
2024-08-16 15:10:06 -07:00
Googler 383cbcd065 feat(component): internal
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 663872006
2024-08-16 14:40:29 -07:00
Googler 8041ea8740 feat(component): internal
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 663774557
2024-08-16 10:28:04 -07:00
Alex 2e6e634de4
fix(frontend): retrieve archived logs from correct location (#11010)
* fix(frontend): retrieve archived logs from correct location

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: andreafehrman <andrea.k.fehrman@vanderbilt.edu>
Co-authored-by: owmasch <owenmaschal0598@gmail.com>

* Add namespace tag handling and validation

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: andreafehrman <andrea.k.fehrman@vanderbilt.edu>
Co-authored-by: owmasch <owenmaschal0598@gmail.com>

* Remove whitespace from keyFormat

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: andreafehrman <andrea.k.fehrman@vanderbilt.edu>
Co-authored-by: owmasch <owenmaschal0598@gmail.com>

* Update frontend unit tests

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>

* Remove superfluous log statements

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: quinnovator <jack@jq.codes>

* Add link to keyFormat in manifests

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>

* Fix workflow parsing for log artifact

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: quinnovator <jack@jq.codes>

* Fix unit test

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>

---------

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: andreafehrman <andrea.k.fehrman@vanderbilt.edu>
Co-authored-by: owmasch <owenmaschal0598@gmail.com>
Co-authored-by: quinnovator <jack@jq.codes>
2024-08-15 19:39:27 +00:00
Liav Weiss 000ef60080
fix: re-enable exit hanler test. (#11100)
Signed-off-by: Liav Weiss (EXT-Nokia) <liav.weiss.ext@nokia.com>
Co-authored-by: Liav Weiss (EXT-Nokia) <liav.weiss.ext@nokia.com>
2024-08-15 11:39:27 +00:00
Vani Haripriya Mudadla 4458bdd53f
test: Moved kubeflow-pipelines-manifests to GitHub Actions (#11066)
Signed-off-by: vmudadla <vmudadla@redhat.com>
2024-08-14 11:26:11 -07:00
Giulio Frasca 3a68b602e3
chore: Upgrade Argo to v3.4.17 (#10978)
Signed-off-by: Giulio Frasca <gfrasca@redhat.com>
2024-08-14 10:48:08 -07:00
Googler 7b7918ebf8 feat(components): Support dynamic values for boot_disk_type, boot_disk_size in preview.custom_job.utils.create_custom_training_job_from_component
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 662242688
2024-08-12 15:11:52 -07:00
Googler 289f64fe94 fix(components): Fix to model batch explanation component for Structured Data pipelines
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 661475667
2024-08-09 18:24:20 -07:00
Googler e8f0208777 feat(components): internal
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 661332120
2024-08-09 11:06:57 -07:00
Googler c06d9aee96 feat(component): internal
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 660985413
2024-08-08 14:37:52 -07:00
Michael 0e37fd66a4
feat(backend): move comp logic to workflow params (#10979)
* feat(backend): move comp logic to workflow params

Signed-off-by: zazulam <m.zazula@gmail.com>
Co-authored-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: andreafehrman <andrea.k.fehrman@vanderbilt.edu>
Co-authored-by: MonicaZhang1 <zhangmonica1@gmail.com>
Co-authored-by: kylekaminky <kyle.kaminky@gmail.com>
Co-authored-by: CarterFendley <carter.fendley@gmail.com>
Signed-off-by: zazulam <m.zazula@gmail.com>

* address pr comments

Signed-off-by: zazulam <m.zazula@gmail.com>

* Use function name instead of base name and address edge cases

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: zazulam <m.zazula@gmail.com>

* Improve logic and update tests

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: zazulam <m.zazula@gmail.com>

* POC hashing command and args

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: zazulam <m.zazula@gmail.com>

* Add comments to clarify the logic

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: zazulam <m.zazula@gmail.com>

* Hash entire PipelineContainerSpec

Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: zazulam <m.zazula@gmail.com>

---------

Signed-off-by: zazulam <m.zazula@gmail.com>
Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: droctothorpe <mythicalsunlight@gmail.com>
Co-authored-by: andreafehrman <andrea.k.fehrman@vanderbilt.edu>
Co-authored-by: MonicaZhang1 <zhangmonica1@gmail.com>
Co-authored-by: kylekaminky <kyle.kaminky@gmail.com>
Co-authored-by: CarterFendley <carter.fendley@gmail.com>
2024-08-08 16:44:41 +00:00
Diego Lovison 99bd234401
docs: Fix environment variables names (#11013)
Signed-off-by: Diego Lovison <diegolovison@gmail.com>
2024-08-07 17:51:40 +00:00
Googler 6f62203ccf feat(components): internal
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 660156029
2024-08-06 17:12:07 -07:00
Googler 2eb9bec1ae feat(components): internal
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 660148123
2024-08-06 16:48:19 -07:00
KevinGrantLee 83dcf1a609
feat(api): Add new ResourceSpec proto fields to support dynamic values. (#11075)
Signed-off-by: KevinGrantLee <kglee@google.com>
2024-08-06 22:49:39 +00:00
Googler c6f658b0e7 feat(components): internal
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 660088225
2024-08-06 14:01:45 -07:00
Googler e128bdbaf3 feat(components): internal
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 659993682
2024-08-06 09:52:16 -07:00
Googler abe525737f feat(components): internal
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 659693795
2024-08-05 15:03:39 -07:00
Googler 65f6475156 chore(components): Bump image version for Structured Data pipelines
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 659655574
2024-08-05 13:06:39 -07:00
Helber Belmiro 6c4a250032
chore: Fixed e2e tests (#11072)
Signed-off-by: hbelmiro <helber.belmiro@gmail.com>
2024-08-05 19:27:39 +00:00
Googler 522b5933b0 feat(components): internal
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 658993845
2024-08-02 21:17:15 -07:00
Oswaldo Gomez 1612dac4ad
fix: Incorrect typing in samples/cores/loop_parallism and fixing loop_parameter examples (#11062)
* Fixing incorrect typing in loop_parallism example

Signed-off-by: Oswaldo Gomez <oswaldo.gomez@roche.com>

* Fixing samples/core/loop_parameter example

Signed-off-by: Oswaldo Gomez <oswaldo.gomez@roche.com>

---------

Signed-off-by: Oswaldo Gomez <oswaldo.gomez@roche.com>
Co-authored-by: Oswaldo Gomez <oswaldo.gomez@roche.com>
2024-08-02 21:45:07 +00:00
Googler ff4e918033 chore(components): GCPC 2.16.0 Release
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 658877559
2024-08-02 12:50:49 -07:00
Diego Lovison c420f8c218
test: Add script and GitHub Action for kfp-kubernetes-library (#11006)
* test: Add script and GitHub Action for kfp-kubernetes-library

Signed-off-by: Diego Lovison <diegolovison@gmail.com>

* Rename

Signed-off-by: Diego Lovison <diegolovison@gmail.com>

* Update bash to have sudo

Signed-off-by: Diego Lovison <diegolovison@gmail.com>

---------

Signed-off-by: Diego Lovison <diegolovison@gmail.com>
2024-07-31 19:58:05 +00:00
Googler ad03bb6daa feat(component): internal
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 658108277
2024-07-31 12:47:28 -07:00
Googler 461d892db8 feat(components): internal
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 658076101
2024-07-31 11:18:59 -07:00
Helber Belmiro 87184fd976
test: Moved kubeflow-pipelines-samples-v2 to GitHub Actions (#11048)
Signed-off-by: hbelmiro <helber.belmiro@gmail.com>
2024-07-31 07:51:05 +00:00
Googler e44dfa7e89 feat(components): Support dynamic machine parameters in preview.custom_job.utils.create_custom_training_job_from_component
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 657895789
2024-07-31 00:47:42 -07:00
Humair Khan eea7d48379
add dev docs for kfp/sdk (#11046)
Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2024-07-30 18:24:56 +00:00
Helber Belmiro e940ba201e
test: Moved kfp-kubernetes-execution-tests to GitHub Actions (#10926)
* Moved kfp-kubernetes-execution-tests to GitHub Actions

Signed-off-by: hbelmiro <helber.belmiro@gmail.com>

* Removed Python versions matrix

Signed-off-by: hbelmiro <helber.belmiro@gmail.com>

---------

Signed-off-by: hbelmiro <helber.belmiro@gmail.com>
2024-07-30 13:44:55 +00:00
Helber Belmiro 3324d672b1
chore: adding @hbelmiro to kubernetes_platform/OWNERS (#11045)
Signed-off-by: hbelmiro <helber.belmiro@gmail.com>
2024-07-28 19:17:56 +00:00
Dharmit Dalvi 643c923010
test: Migrate KFP SDK Tests to GHA (#11037)
Signed-off-by: ddalvi <ddalvi@redhat.com>
2024-07-27 00:46:55 +00:00
Greg Sheremeta 97f2c66a83
chore: Adding @gregsheremeta to SDK reviewers (kubernetes_platform) (#11044)
Signed-off-by: Greg Sheremeta <gshereme@redhat.com>
2024-07-27 00:04:55 +00:00
Dharmit Dalvi f1d54790c6
test: Migrate miscellaneous SDK tests to GHA Workflow (#11032)
* test: Migrate SDK isort tests to GHA

Signed-off-by: ddalvi <ddalvi@redhat.com>

* test: Migrate SDK docformatter tests to GHA

Signed-off-by: ddalvi <ddalvi@redhat.com>

* test: Migrate SDK Component YAML tests to GHA

Signed-off-by: ddalvi <ddalvi@redhat.com>

---------

Signed-off-by: ddalvi <ddalvi@redhat.com>
2024-07-26 20:42:54 +00:00
Greg Sheremeta 1e95eb6285
fix(docs): IR -> Pipeline Spec (#11031)
Signed-off-by: Greg Sheremeta <gshereme@redhat.com>
2024-07-26 16:07:55 +00:00
Chen Sun f6ea7e356f
chore: Adding @HumairAK to backend and frontend reviewers (#11043)
* Update OWNERS

Signed-off-by: Chen Sun <chensun@users.noreply.github.com>

* Update OWNERS

Signed-off-by: Chen Sun <chensun@users.noreply.github.com>

---------

Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2024-07-25 22:44:54 +00:00
Chen Sun 13ff5a9a51
chore: Adding @gregsheremeta to SDK reviewers. (#11042)
Signed-off-by: Chen Sun <chensun@users.noreply.github.com>
2024-07-25 22:43:54 +00:00
Greg Sheremeta d911c8b73b
fix(docs): add note about protoc dependency and version (#10895)
Add a note about protoc being required, and a note about which versions are known to work.

Signed-off-by: Greg Sheremeta <gshereme@redhat.com>
2024-07-25 20:57:54 +00:00
Helber Belmiro 08185e7171
fix(sdk): Throw 'exit_task cannot depend on any other tasks.' error when an ExitHandler has a parameter dependent on other task (#11005)
Signed-off-by: hbelmiro <helber.belmiro@gmail.com>
2024-07-25 13:32:54 +00:00
Helber Belmiro 39fbd604fb
test: Removed mkp tests (#10924)
Signed-off-by: hbelmiro <helber.belmiro@gmail.com>
2024-07-25 12:53:54 +00:00
Dharmit Dalvi b274866b6a
test: Migrate KFP SDK Execution Tests to GHA (#10975)
Signed-off-by: ddalvi <ddalvi@redhat.com>
2024-07-25 11:33:54 +00:00
Greg Sheremeta 10aaf43136
feat(kubernetes_platform): Add empty dir mount (#10892)
* implement missing EmptyDir mount in kfp-kubernetes

Part of #10656

Signed-off-by: Greg Sheremeta <gshereme@redhat.com>

* pluralize repeated field - empty_dir_mount -> empty_dir_mounts

Signed-off-by: Greg Sheremeta <gshereme@redhat.com>

---------

Signed-off-by: Greg Sheremeta <gshereme@redhat.com>
2024-07-24 22:13:53 +00:00
Googler c8f08ba49f feat(internal): Adding proto field to support regional quota
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 655693862
2024-07-24 14:06:31 -07:00
Googler 62b355a4c5 chore(components): Add check that component in preview.custom_job.utils.create_custom_training_job_from_component doesn't have any parameters that share names with any custom job fields
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 655646695
2024-07-24 11:47:32 -07:00
Googler 58b342a850 chore(components): Bump Starry Net images and enforce that TF Record generation always runs before test set generation to speed up pipelines runs
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 655633942
2024-07-24 11:13:26 -07:00
Googler 7660e8a91c chore(components): Add target_field_name as input parameters to llm_evaluation_preprocessor component to support gemini model's input and output schema
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 655287601
2024-07-23 13:41:33 -07:00
Googler 9cb5913d47 chore(components): Fix bug due to protobuf library being upgraded by pinning protobuf version
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 652610202
2024-07-15 15:06:50 -07:00
Googler 4930beebb1 chore(components): Bump image version for Structured Data pipelines
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 651891065
2024-07-12 14:43:16 -07:00
Dharmit Dalvi 71a52ab4a9
test: Migrate KFP SDK Runtime Code Test to GHA (#10991)
Signed-off-by: ddalvi <ddalvi@redhat.com>
2024-07-10 14:30:13 +00:00
Dharmit Dalvi 574c2ffeac
test: Migrate KFP SDK Upgrade Test to GHA (#10989)
Signed-off-by: ddalvi <ddalvi@redhat.com>
2024-07-09 20:27:13 +00:00
Helber Belmiro 2c3d9d7b35
test: Moved KFP backend visualization tests to GitHub Actions (#10984)
Signed-off-by: hbelmiro <helber.belmiro@gmail.com>
2024-07-09 17:56:13 +00:00
Googler 0eae4307a0 chore(components): Update Starry Net description and add nan- and zero-threshold args
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 650295521
2024-07-08 10:28:10 -07:00
Ricardo Martinelli de Oliveira 38ef986eaa
chore: Add an option to re-run GHA workflows (#10930)
Signed-off-by: Ricardo M. Oliveira <rmartine@redhat.com>
2024-07-02 20:32:45 +00:00
Igor Kvachenok 7d2ec39515
test: install kfp on github periodic functional tests workflow (#10859)
* test: add kfp cluster to functional tests workflow

Signed-off-by: Igor Kvachenok <igor.kvachenok@prokube.ai>

* test: portforward kfp cluster for functional tests

Signed-off-by: Igor Kvachenok <igor.kvachenok@prokube.ai>

---------

Signed-off-by: Igor Kvachenok <igor.kvachenok@prokube.ai>
2024-07-02 12:25:44 +00:00
Dharmit Dalvi 2fb4922fc0
test: Migrate Frontend tests to a GHA Workflow (#10972)
Signed-off-by: ddalvi <ddalvi@redhat.com>
2024-07-01 16:12:44 +00:00
Helber Belmiro 568777d17c
test: kubeflow-pipeline-upgrade-test migrated to GitHub Actions (#10932)
Signed-off-by: hbelmiro <helber.belmiro@gmail.com>
2024-07-01 13:02:44 +00:00
Helber Belmiro 7a21329bad
test: Created a new GitHub action to reuse the creation of a KFP cluster (#10946)
* Created a new GitHub action to reuse the creation of a KFP cluster

Signed-off-by: hbelmiro <helber.belmiro@gmail.com>

* Created a new GHA for deploying a pure KFP cluster

Signed-off-by: hbelmiro <helber.belmiro@gmail.com>

---------

Signed-off-by: hbelmiro <helber.belmiro@gmail.com>
2024-06-29 14:09:42 +00:00
Dharmit Dalvi d499172897
test: Migrate KFP SDK YAPF test to a GHA Workflow (#10961)
Signed-off-by: ddalvi <ddalvi@redhat.com>
2024-06-29 14:06:42 +00:00
Helber Belmiro fb9213bcf7
chore: Added @rimolive, @hbelmiro and @DharmitD as approvers and reviewers for GitHub Actions (#10963)
Signed-off-by: hbelmiro <helber.belmiro@gmail.com>
2024-06-29 09:55:42 +00:00
Googler e3a498020a No public description
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 647376369
2024-06-27 10:58:58 -07:00
Dharmit Dalvi 29b7d2fe35
chore: Add ability to mount self-signed certs to kfp (#10849)
* Add ability to mount self-signed certs to kfp

This update allows CA bundles to be mounted to the launcher/executor pods since those make external connections to object store, which can be behind self signed certs.
Detailed Changes:
- Added `REQUESTS_CA_BUNDLE` to the environment variables. This is necessary
  because many Python-based libraries (e.g., requests) utilize this environment
  variable for SSL/TLS certificate verification. Notably, even though Boto3
  is documented to use `AWS_CA_BUNDLE`, tests have shown that it only respects
  `REQUESTS_CA_BUNDLE`. Reference:
  https://requests.readthedocs.io/en/latest/user/advanced/#ssl-cert-verification
  and https://github.com/aws/aws-cli/issues/3425.

- Configured `AWS_CA_BUNDLE` for AWS CLI and related utilities to ensure AWS
  services utilize our custom CA bundle for SSL/TLS.

- Set up `SSL_CERT_FILE` environment variable for OpenSSL's default certificate
  file. This setting is important as the `SSL_CERT_DIR` path adjustments had
  inconsistent results across different environments, as discussed in OpenSSL
  documentation: https://www.openssl.org/docs/man1.1.1/man3/SSL_CTX_set_default_verify_paths.html

Signed-off-by: ddalvi <ddalvi@redhat.com>
Co-authored-by: Vani Haripriya <vmudadla@redhat.com>
Co-authored-by: Humair Khan <HumairAK@users.noreply.github.com>
Signed-off-by: ddalvi <ddalvi@redhat.com>

* Add unit test to check the certificate mounting

Signed-off-by: ddalvi <ddalvi@redhat.com>

---------

Signed-off-by: ddalvi <ddalvi@redhat.com>
Co-authored-by: Vani Haripriya <vmudadla@redhat.com>
Co-authored-by: Humair Khan <HumairAK@users.noreply.github.com>
2024-06-27 12:47:11 +00:00
Dharmit Dalvi bdc3bb1f0d
Upgrade go version to 1.21 (#10911)
Signed-off-by: ddalvi <ddalvi@redhat.com>
2024-06-26 21:23:10 +00:00
Alex 1b5de64c6f
docs(backend): Remove deprecated v2 compatibility mode docs (#10956)
Signed-off-by: droctothorpe <mythicalsunlight@gmail.com>
2024-06-26 11:50:46 +00:00
Googler 0eac0811fc chore(components): GCPC 2.15.0 Release
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 646604055
2024-06-25 14:18:22 -07:00
Googler 338ff7534e chore(components): Update AutoSxS and RLHF image tags
Signed-off-by: Googler <nobody@google.com>
PiperOrigin-RevId: 646591563
2024-06-25 13:42:44 -07:00
Humair Khan 6723d3d5a9
feat(frontend&backend): Add UI support for object store customization and prefixes (#10787)
* feat: add store session info to artifact property

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

* chore: fix tests for api, artifact load, & runlist

Note that for runlist, the mock error response only returns one valid
run list with error set, the other is undefined, so to support multiple
runIds the mock error response will need to be adjusted.

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

* chore: support protocols in aws s3 endpoint config

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

* feat(ui): allow ui server to parse provider info

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

* feat(ui): parse artifact provider info in ui

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

* chore: add tests for provider info

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

* chore: update ec2 tests

..and clean up imports.

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

* chore: prettier fixes

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>

---------

Signed-off-by: Humair Khan <HumairAK@users.noreply.github.com>
2024-06-25 00:41:12 +00:00
2294 changed files with 97906 additions and 244971 deletions

View File

@ -1,272 +0,0 @@
# Copyright 2018 The Kubeflow Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Test before submit:
# gcloud builds submit --config=.cloudbuild.yaml --substitutions=COMMIT_SHA="$(git rev-parse HEAD)" --project=ml-pipeline-test
steps:
# # Build the Python SDK
# - name: 'python:3-alpine'
# entrypoint: '/bin/sh'
# args: ['-c', 'cd /workspace/sdk/python/; python3 setup.py sdist --format=gztar; cp dist/*.tar.gz /workspace/kfp.tar.gz']
# id: 'preparePythonSDK'
# waitFor: ["-"]
# - name: 'gcr.io/cloud-builders/gsutil'
# args: ['cp', '/workspace/kfp.tar.gz', 'gs://$PROJECT_ID/builds/$COMMIT_SHA/kfp.tar.gz']
# id: 'copyPythonSDK'
# waitFor: ['preparePythonSDK']
# - name: 'gcr.io/cloud-builders/gsutil'
# args: ['cp', '/workspace/kfp.tar.gz', 'gs://$PROJECT_ID/builds/latest/kfp.tar.gz']
# id: 'copyPythonSDKToLatest'
# waitFor: ['preparePythonSDK']
# Build the pipeline system images
- name: 'gcr.io/cloud-builders/docker'
entrypoint: /bin/bash
args:
- -ceux
- |
sed -i -e "s/ARG DATE/ENV DATE \"$(date -u)\"/" /workspace/frontend/Dockerfile
docker build -t gcr.io/$PROJECT_ID/frontend:$COMMIT_SHA \
--build-arg COMMIT_HASH=$COMMIT_SHA \
--build-arg TAG_NAME="$(cat /workspace/VERSION)" \
-f /workspace/frontend/Dockerfile \
/workspace
id: 'buildFrontend'
waitFor: ['-']
- name: 'gcr.io/cloud-builders/docker'
entrypoint: /bin/bash
args:
- -ceux
- |
docker build -t gcr.io/$PROJECT_ID/api-server:$COMMIT_SHA \
--build-arg COMMIT_SHA=$COMMIT_SHA \
--build-arg TAG_NAME="$(cat /workspace/VERSION)" \
-f /workspace/backend/Dockerfile /workspace
id: 'buildApiServer'
waitFor: ['-']
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/$PROJECT_ID/scheduledworkflow:$COMMIT_SHA', '-f',
'/workspace/backend/Dockerfile.scheduledworkflow', '/workspace']
id: 'buildScheduledWorkflow'
waitFor: ["-"]
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/$PROJECT_ID/viewer-crd-controller:$COMMIT_SHA', '-f',
'/workspace/backend/Dockerfile.viewercontroller', '/workspace']
id: 'buildViewerCrdController'
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/$PROJECT_ID/persistenceagent:$COMMIT_SHA', '-f',
'/workspace/backend/Dockerfile.persistenceagent', '/workspace']
id: 'buildPersistenceAgent'
waitFor: ["-"]
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/$PROJECT_ID/inverse-proxy-agent:$COMMIT_SHA', '-f',
'/workspace/proxy/Dockerfile', '/workspace/proxy']
id: 'buildInverseProxyAgent'
waitFor: ["-"]
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/$PROJECT_ID/visualization-server:$COMMIT_SHA',
'--build-arg', 'COMMIT_HASH=$COMMIT_SHA', '-f',
'/workspace/backend/Dockerfile.visualization', '/workspace']
id: 'buildVisualizationServer'
waitFor: ["-"]
- id: 'buildMetadataWriter'
name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/$PROJECT_ID/metadata-writer:$COMMIT_SHA',
'--build-arg', 'COMMIT_HASH=$COMMIT_SHA', '-f',
'/workspace/backend/metadata_writer/Dockerfile', '/workspace']
waitFor: ["-"]
- id: 'buildCacheServer'
name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/$PROJECT_ID/cache-server:$COMMIT_SHA',
'--build-arg', 'COMMIT_HASH=$COMMIT_SHA', '-f',
'/workspace/backend/Dockerfile.cacheserver', '/workspace']
waitFor: ["-"]
- id: 'buildCacheDeployer'
name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/$PROJECT_ID/cache-deployer:$COMMIT_SHA',
'--build-arg', 'COMMIT_HASH=$COMMIT_SHA', '-f',
'/workspace/backend/src/cache/deployer/Dockerfile', '/workspace']
waitFor: ["-"]
# Build marketplace deployer
- id: 'buildMarketplaceDeployer'
name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/$PROJECT_ID/deployer:$COMMIT_SHA',
'--build-arg', 'COMMIT_HASH=$COMMIT_SHA', '-f',
'/workspace/manifests/gcp_marketplace/deployer/Dockerfile', '/workspace/manifests/gcp_marketplace']
waitFor: ["-"]
# Build the Kubeflow-based pipeline component images
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/$PROJECT_ID/ml-pipeline-kubeflow-deployer:$COMMIT_SHA',
'/workspace/components/kubeflow/deployer']
id: 'buildDeployer'
waitFor: ["-"]
- name: 'gcr.io/cloud-builders/docker'
entrypoint: '/bin/bash'
args: ['-c', 'cd /workspace/components/kubeflow/launcher && ./build_image.sh -p $PROJECT_ID -t $COMMIT_SHA']
id: 'buildTFJobLauncher'
waitFor: ["-"]
- id: 'buildCpuTrainer'
name: 'gcr.io/cloud-builders/docker'
entrypoint: '/bin/bash'
args: ['-c', 'cd /workspace/components/kubeflow/dnntrainer && ./build_image.sh -p $PROJECT_ID -t $COMMIT_SHA -l ml-pipeline-kubeflow-tf-trainer -b 2.3.0']
waitFor: ["-"]
- name: 'gcr.io/cloud-builders/docker'
entrypoint: '/bin/bash'
args: ['-c', 'cd /workspace/components/kubeflow/dnntrainer && ./build_image.sh -p $PROJECT_ID -t $COMMIT_SHA -l ml-pipeline-kubeflow-tf-trainer-gpu -b 2.3.0-gpu']
id: 'buildGpuTrainer'
waitFor: ["-"]
# Build the local pipeline component images
- name: 'gcr.io/cloud-builders/docker'
entrypoint: '/bin/bash'
args: ['-c', 'cd /workspace/components/local/confusion_matrix && ./build_image.sh -p $PROJECT_ID -t $COMMIT_SHA']
id: 'buildConfusionMatrix'
waitFor: ["-"]
- name: 'gcr.io/cloud-builders/docker'
entrypoint: '/bin/bash'
args: ['-c', 'cd /workspace/components/local/roc && ./build_image.sh -p $PROJECT_ID -t $COMMIT_SHA']
id: 'buildROC'
waitFor: ["-"]
# Build third_party images
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/$PROJECT_ID/metadata-envoy:$COMMIT_SHA', '-f',
'/workspace/third_party/metadata_envoy/Dockerfile', '/workspace']
id: 'buildMetadataEnvoy'
# Pull third_party images
# ! Sync to the same MLMD version:
# * backend/metadata_writer/requirements.in and requirements.txt
# * @kubeflow/frontend/src/mlmd/generated
# * .cloudbuild.yaml and .release.cloudbuild.yaml
# * manifests/kustomize/base/metadata/base/metadata-grpc-deployment.yaml
# * test/tag_for_hosted.sh
- name: 'gcr.io/cloud-builders/docker'
args: ['pull', 'gcr.io/tfx-oss-public/ml_metadata_store_server:1.14.0']
id: 'pullMetadataServer'
- name: 'gcr.io/cloud-builders/docker'
args: ['pull', 'gcr.io/ml-pipeline/minio:RELEASE.2019-08-14T20-37-41Z-license-compliance']
id: 'pullMinio'
- name: 'gcr.io/cloud-builders/docker'
args: ['pull', 'gcr.io/ml-pipeline/mysql:8.0.26']
id: 'pullMysql'
- name: 'gcr.io/cloud-builders/docker'
args: ['pull', 'gcr.io/cloudsql-docker/gce-proxy:1.25.0']
id: 'pullCloudsqlProxy'
- name: 'gcr.io/cloud-builders/docker'
args: ['pull', 'gcr.io/ml-pipeline/argoexec:v3.4.16-license-compliance']
id: 'pullArgoExecutor'
- name: 'gcr.io/cloud-builders/docker'
args: ['pull', 'gcr.io/ml-pipeline/workflow-controller:v3.4.16-license-compliance']
id: 'pullArgoWorkflowController'
# V2 related images
# Prerequisite: Make sure ko image is available on the same project by running the following:
# git clone https://github.com/GoogleCloudPlatform/cloud-builders-community.git
# cd cloud-builders-community/ko
# gcloud builds submit . --config=cloudbuild.yaml --project=$PROJECT_ID
# Reference: https://dev.to/amammay/effective-go-on-gcp-lean-containers-with-ko-on-cloud-build-51ek
# Temporarily disable v2 image build due to unblock kubeflow-pipeline-mkp-test
# We aren't building v2 images for MKP at this moment anyway.
#
# - name: 'gcr.io/$PROJECT_ID/ko'
# entrypoint: /bin/sh
# args:
# - -c
# - |
# cd /workspace/backend/src/v2/
# /ko publish --bare ./cmd/launcher-v2 -t $COMMIT_SHA
# env:
# - 'KO_DOCKER_REPO=gcr.io/$PROJECT_ID/kfp-launcher'
# id: 'buildLauncher'
# waitFor: ["-"]
# - name: 'gcr.io/$PROJECT_ID/ko'
# entrypoint: /bin/sh
# args:
# - -c
# - |
# cd /workspace/backend/src/v2/
# /ko publish --bare ./cmd/driver -t $COMMIT_SHA
# env:
# - 'KO_DOCKER_REPO=gcr.io/$PROJECT_ID/kfp-driver'
# id: 'buildDriver'
# waitFor: ["-"]
# Tag for Hosted - SemVersion to Major.Minor parsing
- id: "parseMajorMinorVersion"
waitFor: ["-"]
name: gcr.io/cloud-builders/docker
entrypoint: /bin/bash
args:
- -ceux
- |
# Parse major minor version and save to a file for reusing in other steps.
# e.g. 1.0.0-rc.1 and 1.0.1 are parsed as 1.0
cat /workspace/VERSION | sed -e "s#\([0-9]\+[.][0-9]\+\)[.].*#\1#" > /workspace/mm.ver
# Tag for Hosted - Tag to hosted folder with MKP friendly name
- id: 'tagForHosted'
waitFor: ['parseMajorMinorVersion', 'buildFrontend', 'buildApiServer', 'buildScheduledWorkflow',
'buildViewerCrdController', 'buildPersistenceAgent', 'buildInverseProxyAgent', 'buildVisualizationServer',
'buildMetadataWriter', 'buildCacheServer', 'buildCacheDeployer', 'buildMetadataEnvoy',
'buildMarketplaceDeployer', 'pullMetadataServer', 'pullMinio', 'pullMysql', 'pullCloudsqlProxy',
'pullArgoExecutor', 'pullArgoWorkflowController']
name: 'gcr.io/cloud-builders/docker'
entrypoint: bash
args:
- -ceux
- |
/workspace/test/tag_for_hosted.sh $PROJECT_ID $COMMIT_SHA $(cat /workspace/VERSION) $(cat /workspace/mm.ver)
images:
# Images for the pipeline system itself
- 'gcr.io/$PROJECT_ID/frontend:$COMMIT_SHA'
- 'gcr.io/$PROJECT_ID/api-server:$COMMIT_SHA'
- 'gcr.io/$PROJECT_ID/scheduledworkflow:$COMMIT_SHA'
- 'gcr.io/$PROJECT_ID/persistenceagent:$COMMIT_SHA'
- 'gcr.io/$PROJECT_ID/viewer-crd-controller:$COMMIT_SHA'
- 'gcr.io/$PROJECT_ID/inverse-proxy-agent:$COMMIT_SHA'
- 'gcr.io/$PROJECT_ID/visualization-server:$COMMIT_SHA'
- 'gcr.io/$PROJECT_ID/metadata-writer:$COMMIT_SHA'
- 'gcr.io/$PROJECT_ID/cache-server:$COMMIT_SHA'
- 'gcr.io/$PROJECT_ID/cache-deployer:$COMMIT_SHA'
# Images for Marketplace
- 'gcr.io/$PROJECT_ID/deployer:$COMMIT_SHA'
# Images for the Kubeflow-based pipeline components
- 'gcr.io/$PROJECT_ID/ml-pipeline-kubeflow-deployer:$COMMIT_SHA'
- 'gcr.io/$PROJECT_ID/ml-pipeline-kubeflow-tf-trainer:$COMMIT_SHA'
- 'gcr.io/$PROJECT_ID/ml-pipeline-kubeflow-tf-trainer-gpu:$COMMIT_SHA'
- 'gcr.io/$PROJECT_ID/ml-pipeline-kubeflow-tfjob:$COMMIT_SHA'
# Images for the local components
- 'gcr.io/$PROJECT_ID/ml-pipeline-local-confusion-matrix:$COMMIT_SHA'
- 'gcr.io/$PROJECT_ID/ml-pipeline-local-roc:$COMMIT_SHA'
# Images for the third_party components
- 'gcr.io/$PROJECT_ID/metadata-envoy:$COMMIT_SHA'
timeout: '3600s'
options:
diskSizeGb: 300
machineType: 'N1_HIGHCPU_8'
tags:
- build-each-commit

View File

@ -3,4 +3,14 @@ bower_components
dist
**/node_modules
backend/build
backend/Dockerfile
backend/Dockerfile.cacheserver
backend/Dockerfile.conformance
backend/Dockerfile.driver
backend/Dockerfile.launcher
backend/Dockerfile.persistenceagent
backend/Dockerfile.scheduledworkflow
backend/Dockerfile.viewercontroller
backend/Dockerfile.visualization
frontend/Dockerfile
v2/build

25
.github/ISSUE_TEMPLATE/CHORE.md vendored Normal file
View File

@ -0,0 +1,25 @@
---
name: 🧹 Chore
about: Create a Chore on Kubeflow Pipelines
title: "chore(<component>): <Chore Name>"
---
## Chore description
<!-- Describe the chore details and why it's needed. -->
### Labels
<!-- Please include labels below by uncommenting them to help us better triage issues -->
<!-- /area frontend -->
<!-- /area backend -->
<!-- /area sdk -->
<!-- /area testing -->
<!-- /area samples -->
<!-- /area components -->
---
<!-- Don't delete the message below to encourage users to support your issue! -->
Love this idea? Give it a 👍.

7
.github/OWNERS vendored Normal file
View File

@ -0,0 +1,7 @@
approvers:
- hbelmiro
- DharmitD
- mprahl
reviewers:
- rimolive
- droctothorpe

60
.github/actions/kfp-cluster/action.yml vendored Normal file
View File

@ -0,0 +1,60 @@
name: "Set up KFP on KinD"
description: "Step to start and configure KFP on KinD"
inputs:
k8s_version:
description: "The Kubernetes version to use for the Kind cluster"
required: true
pipeline_store:
description: "Flag to deploy KFP with K8s Native API"
default: 'database'
required: false
proxy:
description: "If KFP should be deployed with proxy configuration"
required: false
default: false
cache_enabled:
description: "If KFP should be deployed with cache enabled globally"
required: false
default: 'true'
runs:
using: "composite"
steps:
- name: Create k8s Kind Cluster
uses: container-tools/kind-action@v2
with:
cluster_name: kfp
kubectl_version: ${{ inputs.k8s_version }}
version: v0.25.0
node_image: kindest/node:${{ inputs.k8s_version }}
- name: Deploy Squid
id: deploy-squid
if: ${{ inputs.proxy == 'true' }}
shell: bash
run: ./.github/resources/squid/deploy-squid.sh
- name: Build images
shell: bash
run: |
if [ "${{ inputs.proxy }}" = "true" ]; then
./.github/resources/scripts/build-images.sh --proxy
else
./.github/resources/scripts/build-images.sh
fi
- name: Deploy KFP
shell: bash
run: |
ARGS=""
if [ "${{ inputs.proxy }}" = "true" ]; then
ARGS="${ARGS} --proxy"
elif [ "${{inputs.cache_enabled }}" = "false" ]; then
ARGS="${ARGS} --cache-disabled"
elif [ "${{inputs.pipeline_store }}" = "kubernetes" ]; then
ARGS="${ARGS} --deploy-k8s-native"
fi
./.github/resources/scripts/deploy-kfp.sh $ARGS

53
.github/actions/kfp-k8s/action.yml vendored Normal file
View File

@ -0,0 +1,53 @@
name: "Install kfp & kfp-kubernetes"
inputs:
build_version:
required: true
default: "1.2.2"
description: "build package version"
generate_golang_proto:
required: true
default: "false"
description: "optionally generate golang proto files"
runs:
using: "composite"
steps:
- name: Install build tool
shell: bash
run: pip install build==${{inputs.build_version}}
- name: Build kfp dist
id: install-kfp
shell: bash
working-directory: sdk/python
run: |
python -m build .
- name: Generate kfp-kubernetes python proto files from source
id: generate-kfp-kubernetes-proto-files
shell: bash
if: ${{ steps.install-kfp.outcome == 'success' }}
working-directory: ./kubernetes_platform
run: make clean python USE_FIND_LINKS=true
- name: Generate kfp-kubernetes golang proto files from source
id: generate-kfp-kubernetes-go-proto-files
shell: bash
if: ${{ steps.install-kfp.outcome == 'success' && inputs.generate_golang_proto == 'true' }}
working-directory: ./kubernetes_platform
run: make golang
# kfp is installed transitively
# --find-links ensures pip first looks in the sdk/python/dist folder
# outputted from generate-kfp-kubernetes-proto-files step before looking at pypi
- name: Install kfp & kfp-kubernetes from source
id: install-kfp-kubernetes
shell: bash
if: ${{ steps.generate-kfp-kubernetes-proto-files.outcome == 'success' }}
run: |
pip install -e ./kubernetes_platform/python[dev] --find-links=sdk/python/dist
- name: Install test requirements
id: install-requirements
shell: bash
if: ${{ steps.install-kfp-kubernetes.outcome == 'success' }}
run: pip install -r ./test/kfp-kubernetes-execution-tests/requirements.txt

81
.github/actions/protobuf/action.yml vendored Normal file
View File

@ -0,0 +1,81 @@
name: "Install Proto dependencies & Pipeline Spec"
description: |
This action pins various Proto generation packages to default versions and
installs these dependencies in the workflow environment. It will also
install the kfp-pipeline-spec. Whenever KFP project updates generation
packages, the defaults here must be updated.
inputs:
protoc_version:
required: true
default: "31.1"
description: "protoc version"
protobuf_python_version:
required: true
default: "6.31.1"
description: "protobuf python package version"
setuptools_version:
required: true
default: "80.9.0"
description: "setuptools python package version"
wheels_version:
required: true
default: "0.42.0"
description: "wheels python package version"
generate_golang_proto:
required: true
default: "false"
description: "optionally generate golang proto files"
runs:
using: "composite"
steps:
- name: Install protoc
shell: bash
run: |
PROTOC_ZIP=protoc-${{inputs.protoc_version}}-linux-x86_64.zip
curl -sSL -O https://github.com/protocolbuffers/protobuf/releases/download/v${{inputs.protoc_version}}/$PROTOC_ZIP
sudo unzip -o $PROTOC_ZIP -d /usr/local bin/protoc
sudo unzip -o $PROTOC_ZIP -d /usr/local 'include/*'
rm $PROTOC_ZIP
protoc --version
- name: Install setuptools
shell: bash
run: |
pip3 install setuptools==${{inputs.setuptools_version}}
pip3 freeze
- name: Install Wheel
shell: bash
run: pip3 install wheel==${{inputs.wheels_version}}
- name: Install protobuf
shell: bash
run: pip3 install protobuf==${{inputs.protobuf_python_version}}
- name: Generate API proto files
working-directory: ./api
shell: bash
run: make clean python
- name: Install kfp-pipeline-spec from source
shell: bash
run: |
pip install api/v2alpha1/python/dist/*.whl
- name: Generate kfp-pipeline-spec golang files
if: ${{ inputs.generate_golang_proto == 'true' }}
working-directory: ./api
shell: bash
run: |
make golang
- name: Summary
shell: bash
run: |
cat <<EOF
Installed the following dependencies:
Binaries:
protoc: ${{ inputs.protoc_version }}
Python Packages:
setuptools: ${{ inputs.setuptools_version }}
wheels: ${{ inputs.wheels_version }}
protobuf: ${{ inputs.protobuf_python_version }}
EOF

View File

@ -2,6 +2,7 @@
**Checklist:**
- [ ] You have [signed off your commits](https://www.kubeflow.org/docs/about/contributing/#sign-off-your-commits)
- [ ] The title for your pull request (PR) should follow our title convention. [Learn more about the pull request title convention used in this repository](https://github.com/kubeflow/pipelines/blob/master/CONTRIBUTING.md#pull-request-title-convention).
<!--
PR titles examples:

View File

@ -0,0 +1,12 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: ml-pipeline
spec:
template:
spec:
containers:
- name: ml-pipeline-api-server
env:
- name: CACHEENABLED
value: "false"

View File

@ -0,0 +1,11 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../no-proxy
patches:
- path: cache-env.yaml
target:
kind: Deployment
name: ml-pipeline

View File

@ -0,0 +1,14 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: ml-pipeline
spec:
template:
spec:
containers:
- name: ml-pipeline-api-server
env:
- name: V2_DRIVER_IMAGE
value: kind-registry:5000/driver
- name: V2_LAUNCHER_IMAGE
value: kind-registry:5000/launcher

View File

@ -0,0 +1,19 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../../../../../manifests/kustomize/env/cert-manager/platform-agnostic-k8s-native
images:
- name: ghcr.io/kubeflow/kfp-api-server
newName: kind-registry:5000/apiserver
newTag: latest
- name: ghcr.io/kubeflow/kfp-persistence-agent
newName: kind-registry:5000/persistenceagent
newTag: latest
- name: ghcr.io/kubeflow/kfp-scheduled-workflow-controller
newName: kind-registry:5000/scheduledworkflow
newTag: latest
patchesStrategicMerge:
- apiserver-env.yaml

View File

@ -0,0 +1,16 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: ml-pipeline
spec:
template:
spec:
containers:
- name: ml-pipeline-api-server
env:
- name: V2_DRIVER_IMAGE
value: kind-registry:5000/driver
- name: V2_LAUNCHER_IMAGE
value: kind-registry:5000/launcher
- name: LOG_LEVEL
value: "debug"

View File

@ -0,0 +1,20 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../../../../../manifests/kustomize/env/platform-agnostic
images:
- name: ghcr.io/kubeflow/kfp-api-server
newName: kind-registry:5000/apiserver
newTag: latest
- name: ghcr.io/kubeflow/kfp-persistence-agent
newName: kind-registry:5000/persistenceagent
newTag: latest
- name: ghcr.io/kubeflow/kfp-scheduled-workflow-controller
newName: kind-registry:5000/scheduledworkflow
newTag: latest
patches:
- path: apiserver-env.yaml
- path: workflow-disable-logs-patch.yaml

View File

@ -0,0 +1,20 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: workflow-controller-configmap
data:
artifactRepository: |
archiveLogs: false
s3:
endpoint: "minio-service.$(kfp-namespace):9000"
bucket: "$(kfp-artifact-bucket-name)"
keyFormat: "artifacts/{{workflow.name}}/{{workflow.creationTimestamp.Y}}/{{workflow.creationTimestamp.m}}/{{workflow.creationTimestamp.d}}/{{pod.name}}"
insecure: true
accessKeySecret:
name: mlpipeline-minio-artifact
key: accesskey
secretKeySecret:
name: mlpipeline-minio-artifact
key: secretkey
executor: |
imagePullPolicy: IfNotPresent

View File

@ -0,0 +1,11 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../no-proxy
patches:
- path: proxy-env.yaml
target:
kind: Deployment
name: ml-pipeline

View File

@ -0,0 +1,16 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: ml-pipeline
spec:
template:
spec:
containers:
- name: ml-pipeline-api-server
env:
- name: HTTP_PROXY
value: "http://squid.squid.svc.cluster.local:3128"
- name: HTTPS_PROXY
value: "http://squid.squid.svc.cluster.local:3128"
- name: NO_PROXY
value: "localhost,127.0.0.1,.svc.cluster.local,kubernetes.default.svc,metadata-grpc-service,0,1,2,3,4,5,6,7,8,9"

64
.github/resources/scripts/build-images.sh vendored Executable file
View File

@ -0,0 +1,64 @@
#!/bin/bash
#
# Copyright 2023 kubeflow.org
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# source: https://raw.githubusercontent.com/open-toolchain/commons/master/scripts/check_registry.sh
# Remove the x if you need no print out of each command
set -e
REGISTRY="${REGISTRY:-kind-registry:5000}"
echo "REGISTRY=$REGISTRY"
TAG="${TAG:-latest}"
EXIT_CODE=0
docker system prune -a -f
docker build --progress=plain -t "${REGISTRY}/apiserver:${TAG}" -f backend/Dockerfile . && docker push "${REGISTRY}/apiserver:${TAG}" || EXIT_CODE=$?
if [[ $EXIT_CODE -ne 0 ]]
then
echo "Failed to build apiserver image."
exit $EXIT_CODE
fi
docker build --progress=plain -t "${REGISTRY}/persistenceagent:${TAG}" -f backend/Dockerfile.persistenceagent . && docker push "${REGISTRY}/persistenceagent:${TAG}" || EXIT_CODE=$?
if [[ $EXIT_CODE -ne 0 ]]
then
echo "Failed to build persistenceagent image."
exit $EXIT_CODE
fi
docker build --progress=plain -t "${REGISTRY}/scheduledworkflow:${TAG}" -f backend/Dockerfile.scheduledworkflow . && docker push "${REGISTRY}/scheduledworkflow:${TAG}" || EXIT_CODE=$?
if [[ $EXIT_CODE -ne 0 ]]
then
echo "Failed to build scheduledworkflow image."
exit $EXIT_CODE
fi
docker build --progress=plain -t "${REGISTRY}/driver:${TAG}" -f backend/Dockerfile.driver . && docker push "${REGISTRY}/driver:${TAG}" || EXIT_CODE=$?
if [[ $EXIT_CODE -ne 0 ]]
then
echo "Failed to build driver image."
exit $EXIT_CODE
fi
docker build --progress=plain -t "${REGISTRY}/launcher:${TAG}" -f backend/Dockerfile.launcher . && docker push "${REGISTRY}/launcher:${TAG}" || EXIT_CODE=$?
if [[ $EXIT_CODE -ne 0 ]]
then
echo "Failed to build launcher image."
exit $EXIT_CODE
fi
# clean up intermittent build caches to free up disk space
docker system prune -a -f

65
.github/resources/scripts/collect-logs.sh vendored Executable file
View File

@ -0,0 +1,65 @@
#!/usr/bin/env bash
set -e
NS=""
OUTPUT_FILE="/tmp/tmp.log/tmp_pod_log.txt"
while [[ "$#" -gt 0 ]]; do
case $1 in
--ns) NS="$2"; shift ;;
--output) OUTPUT_FILE="$2"; shift ;;
*) echo "Unknown parameter passed: $1"; exit 1 ;;
esac
shift
done
mkdir -p /tmp/tmp.log
if [[ -z "$NS" ]]; then
echo "Both --ns parameters are required."
exit 1
fi
function check_namespace {
if ! kubectl get namespace "$1" &>/dev/null; then
echo "Namespace '$1' does not exist."
exit 1
fi
}
function display_pod_info {
local NAMESPACE=$1
kubectl get pods -n "${NAMESPACE}"
local POD_NAMES
POD_NAMES=$(kubectl get pods -n "${NAMESPACE}" -o custom-columns=":metadata.name" --no-headers)
if [[ -z "${POD_NAMES}" ]]; then
echo "No pods found in namespace '${NAMESPACE}'." | tee -a "$OUTPUT_FILE"
return
fi
echo "Pod Information for Namespace: ${NAMESPACE}" > "$OUTPUT_FILE"
for POD_NAME in ${POD_NAMES}; do
{
echo "===== Pod: ${POD_NAME} in ${NAMESPACE} ====="
echo "----- EVENTS -----"
kubectl describe pod "${POD_NAME}" -n "${NAMESPACE}" | grep -A 100 Events || echo "No events found for pod ${POD_NAME}."
echo "----- LOGS -----"
kubectl logs "${POD_NAME}" -n "${NAMESPACE}" || echo "No logs found for pod ${POD_NAME}."
echo "==========================="
echo ""
} | tee -a "$OUTPUT_FILE"
done
echo "Pod information stored in $OUTPUT_FILE"
}
check_namespace "$NS"
display_pod_info "$NS"

106
.github/resources/scripts/deploy-kfp.sh vendored Executable file
View File

@ -0,0 +1,106 @@
#!/bin/bash
#
# Copyright 2023 kubeflow.org
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Remove the x if you need no print out of each command
set -e
REGISTRY="${REGISTRY:-kind-registry:5000}"
EXIT_CODE=0
C_DIR="${BASH_SOURCE%/*}"
if [[ ! -d "$C_DIR" ]]; then C_DIR="$PWD"; fi
source "${C_DIR}/helper-functions.sh"
TEST_MANIFESTS=".github/resources/manifests/argo"
PIPELINES_STORE="database"
USE_PROXY=false
CACHE_DISABLED=false
# Loop over script arguments passed. This uses a single switch-case
# block with default value in case we want to make alternative deployments
# in the future.
while [ "$#" -gt 0 ]; do
case "$1" in
--deploy-k8s-native)
PIPELINES_STORE="kubernetes"
shift
;;
--proxy)
USE_PROXY=true
shift
;;
--cache-disabled)
CACHE_DISABLED=true
shift
;;
esac
done
if [ "${USE_PROXY}" == "true" && "${PIPELINES_STORE}" == "kubernetes" ]; then
echo "ERROR: Kubernetes Pipeline store cannot be deployed with proxy support."
exit 1
fi
kubectl apply -k "manifests/kustomize/cluster-scoped-resources/"
kubectl wait crd/applications.app.k8s.io --for condition=established --timeout=60s || EXIT_CODE=$?
if [[ $EXIT_CODE -ne 0 ]]
then
echo "Failed to deploy cluster-scoped resources."
exit $EXIT_CODE
fi
# If pipelines store is set to 'kubernetes', cert-manager must be deployed
if [ "${PIPELINES_STORE}" == "kubernetes" ]; then
#Install cert-manager
make -C ./backend install-cert-manager || EXIT_CODE=$?
if [[ $EXIT_CODE -ne 0 ]]
then
echo "Failed to deploy cert-manager."
exit $EXIT_CODE
fi
fi
# Manifests will be deployed according to the flag provided
if $CACHE_DISABLED; then
TEST_MANIFESTS="${TEST_MANIFESTS}/overlays/cache-disabled"
elif $USE_PROXY; then
TEST_MANIFESTS="${TEST_MANIFESTS}/overlays/proxy"
elif [ "${PIPELINES_STORE}" == "kubernetes" ]; then
TEST_MANIFESTS="${TEST_MANIFESTS}/overlays/kubernetes-native"
else
TEST_MANIFESTS="${TEST_MANIFESTS}/overlays/no-proxy"
fi
echo "Deploying ${TEST_MANIFESTS}..."
kubectl apply -k "${TEST_MANIFESTS}" || EXIT_CODE=$?
if [[ $EXIT_CODE -ne 0 ]]
then
echo "Deploy unsuccessful. Failure applying ${TEST_MANIFESTS}."
exit 1
fi
# Check if all pods are running - (10 minutes)
wait_for_pods || EXIT_CODE=$?
if [[ $EXIT_CODE -ne 0 ]]
then
echo "Deploy unsuccessful. Not all pods running."
exit 1
fi
collect_artifacts kubeflow
echo "Finished KFP deployment."

View File

@ -24,6 +24,7 @@ LOCAL_PORT=$3
REMOTE_PORT=$4
POD_NAME=$(kubectl get pods -n "$KUBEFLOW_NS" -l "app=$APP_NAME" -o jsonpath='{.items[0].metadata.name}')
echo "POD_NAME=$POD_NAME"
if [ $QUIET -eq 1 ]; then
kubectl port-forward -n "$KUBEFLOW_NS" "$POD_NAME" "$LOCAL_PORT:$REMOTE_PORT" > /dev/null 2>&1 &

View File

@ -56,57 +56,9 @@ wait_for_namespace () {
}
wait_for_pods () {
if [[ $# -ne 3 ]]
then
echo "Usage: wait_for_pods namespace max_retries sleep_time"
return 1
fi
local namespace=$1
local max_retries=$2
local sleep_time=$3
local i=0
while [[ $i -lt $max_retries ]]
do
local pods
local statuses
local num_pods
local num_running
pods=$(kubectl get pod -n "$namespace")
# echo "$pods"
# kubectl get pvc -n "$namespace"
if [[ -z $pods ]]
then
echo "no pod is up yet"
else
# Using quotations around variables to keep column format in echo
# Remove 1st line (header line) -> trim whitespace -> cut statuses column (3rd column)
# Might be overkill to parse down to specific columns :).
statuses=$(echo "$pods" | tail -n +2 | tr -s ' ' | cut -d ' ' -f 3)
num_pods=$(echo "$statuses" | wc -l | xargs)
num_running=$(echo "$statuses" | grep -ow "Running\|Completed" | wc -l | xargs)
local msg="${num_running}/${num_pods} pods running in \"${namespace}\"."
if [[ $num_running -ne $num_pods ]]
then
# for debugging
# kubectl get pod -n "$namespace" | grep '0/1' | awk '{print $1}' | xargs kubectl describe pod -n "$namespace"
echo "$msg Checking again in ${sleep_time}s."
else
echo "$msg"
return 0
fi
fi
sleep "$sleep_time"
i=$((i+1))
done
return 1
C_DIR="${BASH_SOURCE%/*}"
pip install -r "${C_DIR}"/kfp-readiness/requirements.txt
python "${C_DIR}"/kfp-readiness/wait_for_pods.py
}
deploy_with_retries () {

View File

@ -0,0 +1,2 @@
kubernetes==30.1.0
urllib3==2.5.0

View File

@ -0,0 +1,117 @@
import logging
import time
import urllib3
from kubernetes import client, config
import subprocess
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
namespace = 'kubeflow'
config.load_kube_config()
v1 = client.CoreV1Api()
def log_pods():
pods = v1.list_namespaced_pod(namespace=namespace)
for pod in pods.items:
try:
logging.info(
f"---- Pod {namespace}/{pod.metadata.name} logs ----\n"
+ v1.read_namespaced_pod_log(pod.metadata.name, namespace)
)
except client.exceptions.ApiException:
continue
def get_pod_statuses():
pods = v1.list_namespaced_pod(namespace=namespace)
statuses = {}
for pod in pods.items:
pod_name = pod.metadata.name
pod_status = pod.status.phase
container_statuses = pod.status.container_statuses or []
ready = 0
total = 0
waiting_messages = []
for status in container_statuses:
total += 1
if status.ready:
ready += 1
if status.state.waiting is not None:
if status.state.waiting.message is not None:
waiting_messages.append(f'Waiting on Container: {status.name} - {status.state.waiting.reason}: {status.state.waiting.message}')
else:
waiting_messages.append(f'Waiting on Container: {status.name} - {status.state.waiting.reason}')
statuses[pod_name] = (pod_status, ready, total, waiting_messages)
return statuses
def all_pods_ready(statuses):
return all(pod_status == 'Running' and ready == total
for pod_status, ready, total, _ in statuses.values())
def print_get_pods():
try:
result = subprocess.run(
['kubectl', 'get', 'pods', '-n', 'kubeflow'],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True,
check=True
)
return result.stdout
except subprocess.CalledProcessError as e:
print(f"An error occurred while running kubectl get pods: {e.stderr}")
def check_pods(calm_time=10, timeout=600, retries_after_ready=5):
start_time = time.time()
stable_count = 0
previous_statuses = {}
while time.time() - start_time < timeout:
current_statuses = get_pod_statuses()
logging.info("Checking pod statuses...")
for pod_name, (pod_status, ready, total, waiting_messages) in current_statuses.items():
logging.info(f"Pod {pod_name} - Status: {pod_status}, Ready: {ready}/{total}")
for waiting_msg in waiting_messages:
logging.info(waiting_msg)
if current_statuses == previous_statuses:
if all_pods_ready(current_statuses):
stable_count += 1
if stable_count >= retries_after_ready:
logging.info("All pods are calm and fully ready.")
break
else:
logging.info(
f"Pods are calm but have only been stable for {stable_count}/{retries_after_ready} retries.")
else:
stable_count = 0
else:
stable_count = 0
previous_statuses = current_statuses
pods = print_get_pods()
logging.info(f"Pods are still stabilizing. Retrying in {calm_time} seconds...\n{pods}")
time.sleep(calm_time)
else:
log_pods()
raise Exception("Pods did not stabilize within the timeout period.")
logging.info("Final pod statuses:")
for pod_name, (pod_status, ready, total, _) in previous_statuses.items():
if pod_status == 'Running' and ready == total:
logging.info(f"Pod {pod_name} is fully ready ({ready}/{total})")
else:
logging.info(f"Pod {pod_name} is not ready (Status: {pod_status}, Ready: {ready}/{total})")
if __name__ == "__main__":
check_pods()

10
.github/resources/squid/Containerfile vendored Normal file
View File

@ -0,0 +1,10 @@
FROM quay.io/fedora/fedora:41
RUN dnf install -y squid && \
dnf clean all
COPY squid.conf /etc/squid/squid.conf
EXPOSE 3128
CMD ["squid", "-N", "-d", "1"]

16
.github/resources/squid/deploy-squid.sh vendored Executable file
View File

@ -0,0 +1,16 @@
#!/bin/bash
set -e
C_DIR="${BASH_SOURCE%/*}"
NAMESPACE="squid"
docker build --progress=plain -t "registry.domain.local/squid:test" -f ${C_DIR}/Containerfile ${C_DIR}
kind --name kfp load docker-image registry.domain.local/squid:test
kubectl apply -k ${C_DIR}/manifests
if ! kubectl -n ${NAMESPACE} wait --for=condition=available deployment/squid --timeout=60s; then
echo "Timeout occurred while waiting for the Squid deployment."
exit 1
fi

View File

@ -0,0 +1,30 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: squid
namespace: squid
spec:
replicas: 1
selector:
matchLabels:
app: squid
template:
metadata:
labels:
app: squid
spec:
containers:
- name: squid
image: registry.domain.local/squid:test
ports:
- containerPort: 3128
volumeMounts:
- name: squid-cache
mountPath: /var/cache/squid
- name: squid-log
mountPath: /var/log/squid
volumes:
- name: squid-cache
emptyDir: { }
- name: squid-log
emptyDir: { }

View File

@ -0,0 +1,4 @@
resources:
- deployment.yaml
- service.yaml
- namespace.yaml

View File

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: squid

View File

@ -0,0 +1,12 @@
apiVersion: v1
kind: Service
metadata:
name: squid
namespace: squid
spec:
selector:
app: squid
ports:
- protocol: TCP
port: 3128
targetPort: 3128

8
.github/resources/squid/squid.conf vendored Normal file
View File

@ -0,0 +1,8 @@
# Define an access control list (ACL) for all source IP addresses
acl all src all
# Allow HTTP access from all sources
http_access allow all
# Define the port Squid will listen on
http_port 3128

View File

@ -0,0 +1,84 @@
# This workflow adds the 'ci-passed' label to a pull request once the 'CI Check' workflow completes successfully.
# Resets the 'ci-passed' label status when a pull request is synchronized or reopened,
# indicating that changes have been pushed and CI needs to rerun.
name: Add CI Passed Label
on:
workflow_run:
workflows: ["CI Check"]
types:
- completed
permissions:
pull-requests: write
checks: read
actions: read
jobs:
fetch_data:
name: Fetch workflow payload
runs-on: ubuntu-latest
if: >
github.event.workflow_run.event == 'pull_request' &&
github.event.workflow_run.conclusion == 'success'
outputs:
pr_number: ${{ steps.extract.outputs.pr_number }}
event_action: ${{ steps.extract.outputs.event_action }}
steps:
- name: 'Download artifact'
uses: actions/github-script@v3.1.0
with:
script: |
var artifacts = await github.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: ${{github.event.workflow_run.id}},
});
var matchArtifact = artifacts.data.artifacts.filter((artifact) => {
return artifact.name == "pr"
})[0];
var download = await github.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: matchArtifact.id,
archive_format: 'zip',
});
var fs = require('fs');
fs.writeFileSync('${{github.workspace}}/pr.zip', Buffer.from(download.data));
- name: Unzip artifact
run: unzip pr.zip
- name: Extract PR information
id: extract
run: |
pr_number=$(cat ./pr_number)
event_action=$(cat ./event_action)
echo "pr_number=${pr_number}" >> $GITHUB_OUTPUT
echo "event_action=${event_action}" >> $GITHUB_OUTPUT
reset_ci_passed_label:
name: Reset 'ci-passed' label on PR Synchronization
runs-on: ubuntu-latest
needs: fetch_data
steps:
- name: Check and reset label
run: |
if [[ "${{ needs.fetch_data.outputs.event_action }}" == "synchronize" || "${{ needs.fetch_data.outputs.event_action }}" == "reopened" ]]; then
echo "Resetting 'ci-passed' label as changes were pushed (event: ${{ needs.fetch_data.outputs.event_action }})."
gh pr edit ${{ needs.fetch_data.outputs.pr_number }} --remove-label "ci-passed" --repo $GITHUB_REPOSITORY || echo "Label not present"
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
add_ci_passed_label:
name: Add 'ci-passed' label
runs-on: ubuntu-latest
needs: [fetch_data, reset_ci_passed_label]
steps:
- name: Add 'ci-passed' label
run: |
echo "Adding 'ci-passed' label to PR #${{ needs.fetch_data.outputs.pr_number }}"
gh pr edit ${{ needs.fetch_data.outputs.pr_number }} --add-label "ci-passed" --repo $GITHUB_REPOSITORY
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@ -0,0 +1,28 @@
name: KFP backend visualization tests
on:
push:
branches: [ master ]
pull_request:
paths:
- '.github/workflows/backend-visualization.yml'
- 'backend/src/apiserver/visualization/**'
- 'test/presubmit-backend-visualization.sh'
- '!**/*.md'
- '!**/OWNERS'
jobs:
backend-visualization-test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
- name: Run tests
run: ./test/presubmit-backend-visualization.sh

View File

@ -1,81 +0,0 @@
name: KFP Tekton backend unit tests
on:
push:
branches: [master]
# Run tests for any PRs which change the backend code
pull_request:
paths:
- 'go.mod'
- 'backend/**'
- 'scripts/deploy/github/**'
- 'manifests/kustomize/**'
env:
GITHUB_ACTION: "true"
SETUPTOOLS_USE_DISTUTILS: "stdlib"
jobs:
run-go-unittests:
runs-on: ubuntu-latest
steps:
- name: Install Go
uses: actions/setup-go@v4
with:
go-version: 1.20.x
- name: Checkout code
uses: actions/checkout@v4
- name: "run go unit tests"
run: go test -v -cover ./backend/...
backend-integration:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Create k8s Kind Cluster
uses: container-tools/kind-action@v2
with:
cluster_name: kfp-tekton
kubectl_version: v1.29.2
version: v0.22.0
node_image: kindest/node:v1.29.2
- name: build images
run: ./scripts/deploy/github/build-images.sh
- name: Set up Python 3.10
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: "deploy kfp-tekton"
run: ./scripts/deploy/github/deploy-kfp.sh
- name: Install sdk
run: |
python3 -m venv .venv
. .venv/bin/activate
pip install -e sdk/python
- name: "flip coin test"
run: |
. .venv/bin/activate
TEST_SCRIPT="test-flip-coin.sh" ./scripts/deploy/github/e2e-test.sh
- name: "static loop test"
run: |
. .venv/bin/activate
TEST_SCRIPT="test-static-loop.sh" ./scripts/deploy/github/e2e-test.sh
- name: "dynamic loop test"
run: |
. .venv/bin/activate
TEST_SCRIPT="test-dynamic-loop.sh" ./scripts/deploy/github/e2e-test.sh
- name: "use env"
run: |
. .venv/bin/activate
TEST_SCRIPT="test-env.sh" ./scripts/deploy/github/e2e-test.sh
- name: "use volume"
run: |
. .venv/bin/activate
TEST_SCRIPT="test-volume.sh" ./scripts/deploy/github/e2e-test.sh
- name: Collect test results
if: always()
uses: actions/upload-artifact@v4
with:
name: kfp-tekton-backend-artifacts
path: /tmp/tmp.*/*

52
.github/workflows/ci-checks.yml vendored Normal file
View File

@ -0,0 +1,52 @@
# This workflow checks if all CI checks have passed by polling every 5 minutes for a total of 8 attempts.
name: CI Check
on:
pull_request_target:
types: [opened, synchronize, reopened, labeled]
jobs:
check_ci_status:
runs-on: ubuntu-latest
permissions:
checks: read
pull-requests: write
steps:
- name: Check out the repository
uses: actions/checkout@v3
- name: Check for 'needs-ok-to-test' and 'ok-to-test' labels
id: label_check
run: |
LABELS=$(gh pr view ${{ github.event.pull_request.number }} --json labels --jq '.labels[].name')
if echo "$LABELS" | grep -q 'needs-ok-to-test'; then
echo "Label 'needs-ok-to-test' found. Skipping the workflow."
exit 0
fi
if echo "$LABELS" | grep -q 'ok-to-test'; then
echo "Label 'ok-to-test' found. Continuing the workflow."
else
echo "Label 'ok-to-test' not found. Skipping the workflow."
exit 0
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Check if all CI checks passed
uses: wechuli/allcheckspassed@0b68b3b7d92e595bcbdea0c860d05605720cf479
with:
delay: '5'
retries: '8'
polling_interval: '5'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Save PR payload
shell: bash
run: |
mkdir -p ./pr
echo ${{ github.event.pull_request.number }} >> ./pr/pr_number
echo ${{ github.event.action }} >> ./pr/event_action
- uses: actions/upload-artifact@v4
with:
name: pr
path: pr/

View File

@ -1,81 +0,0 @@
name: KFP e2e tests
on:
push:
branches: [master]
pull_request:
paths:
- '.github/workflows/e2e-test.yaml'
- 'scripts/deploy/github/**'
- 'go.mod'
- 'go.sum'
- 'backend/**'
- 'frontend/**'
- 'proxy/**'
- 'manifests/kustomize/**'
- 'test/**'
jobs:
integration-test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Create k8s Kind Cluster
uses: container-tools/kind-action@v2
with:
cluster_name: kfp
kubectl_version: v1.29.2
version: v0.22.0
node_image: kindest/node:v1.29.2
- name: Build images
run: ./scripts/deploy/github/build-images.sh
- name: Deploy KFP
run: ./scripts/deploy/github/deploy-kfp.sh
- name: Forward API port
run: ./scripts/deploy/github/forward-port.sh "kubeflow" "ml-pipeline" 8888 8888
- name: Initialization tests v1
working-directory: ./backend/test/initialization
run: go test -v ./... -namespace kubeflow -args -runIntegrationTests=true
- name: Initialization tests v2
working-directory: ./backend/test/v2/initialization
run: go test -v ./... -namespace kubeflow -args -runIntegrationTests=true
- name: API integration tests v1
working-directory: ./backend/test/integration
run: go test -v ./... -namespace ${NAMESPACE} -args -runIntegrationTests=true
- name: API integration tests v2
working-directory: ./backend/test/v2/integration
run: go test -v ./... -namespace ${NAMESPACE} -args -runIntegrationTests=true
- name: Forward Frontend port
run: ./scripts/deploy/github/forward-port.sh "kubeflow" "ml-pipeline-ui" 3000 3000
- name: Build frontend integration tests image
working-directory: ./test/frontend-integration-test
run: docker build . -t kfp-frontend-integration-test:local
- name: Frontend integration tests
run: docker run --net=host kfp-frontend-integration-test:local --remote-run true
- name: Basic sample tests - sequential
run: pip3 install -r ./test/sample-test/requirements.txt && pip3 install kfp~=2.0 && python3 ./test/sample-test/sample_test_launcher.py sample_test run_test --namespace kubeflow --test-name sequential --results-gcs-dir output
# Disabled while https://github.com/kubeflow/pipelines/issues/10885 is not resolved
# - name: Basic sample tests - exit_handler
# run: pip3 install -r ./test/sample-test/requirements.txt && pip3 install kfp~=2.0 && python3 ./test/sample-test/sample_test_launcher.py sample_test run_test --namespace kubeflow --test-name exit_handler --results-gcs-dir output
- name: Collect test results
if: always()
uses: actions/upload-artifact@v4
with:
name: kfp-backend-artifacts
path: /tmp/tmp.*/*

474
.github/workflows/e2e-test.yml vendored Normal file
View File

@ -0,0 +1,474 @@
name: KFP e2e tests
on:
push:
branches: [master]
pull_request:
paths:
- '.github/workflows/e2e-test.yml'
- '.github/resources/**'
- 'api/**'
- 'go.mod'
- 'go.sum'
- 'backend/**'
- 'frontend/**'
- 'proxy/**'
- 'manifests/kustomize/**'
- 'test/**'
- '!**/*.md'
- '!**/OWNERS'
jobs:
initialization-tests-v1:
runs-on: ubuntu-latest
strategy:
matrix:
k8s_version: [ "v1.29.2", "v1.31.0" ]
name: Initialization tests v1 - K8s ${{ matrix.k8s_version }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Create KFP cluster
id: create-kfp-cluster
uses: ./.github/actions/kfp-cluster
with:
k8s_version: ${{ matrix.k8s_version }}
continue-on-error: true
- name: Forward API port
id: forward-api-port
if: ${{ steps.create-kfp-cluster.outcome == 'success' }}
run: ./.github/resources/scripts/forward-port.sh "kubeflow" "ml-pipeline" 8888 8888
continue-on-error: true
- name: Initialization tests v1
id: tests
if: ${{ steps.forward-api-port.outcome == 'success' }}
working-directory: ./backend/test/initialization
run: go test -v ./... -namespace kubeflow -args -runIntegrationTests=true
env:
PULL_NUMBER: ${{ github.event.pull_request.number }}
continue-on-error: true
- name: Collect failed logs
if: ${{ steps.create-kfp-cluster.outcome != 'success' || steps.forward-api-port.outcome != 'success' || steps.tests.outcome != 'success' }}
run: |
./.github/resources/scripts/collect-logs.sh --ns kubeflow --output /tmp/tmp_pod_log.txt
exit 1
- name: Collect test results
if: always()
uses: actions/upload-artifact@v4
with:
name: kfp-initialization-tests-v1-artifacts-k8s-${{ matrix.k8s_version }}
path: /tmp/tmp*/*
initialization-tests-v2:
runs-on: ubuntu-latest
strategy:
matrix:
k8s_version: [ "v1.29.2", "v1.31.0" ]
name: Initialization tests v2 - K8s ${{ matrix.k8s_version }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Create KFP cluster
id: create-kfp-cluster
uses: ./.github/actions/kfp-cluster
with:
k8s_version: ${{ matrix.k8s_version }}
continue-on-error: true
- name: Forward API port
id: forward-api-port
if: ${{ steps.create-kfp-cluster.outcome == 'success' }}
run: ./.github/resources/scripts/forward-port.sh "kubeflow" "ml-pipeline" 8888 8888
continue-on-error: true
- name: Initialization tests v2
id: tests
if: ${{ steps.forward-api-port.outcome == 'success' }}
working-directory: ./backend/test/v2/initialization
run: go test -v ./... -namespace kubeflow -args -runIntegrationTests=true
env:
PULL_NUMBER: ${{ github.event.pull_request.number }}
continue-on-error: true
- name: Collect failed logs
if: ${{ steps.create-kfp-cluster.outcome != 'success' || steps.forward-api-port.outcome != 'success' || steps.tests.outcome != 'success' }}
run: |
./.github/resources/scripts/collect-logs.sh --ns kubeflow --output /tmp/tmp_pod_log.txt
exit 1
- name: Collect test results
if: always()
uses: actions/upload-artifact@v4
with:
name: kfp-initialization-tests-v2-artifacts-k8s-${{ matrix.k8s_version }}
path: /tmp/tmp*/*
api-integration-tests-v1:
runs-on: ubuntu-latest
strategy:
matrix:
k8s_version: [ "v1.29.2", "v1.31.0" ]
name: API integration tests v1 - K8s ${{ matrix.k8s_version }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Create KFP cluster
id: create-kfp-cluster
uses: ./.github/actions/kfp-cluster
with:
k8s_version: ${{ matrix.k8s_version }}
continue-on-error: true
- name: Forward API port
id: forward-api-port
if: ${{ steps.create-kfp-cluster.outcome == 'success' }}
run: ./.github/resources/scripts/forward-port.sh "kubeflow" "ml-pipeline" 8888 8888
continue-on-error: true
- name: Forward MySQL port
id: forward-mysql-port
if: ${{ steps.forward-api-port.outcome == 'success' }}
run: ./.github/resources/scripts/forward-port.sh "kubeflow" "mysql" 3306 3306
continue-on-error: true
- name: API integration tests v1
id: tests
if: ${{ steps.forward-mysql-port.outcome == 'success' }}
working-directory: ./backend/test/integration
run: go test -v ./... -namespace kubeflow -args -runIntegrationTests=true
env:
PULL_NUMBER: ${{ github.event.pull_request.number }}
continue-on-error: true
- name: Collect failed logs
if: ${{ steps.create-kfp-cluster.outcome != 'success' || steps.forward-api-port.outcome != 'success' || steps.forward-mysql-port.outcome != 'success' || steps.tests.outcome != 'success' }}
run: |
./.github/resources/scripts/collect-logs.sh --ns kubeflow --output /tmp/tmp_pod_log.txt
exit 1
- name: Collect test results
if: always()
uses: actions/upload-artifact@v4
with:
name: kfp-api-integration-tests-v1-artifacts-k8s-${{ matrix.k8s_version }}
path: /tmp/tmp*/*
api-integration-tests-v2:
runs-on: ubuntu-latest
strategy:
matrix:
pipeline_store: [ "database", "kubernetes" ]
k8s_version: [ "v1.29.2", "v1.31.0" ]
name: API integration tests v2 - K8s with ${{ matrix.pipeline_store }} ${{ matrix.k8s_version }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Create KFP cluster
id: create-kfp-cluster
uses: ./.github/actions/kfp-cluster
with:
k8s_version: ${{ matrix.k8s_version }}
pipeline_store: ${{ matrix.pipeline_store }}
continue-on-error: true
- name: Forward API port
id: forward-api-port
if: ${{ steps.create-kfp-cluster.outcome == 'success' }}
run: ./.github/resources/scripts/forward-port.sh "kubeflow" "ml-pipeline" 8888 8888
continue-on-error: true
- name: Forward MLMD port
id: forward-mlmd-port
if: ${{ steps.forward-api-port.outcome == 'success' }}
run: kubectl -n kubeflow port-forward svc/metadata-grpc-service 8080:8080 &
continue-on-error: true
- name: API integration tests v2
id: tests
if: ${{ steps.forward-api-port.outcome == 'success' }}
working-directory: ./backend/test/v2/integration
run: go test -v ./... -namespace kubeflow -args -runIntegrationTests=true
env:
PULL_NUMBER: ${{ github.event.pull_request.number }}
PIPELINE_STORE: ${{ matrix.pipeline_store }}
continue-on-error: true
- name: Collect failed logs
if: ${{ steps.create-kfp-cluster.outcome != 'success' || steps.forward-api-port.outcome != 'success' || steps.forward-mlmd-port.outcome != 'success' || steps.tests.outcome != 'success' }}
run: |
./.github/resources/scripts/collect-logs.sh --ns kubeflow --output /tmp/tmp_pod_log.txt
exit 1
- name: Collect test results
if: always()
uses: actions/upload-artifact@v4
with:
name: kfp-api-integration-tests-v2-artifacts-k8s-${{ matrix.k8s_version }}-${{ matrix.pipeline_store }}
path: /tmp/tmp*/*
api-integration-tests-v2-with-proxy:
runs-on: ubuntu-latest
strategy:
matrix:
k8s_version: [ "v1.31.0" ]
name: API integration tests v2 with proxy - K8s ${{ matrix.k8s_version }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Create KFP cluster
id: create-kfp-cluster
uses: ./.github/actions/kfp-cluster
with:
k8s_version: ${{ matrix.k8s_version }}
proxy: 'true'
continue-on-error: true
- name: Forward API port
id: forward-api-port
if: ${{ steps.create-kfp-cluster.outcome == 'success' }}
run: ./.github/resources/scripts/forward-port.sh "kubeflow" "ml-pipeline" 8888 8888
continue-on-error: true
- name: Forward MLMD port
id: forward-mlmd-port
if: ${{ steps.forward-api-port.outcome == 'success' }}
run: kubectl -n kubeflow port-forward svc/metadata-grpc-service 8080:8080 &
continue-on-error: true
- name: API integration tests v2
id: tests
if: ${{ steps.forward-mlmd-port.outcome == 'success' }}
working-directory: ./backend/test/v2/integration
run: go test -v ./... -namespace kubeflow -args -runIntegrationTests=true -useProxy=true
env:
PULL_NUMBER: ${{ github.event.pull_request.number }}
continue-on-error: true
- name: Collect failed logs
if: ${{ steps.create-kfp-cluster.outcome != 'success' || steps.forward-api-port.outcome != 'success' || steps.tests.outcome != 'success' }}
run: |
./.github/resources/scripts/collect-logs.sh --ns squid --output /tmp/tmp_squid_pod_log.txt
./.github/resources/scripts/collect-logs.sh --ns kubeflow --output /tmp/tmp_pod_log.txt
exit 1
- name: Collect test results
if: always()
uses: actions/upload-artifact@v4
with:
name: kfp-api-integration-tests-v2-with-proxy-artifacts-k8s-${{ matrix.k8s_version }}
path: /tmp/tmp*/*
api-integration-tests-v2-with-cache-disabled:
runs-on: ubuntu-latest
strategy:
matrix:
k8s_version: [ "v1.31.0" ]
name: API integration tests v2 with cache disabled - K8s ${{ matrix.k8s_version }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Create KFP cluster
id: create-kfp-cluster
uses: ./.github/actions/kfp-cluster
with:
k8s_version: ${{ matrix.k8s_version }}
cache_enabled: 'false'
continue-on-error: true
- name: Forward API port
id: forward-api-port
if: ${{ steps.create-kfp-cluster.outcome == 'success' }}
run: ./.github/resources/scripts/forward-port.sh "kubeflow" "ml-pipeline" 8888 8888
continue-on-error: true
- name: Forward MLMD port
id: forward-mlmd-port
if: ${{ steps.forward-api-port.outcome == 'success' }}
run: kubectl -n kubeflow port-forward svc/metadata-grpc-service 8080:8080 &
continue-on-error: true
- name: API integration tests v2
id: tests
if: ${{ steps.forward-mlmd-port.outcome == 'success' }}
working-directory: ./backend/test/v2/integration
run: go test -v ./... -namespace kubeflow -args -runIntegrationTests=true -cacheEnabled=false
env:
PULL_NUMBER: ${{ github.event.pull_request.number }}
continue-on-error: true
- name: Collect failed logs
if: ${{ steps.create-kfp-cluster.outcome != 'success' || steps.forward-api-port.outcome != 'success' || steps.tests.outcome != 'success' }}
run: |
./.github/resources/scripts/collect-logs.sh --ns kubeflow --output /tmp/tmp_pod_log.txt
exit 1
- name: Collect test results
if: always()
uses: actions/upload-artifact@v4
with:
name: kfp-api-integration-tests-v2-with-cache-disabled-artifacts-k8s-${{ matrix.k8s_version }}
path: /tmp/tmp*/*
frontend-integration-test:
runs-on: ubuntu-latest
strategy:
matrix:
k8s_version: [ "v1.29.2", "v1.31.0" ]
name: Frontend Integration Tests - K8s ${{ matrix.k8s_version }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Create KFP cluster
id: create-kfp-cluster
uses: ./.github/actions/kfp-cluster
with:
k8s_version: ${{ matrix.k8s_version }}
continue-on-error: true
- name: Forward API port
id: forward-api-port
if: ${{ steps.create-kfp-cluster.outcome == 'success' }}
run: ./.github/resources/scripts/forward-port.sh "kubeflow" "ml-pipeline" 8888 8888
continue-on-error: true
- name: Forward Frontend port
id: forward-frontend-port
if: ${{ steps.forward-api-port.outcome == 'success' }}
run: ./.github/resources/scripts/forward-port.sh "kubeflow" "ml-pipeline-ui" 3000 3000
continue-on-error: true
- name: Build frontend integration tests image
working-directory: ./test/frontend-integration-test
run: docker build . -t kfp-frontend-integration-test:local
- name: Frontend integration tests
id: tests
if: ${{ steps.forward-frontend-port.outcome == 'success' }}
run: docker run --net=host kfp-frontend-integration-test:local --remote-run true
continue-on-error: true
- name: Collect failed logs
if: ${{ steps.create-kfp-cluster.outcome != 'success' || steps.forward-api-port.outcome != 'success' || steps.forward-frontend-port.outcome != 'success' || steps.tests.outcome != 'success' }}
run: |
./.github/resources/scripts/collect-logs.sh --ns kubeflow --output /tmp/tmp_pod_log.txt
exit 1
- name: Collect test results
if: always()
uses: actions/upload-artifact@v4
with:
name: kfp-frontend-integration-test-artifacts-k8s-${{ matrix.k8s_version }}
path: /tmp/tmp*/*
basic-sample-tests:
runs-on: ubuntu-latest
strategy:
matrix:
k8s_version: [ "v1.29.2", "v1.31.0" ]
name: Basic Sample Tests - K8s ${{ matrix.k8s_version }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Create KFP cluster
id: create-kfp-cluster
uses: ./.github/actions/kfp-cluster
with:
k8s_version: ${{ matrix.k8s_version }}
continue-on-error: true
- name: Forward API port
id: forward-api-port
if: ${{ steps.create-kfp-cluster.outcome == 'success' }}
run: ./.github/resources/scripts/forward-port.sh "kubeflow" "ml-pipeline" 8888 8888
continue-on-error: true
- name: Install protobuf dependencies & kfp-pipeline-spec
if: ${{ steps.forward-api-port.outcome == 'success' }}
id: install-protobuf-deps
uses: ./.github/actions/protobuf
- name: Install kfp & kfp-kubernetes from source
if: ${{ steps.install-protobuf-deps.outcome == 'success' }}
id: install-kfp-k8s-deps
uses: ./.github/actions/kfp-k8s
- name: Install prerequisites
if: ${{ steps.create-kfp-cluster.outcome == 'success' }}
run: pip3 install -r ./test/sample-test/requirements.txt
- name: Basic sample tests - sequential
if: ${{ steps.create-kfp-cluster.outcome == 'success' }}
id: sequential-test
run: python3 ./test/sample-test/sample_test_launcher.py sample_test run_test --namespace kubeflow --test-name sequential --results-gcs-dir output
- name: Basic sample tests - exit_handler
if: ${{ steps.create-kfp-cluster.outcome == 'success' }}
id: sample-test
run: python3 ./test/sample-test/sample_test_launcher.py sample_test run_test --namespace kubeflow --test-name exit_handler --expected-result failed --results-gcs-dir output
continue-on-error: true
- name: Collect failed logs
if: ${{ steps.create-kfp-cluster.outcome != 'success' || steps.forward-api-port.outcome != 'success' || steps.sequential-test.outcome != 'success' || steps.sample-test.outcome != 'success'}}
run: |
./.github/resources/scripts/collect-logs.sh --ns kubeflow --output /tmp/tmp_pod_log.txt
exit 1
- name: Collect test results
if: always()
uses: actions/upload-artifact@v4
with:
name: kfp-e2e-tests-artifacts-k8s-${{ matrix.k8s_version }}
path: /tmp/tmp*/*

38
.github/workflows/frontend.yml vendored Normal file
View File

@ -0,0 +1,38 @@
name: Frontend Tests
on:
push:
branches:
- master
pull_request:
branches:
- master
paths:
- 'frontend/**'
- '.github/workflows/frontend.yml'
- '!**/*.md'
- '!**/OWNERS'
- 'backend/src/apiserver/config/sample_config.json'
jobs:
frontend-tests:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
- name: Clean npm cache
run: npm cache clean --force
- name: Install dependencies
run: cd ./frontend && npm ci
- name: Run Frontend Tests
run: cd ./frontend && npm run test:ci

View File

@ -0,0 +1,55 @@
name: GCPC modules test
on:
push:
branches: [master]
pull_request:
paths:
- '.github/workflows/gcpc-modules-tests.yml'
- 'sdk/python/**'
- '!**/*.md'
- '!**/OWNERS'
jobs:
all-gcpc-tests:
runs-on: ubuntu-24.04
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Install protobuf-compiler
run: sudo apt update && sudo apt install -y protobuf-compiler
- name: Install setuptools
run: |
pip3 install setuptools
pip3 freeze
- name: Install Wheel
run: pip3 install wheel==0.42.0
- name: Install python sdk
run: pip install sdk/python
- name: Install google-cloud component
run: pip install components/google-cloud
- name: Generate API proto files
working-directory: ./api
run: make clean python
- name: Install kfp-pipeline-spec from source
run: |
python3 -m pip install -I api/v2alpha1/python
- name: Install Pytest
run: pip install $(grep 'pytest==' sdk/python/requirements-dev.txt)
- name: Run test
run: pytest ./test/gcpc-tests/run_all_gcpc_modules.py

16
.github/workflows/image-builds-main.yml vendored Normal file
View File

@ -0,0 +1,16 @@
name: Build images from sources and push to master.
run-name: Build images for master
on:
push:
branches:
- master
jobs:
image-builds:
uses: ./.github/workflows/image-builds.yml
with:
src_branch: master
target_tag: master
fail_fast: true
overwrite_imgs: true
set_latest: false
add_sha_tag: 'false'

198
.github/workflows/image-builds.yml vendored Normal file
View File

@ -0,0 +1,198 @@
name: Build images from sources.
run-name: Build images
on:
workflow_call:
inputs:
src_branch:
type: string
default: 'release-X.Y'
description: 'Source branch to build KFP from'
required: true
target_tag:
type: string
default: 'X.Y.Z'
description: 'Target Image Tag'
required: true
fail_fast:
type: string
default: 'true'
description: 'Stop running entire Workflow if a single build fails'
required: true
overwrite_imgs:
type: string
default: 'true'
description: 'Overwrite images in GHCR if they already exist for this tag.'
required: true
set_latest:
type: string
default: 'true'
description: 'Set latest tag on build images.'
required: true
add_sha_tag:
type: string
default: 'true'
description: 'Add a sha image tag.'
required: false
workflow_dispatch:
inputs:
src_branch:
type: string
default: 'release-X.Y'
description: 'Source branch to build KFP from'
required: true
target_tag:
type: string
default: 'X.Y.Z'
description: 'Target Image Tag'
required: true
fail_fast:
type: string
default: 'true'
description: 'Stop running entire Workflow if a single build fails'
required: true
overwrite_imgs:
type: string
default: 'true'
description: 'Overwrite images in GHCR if they already exist for this tag.'
required: true
set_latest:
type: string
default: 'true'
description: 'Set latest tag on build images.'
required: true
add_sha_tag:
type: string
default: 'true'
description: 'Add a sha image tag.'
required: false
env:
SOURCE_BRANCH: ${{ inputs.src_branch }}
TARGET_IMAGE_TAG: ${{ inputs.target_tag }}
OVERWRITE_IMAGES: ${{ inputs.overwrite_imgs }}
IMAGE_REGISTRY: ghcr.io
IMAGE_ORG: ${{ github.repository_owner }}
SET_LATEST: ${{ inputs.set_latest }}
ADD_SHA_TAG: ${{ inputs.add_sha_tag }}
jobs:
build-images-with-tag:
continue-on-error: false
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
attestations: write
id-token: write
strategy:
fail-fast: ${{ inputs.fail_fast == 'true' }}
matrix:
include:
- image: kfp-api-server
dockerfile: backend/Dockerfile
context: .
- image: kfp-frontend
dockerfile: frontend/Dockerfile
context: .
- image: kfp-persistence-agent
dockerfile: backend/Dockerfile.persistenceagent
context: .
- image: kfp-scheduled-workflow-controller
dockerfile: backend/Dockerfile.scheduledworkflow
context: .
- image: kfp-viewer-crd-controller
dockerfile: backend/Dockerfile.viewercontroller
context: .
- image: kfp-visualization-server
dockerfile: backend/Dockerfile.visualization
context: .
- image: kfp-launcher
dockerfile: backend/Dockerfile.launcher
context: .
- image: kfp-driver
dockerfile: backend/Dockerfile.driver
context: .
- image: kfp-cache-deployer
dockerfile: backend/src/cache/deployer/Dockerfile
context: .
- image: kfp-cache-server
dockerfile: backend/Dockerfile.cacheserver
context: .
- image: kfp-metadata-writer
dockerfile: backend/metadata_writer/Dockerfile
context: .
- image: kfp-metadata-envoy
dockerfile: third_party/metadata_envoy/Dockerfile
context: .
- image: kfp-inverse-proxy-agent
dockerfile: proxy/Dockerfile
context: ./proxy
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
ref: ${{env.SOURCE_BRANCH}}
- name: Log in to the Container registry
uses: docker/login-action@v3
with:
registry: ${{ env.IMAGE_REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Check if image tag already exists
id: check_tag
env:
IMAGE: ${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_ORG }}/${{ matrix.image }}:${{env.TARGET_IMAGE_TAG}}
OVERWRITE: ${{ env.OVERWRITE_IMAGES }}
run: |
if docker manifest inspect ${IMAGE} > /dev/null 2>&1; then
echo "Image tag already exists!"
if [ "$OVERWRITE" == "false" ]; then
echo "Overwrite is set to false, exiting."
exit 1
else
echo "Overwrite is set to true, proceeding with push."
fi
else
echo "No tag conflict, safe to push."
fi
# This step uses docker/metadata-action to extract tags and labels
# that will be applied to the specified image. The id "meta" allows
# the output of this step to be referenced in a subsequent step.
# The images value provides the base name for the tags and labels.
- name: Extract metadata (tags, labels) for Build
id: meta
uses: docker/metadata-action@v5
if: steps.check_tag.outcome == 'success'
with:
images: ${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_ORG }}/${{ matrix.image }}
tags: |
type=raw,value=${{env.TARGET_IMAGE_TAG}}
type=raw,value=latest,enable=${{ env.SET_LATEST == 'true'}}
type=sha,enable=${{ env.ADD_SHA_TAG == 'true' }}
# Build the image. If the build succeeds, it pushes the image to GitHub
# Packages. It uses the context parameter to define the build's context
# as the set of files located in the specified path.
- name: Build and push Image
id: push
uses: docker/build-push-action@v6
if: steps.check_tag.outcome == 'success'
with:
context: ${{ matrix.context }}
file: ${{ matrix.dockerfile }}
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
# This step generates an artifact attestation for the image,
# which is an unforgeable statement about where and how it was built.
# It increases supply chain security for people who consume the
# image.
# Ref: https://docs.github.com/en/actions/security-for-github-actions/using-artifact-attestations/using-artifact-attestations-to-establish-provenance-for-builds
- name: Generate artifact attestation
uses: actions/attest-build-provenance@v1
if: steps.check_tag.outcome == 'success'
with:
subject-name: ${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_ORG }}/${{ matrix.image }}
subject-digest: ${{ steps.push.outputs.digest }}

View File

@ -0,0 +1,97 @@
name: k8s execution tests
on:
push:
branches: [master]
pull_request:
paths:
- '.github/workflows/kfp-kubernetes-execution-tests.yml'
- '.github/resources/**'
- 'sdk/python/**'
- 'api/v2alpha1/**'
- 'kubernetes_platform/**'
- 'backend/**'
- '!**/*.md'
- '!**/OWNERS'
jobs:
kfp-kubernetes-execution-tests:
runs-on: ubuntu-24.04
strategy:
matrix:
k8s_version: [ "v1.29.2", "v1.31.0" ]
name: kfp-kubernetes execution tests - K8s ${{ matrix.k8s_version }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
# This is intended to address disk space issues that have surfaced
# intermittently during CI -
# https://github.com/actions/runner-images/issues/2840#issuecomment-1284059930
- name: Free up space in /dev/root
run: |
echo "Disk usage before clean up:"
df -h
sudo rm -rf /usr/share/dotnet
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
echo "Disk usage after clean up:"
df -h
- name: Create KFP cluster
id: create-kfp-cluster
uses: ./.github/actions/kfp-cluster
with:
k8s_version: ${{ matrix.k8s_version }}
continue-on-error: true
- name: Forward API port
if: ${{ steps.create-kfp-cluster.outcome == 'success' }}
id: forward-api-port
run: ./.github/resources/scripts/forward-port.sh "kubeflow" "ml-pipeline" 8888 8888
continue-on-error: true
- name: Install protobuf dependencies & kfp-pipeline-spec
if: ${{ steps.forward-api-port.outcome == 'success' }}
id: install-protobuf-deps
uses: ./.github/actions/protobuf
- name: Install kfp & kfp-kubernetes from source
if: ${{ steps.install-protobuf-deps.outcome == 'success' }}
id: install-kfp-k8s-deps
uses: ./.github/actions/kfp-k8s
- name: Install requirements
id: install-requirements
if: ${{ steps.install-kfp-kubernetes.outcome == 'success' }}
run: pip install -r ./test/kfp-kubernetes-execution-tests/requirements.txt
- name: Run tests
id: test
if: ${{ steps.install-kfp-k8s-deps.outcome == 'success' }}
env:
PULL_NUMBER: ${{ github.event.pull_request.number }}
REPO_NAME: ${{ github.repository }}
run: |
export KFP_ENDPOINT="http://localhost:8888"
export TIMEOUT_SECONDS=2700
pytest ./test/kfp-kubernetes-execution-tests/sdk_execution_tests.py --asyncio-task-timeout $TIMEOUT_SECONDS
continue-on-error: true
- name: Collect failed logs
if: ${{ steps.create-kfp-cluster.outcome != 'success' || steps.forward-api-port.outcome != 'success' || steps.test.outcome != 'success'}}
run: |
./.github/resources/scripts/collect-logs.sh --ns kubeflow --output /tmp/tmp_pod_log.txt
exit 1
- name: Collect test results
if: always()
uses: actions/upload-artifact@v4
with:
name: kfp-execution-tests-artifacts-k8s-${{ matrix.k8s_version }}
path: /tmp/tmp*/*

View File

@ -0,0 +1,42 @@
name: kfp-kubernetes library tests
on:
push:
branches: [master]
pull_request:
paths:
- '.github/workflows/kfp-kubernetes-library-test.yml'
- 'sdk/python/**'
- 'api/v2alpha1/**'
- 'kubernetes_platform/**'
- '!**/*.md'
- '!**/OWNERS'
jobs:
kfp-kubernetes-library-test:
runs-on: ubuntu-24.04
strategy:
matrix:
python: [
{ 'version': '3.9' },
{ 'version': '3.13' }
]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: ${{matrix.python.version}}
- name: Install protobuf dependencies & kfp-pipeline-spec
id: install-protobuf-deps
uses: ./.github/actions/protobuf
- name: Install kfp & kfp-kubernetes from source
id: install-kfp-k8s-deps
uses: ./.github/actions/kfp-k8s
- name: Run tests
run: pytest ./kubernetes_platform/python/test

105
.github/workflows/kfp-samples.yml vendored Normal file
View File

@ -0,0 +1,105 @@
name: KFP Samples
on:
push:
branches: [master]
pull_request:
paths:
- '.github/resources/**'
- '.github/workflows/kfp-samples.yml'
- '.github/workflows/kubeflow-pipelines-integration-v2.yml'
- 'api/**'
- 'backend/**'
- 'samples/**'
- 'samples/core/dataflow/**'
- 'samples/core/parameterized_tfx_oss/**'
- '!**/*.md'
- '!**/OWNERS'
jobs:
samples:
runs-on: ubuntu-latest
strategy:
matrix:
k8s_version: [ "v1.29.2", "v1.31.0" ]
name: KFP Samples - K8s ${{ matrix.k8s_version }}
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Free up space in /dev/root
run: |
echo "Disk usage before clean up:"
df -h
sudo rm -rf /usr/share/dotnet
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf /usr/local/share/boost
sudo rm -rf /usr/local/lib/android
sudo rm -rf /usr/local/.ghcup
sudo rm -rf /usr/share/swift
sudo rm -rf /opt/hostedtoolcache/CodeQL || true
sudo rm -rf /opt/hostedtoolcache/Java_* || true
sudo rm -rf /opt/hostedtoolcache/Ruby || true
sudo rm -rf /opt/hostedtoolcache/PyPy || true
sudo rm -rf /opt/hostedtoolcache/boost || true
docker system prune -af --volumes
docker image prune -af
echo "Disk usage after clean up:"
df -h
- name: Create KFP cluster
id: create-kfp-cluster
uses: ./.github/actions/kfp-cluster
with:
k8s_version: ${{ matrix.k8s_version }}
continue-on-error: true
- name: Build and upload the sample Modelcar image to Kind
id: build-sample-modelcar-image
if: ${{ steps.create-kfp-cluster.outcome == 'success' }}
run: |
docker build -f samples/v2/modelcar/Dockerfile -t registry.domain.local/modelcar:test .
kind --name kfp load docker-image registry.domain.local/modelcar:test
continue-on-error: true
- name: Forward API port
id: forward-api-port
if: ${{ steps.build-sample-modelcar-image.outcome == 'success' }}
run: ./.github/resources/scripts/forward-port.sh "kubeflow" "ml-pipeline" 8888 8888
continue-on-error: true
- name: Install protobuf dependencies & kfp-pipeline-spec
id: install-protobuf-deps
uses: ./.github/actions/protobuf
- name: Install kfp & kfp-kubernetes from source
id: install-kfp-k8s-deps
uses: ./.github/actions/kfp-k8s
- name: Run Samples Tests
id: tests
if: ${{ steps.forward-api-port.outcome == 'success' }}
run: |
python3 -u ./samples/v2/sample_test.py
continue-on-error: true
- name: Collect failed logs
if: ${{ steps.create-kfp-cluster.outcome != 'success' || steps.forward-api-port.outcome != 'success' || steps.tests.outcome != 'success' }}
run: |
./.github/resources/scripts/collect-logs.sh --ns kubeflow --output /tmp/tmp_pod_log.txt
exit 1
- name: Collect test results
if: always()
uses: actions/upload-artifact@v4
with:
name: kfp-samples-tests-artifacts-k8s-${{ matrix.k8s_version }}
path: /tmp/tmp*/*

View File

@ -0,0 +1,34 @@
name: KFP Runtime Code Tests
on:
push:
branches: [master]
pull_request:
paths:
- '.github/workflows/kfp-sdk-runtime-tests.yml'
- 'sdk/python/**'
- 'test/presubmit-test-kfp-runtime-code.sh'
- '!**/*.md'
- '!**/OWNERS'
jobs:
kfp-runtime-tests:
runs-on: ubuntu-24.04
strategy:
matrix:
python: ['3.9', '3.13']
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}
- name: Run KFP Runtime Code Tests
run: |
export PULL_NUMBER="${{ github.event.inputs.pull_number || github.event.pull_request.number }}"
export REPO_NAME="${{ github.repository }}"
./test/presubmit-test-kfp-runtime-code.sh

49
.github/workflows/kfp-sdk-tests.yml vendored Normal file
View File

@ -0,0 +1,49 @@
name: KFP SDK Tests
on:
push:
branches: [master]
pull_request:
paths:
- 'api/**'
- 'sdk/**'
- 'test/presubmit-tests-sdk.sh'
- '.github/workflows/kfp-sdk-tests.yml'
- '!**/*.md'
- '!**/OWNERS'
jobs:
sdk-tests:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.9', '3.13']
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install protobuf dependencies & kfp-pipeline-spec
id: install-protobuf-deps
uses: ./.github/actions/protobuf
- name: Install kfp & kfp-kubernetes from source
id: install-kfp-k8s-deps
uses: ./.github/actions/kfp-k8s
- name: Install Test dependencies
run: |
pip install coveralls==3.3.1
pip install -r sdk/python/requirements-dev.txt
- name: Run SDK Tests
env:
# We setup the env in the CI
SETUP_ENV: false
run: |
./test/presubmit-tests-sdk.sh

53
.github/workflows/kfp-webhooks.yml vendored Normal file
View File

@ -0,0 +1,53 @@
name: KFP Webhook Integration
on:
push:
branches:
- master
pull_request:
paths:
- '.github/resources/**'
- '.github/workflows/kfp-webhooks.yml'
- 'backend/**'
- '!**/*.md'
- '!**/OWNERS'
jobs:
webhook-tests:
runs-on: ubuntu-latest
strategy:
matrix:
k8s_version: [ "v1.29.2", "v1.31.0" ]
name: KFP Webhooks - K8s ${{ matrix.k8s_version }}
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Create KFP cluster
id: create-kfp-cluster
uses: ./.github/actions/kfp-cluster
with:
k8s_version: ${{ matrix.k8s_version }}
pipeline_store: kubernetes
continue-on-error: true
- name: Run Webhook Integration Tests
id: tests
if: ${{ steps.create-kfp-cluster.outcome == 'success' }}
run: |
make -C backend/test/integration test-webhook
continue-on-error: true
- name: Collect failed logs
if: ${{ steps.create-kfp-cluster.outcome != 'success' || steps.tests.outcome != 'success' }}
run: |
./.github/resources/scripts/collect-logs.sh --ns kubeflow --output /tmp/tmp_pod_log.txt
exit 1
- name: Collect test results
if: always()
uses: actions/upload-artifact@v4
with:
name: kfp-samples-tests-artifacts-k8s-${{ matrix.k8s_version }}
path: /tmp/tmp*/*

View File

@ -0,0 +1,21 @@
name: KFP Manifests
on:
push:
branches: [master]
pull_request:
paths:
- '.github/workflows/kubeflow-pipelines-manifests.yml'
- 'manifests/kustomize/**'
- '!**/*.md'
- '!**/OWNERS'
jobs:
kubeflow-pipelines-manifests:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Run tests
run: ./manifests/kustomize/hack/presubmit.sh

View File

@ -7,23 +7,42 @@ on:
jobs:
run_tests:
runs-on: ubuntu-latest
strategy:
matrix:
k8s_version: [ "v1.29.2", "v1.31.0" ]
name: Periodic Functional Tests - K8s ${{ matrix.k8s_version }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Create k8s Kind Cluster
uses: container-tools/kind-action@v2
- name: Set up Python
uses: actions/setup-python@v4
with:
cluster_name: kfp-tekton
kubectl_version: v1.29.2
version: v0.22.0
node_image: kindest/node:v1.29.2
python-version: 3.9
- name: Create KFP cluster
uses: ./.github/actions/kfp-cluster
with:
k8s_version: ${{ matrix.k8s_version }}
- name: Port forward kfp apiserver
run: |
nohup kubectl port-forward --namespace kubeflow svc/ml-pipeline 8888:8888 &
- name: Run Functional Tests
id: tests
run: |
log_dir=$(mktemp -d)
./test/kfp-functional-test/kfp-functional-test.sh > $log_dir/periodic_tests.txt
continue-on-error: true
- name: Collect failed logs
if: steps.tests.outcome != 'success'
run: |
./.github/resources/scripts/collect-logs.sh --ns kubeflow --output /tmp/tmp_pod_log.txt
exit 1
- name: Collect test results
if: always()
uses: actions/upload-artifact@v4
with:
name: periodic-functional-artifacts
path: /tmp/tmp.*/*
name: periodic-functional-artifacts-k8s-${{ matrix.k8s_version }}
path: /tmp/tmp*/*

101
.github/workflows/pr-commands.yml vendored Normal file
View File

@ -0,0 +1,101 @@
name: PR Commands
on:
issue_comment:
types:
- created
env:
DEFAULT_BRANCH: master
jobs:
process-command:
runs-on: ubuntu-latest
# Fail early if the command is not recognized
if: contains(github.event.comment.body, '/ok-to-test')
outputs:
PR_SHA: ${{ steps.fetch-pr-sha.outputs.PR_SHA }}
steps:
- name: Checkout Main Branch
uses: actions/checkout@v3
with:
ref: ${{ env.DEFAULT_BRANCH }}
- name: Check if the author is a member or Owner
id: check-condition
run: |
if [[ "${{ github.event.comment.author_association }}" == "MEMBER" || "${{ github.event.comment.author_association }}" == "OWNER" ]]; then
echo "condition_met=true" >> $GITHUB_ENV
else
echo "User does not have permission to trigger this command."
echo "condition_met=false" >> $GITHUB_ENV
fi
- name: Leave a Comment on Precondition Fail
if: env.condition_met == 'false'
env:
message: 🚫 This command cannot be processed. Only organization members or owners can use the commands.
run: |
echo "${{ secrets.GITHUB_TOKEN }}" | gh auth login --with-token
gh issue comment ${{ github.event.issue.number }} --repo "${{ github.repository }}" --body "${{ env.message }}"
echo ${message}
exit 1
- name: Check if comment is on a pull request
id: check-pr
run: |
if [[ -z "${{ github.event.issue.pull_request }}" ]]; then
echo "Comment is not on a pull request."
exit 1
fi
echo "PR_URL=${{ github.event.issue.pull_request.url }}" >> $GITHUB_ENV
- name: Fetch pull request sha
id: fetch-pr-sha
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
PR_URL="${PR_URL}"
PR_DATA=$(curl -s -H "Authorization: Bearer $GITHUB_TOKEN" -H "Accept: application/vnd.github.v3+json" "$PR_URL")
PR_SHA=$(echo "$PR_DATA" | jq -r '.head.sha')
echo "PR_SHA=$PR_SHA" >> $GITHUB_OUTPUT
# Add other commands as separate jobs
approve:
runs-on: ubuntu-latest
needs: process-command
if: contains(github.event.comment.body, '/ok-to-test')
steps:
- name: Checkout Main Branch
uses: actions/checkout@v3
with:
ref: ${{ env.DEFAULT_BRANCH }}
- name: Approve Runs
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_SHA: ${{ needs.process-command.outputs.PR_SHA }}
run: |
runs=$(curl -s -H "Authorization: Bearer $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/repos/${{ github.repository }}/actions/runs?head_sha=${{ env.PR_SHA }}" | \
jq -r '.workflow_runs[] | select(.conclusion == "action_required") | .id')
if [[ -z "$runs" ]]; then
echo "No workflow runs found for the given head SHA."
exit 1
fi
echo "Found workflow runs requiring approval: $runs"
# Approve each workflow run
for run_id in $runs; do
curl -X POST -H "Authorization: Bearer $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/repos/${{ github.repository }}/actions/runs/$run_id/approve"
echo "Approved workflow run: $run_id"
done
msg="Approvals successfully granted for pending runs."
echo "output_msg=${msg}" >> $GITHUB_ENV
- name: Leave a Comment
env:
message: ${{ env.output_msg }}
run: |
echo "${{ secrets.GITHUB_TOKEN }}" | gh auth login --with-token
gh issue comment ${{ github.event.issue.number }} --repo "${{ github.repository }}" --body "${{ env.message }}"

30
.github/workflows/pre-commit.yml vendored Normal file
View File

@ -0,0 +1,30 @@
name: pre-commit
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
pre-commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v3
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
- name: golangci-lint
uses: golangci/golangci-lint-action@v8
with:
version: v2.3
args: --new-from-rev HEAD
#- uses: pre-commit/action@v3.0.1
# # This is set to only run the golangci-lint pre-commit hooks
# # Remove in a later PR to run all hooks
# with:
# go-version: '>=1.24.2'
# extra_args: golangci-lint --all-files

View File

@ -10,6 +10,8 @@ on:
paths:
- 'backend/**'
- 'test/presubmit-backend-test.sh'
- '!**/*.md'
- '!**/OWNERS'
jobs:
backend-tests:
@ -20,9 +22,12 @@ jobs:
uses: actions/checkout@v2
- name: Set up Go
uses: actions/setup-go@v3
uses: actions/setup-go@v5
with:
go-version: '1.21'
go-version-file: go.mod
- name: Run Backend Tests
run: ./test/presubmit-backend-test.sh
run: |
export GIT_BRANCH=${{ github.head_ref || github.ref_name }}
export GIT_REPO=${{ github.event.pull_request.head.repo.full_name }}
./test/presubmit-backend-test.sh

View File

@ -0,0 +1,44 @@
name: KFP Readthedocs Release Readiness
on:
push:
branches: [ master ]
pull_request:
paths:
- api/**
- sdk/**
- kubernetes_platform/**
- .github/workflows/readthedocs-builds.yml
- .readthedocs.yml
jobs:
test-readthedocs-builds:
runs-on: ubuntu-24.04
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Install Dependencies
run: |
pip install -r docs/sdk/requirements.txt
- name: Build KFP SDK Docs
working-directory: docs/sdk
run: |
sphinx-build -b html . _build/html
- name: Build KFP Kubernetes SDK Docs
working-directory: kubernetes_platform/python/docs
run: |
sphinx-build -b html . _build/html
- name: Test K8s platform release script
working-directory: kubernetes_platform/python
run: |
KFP_KUBERNETES_VERSION=$(python -c 'from kfp.kubernetes.__init__ import __version__; print(__version__)')
source create_release_branch.sh

View File

@ -0,0 +1,36 @@
name: KFP Component YAML Test
on:
push:
branches: [master]
pull_request:
paths:
- 'components/**/*.yaml'
- 'test/presubmit-component-yaml.sh'
- 'sdk/python/**'
- 'api/v2alpha1/**'
- '.github/workflows/sdk-component-yaml.yml'
- '!**/*.md'
- '!**/OWNERS'
jobs:
test-component-yaml-kfp:
runs-on: ubuntu-24.04
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Install protobuf dependencies
uses: ./.github/actions/protobuf
- name: Install requirements
run: pip install -r ./test/sdk-execution-tests/requirements.txt
- name: Run component YAML tests
run: ./test/presubmit-component-yaml.sh

28
.github/workflows/sdk-docformatter.yml vendored Normal file
View File

@ -0,0 +1,28 @@
name: KFP SDK Docformatter Test
on:
push:
branches: [master]
pull_request:
paths:
- 'sdk/python/**'
- 'test/presubmit-docformatter-sdk.sh'
- '.github/workflows/sdk-docformatter.yml'
- '!**/*.md'
- '!**/OWNERS'
jobs:
test-docformatter-kfp-sdk:
runs-on: ubuntu-24.04
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Run docformatter tests
run: ./test/presubmit-docformatter-sdk.sh

103
.github/workflows/sdk-execution.yml vendored Normal file
View File

@ -0,0 +1,103 @@
name: KFP SDK execution tests
on:
push:
branches: [master]
pull_request:
paths:
- '.github/workflows/sdk-execution.yml'
- '.github/resources/**'
- 'sdk/python/**'
- 'api/v2alpha1/**'
- 'backend/**'
- '!**/*.md'
- '!**/OWNERS'
jobs:
sdk-execution-tests:
runs-on: ubuntu-24.04
strategy:
matrix:
k8s_version: [ "v1.29.2", "v1.31.0" ]
name: KFP SDK Execution Tests - K8s ${{ matrix.k8s_version }}
steps:
- name: Checkout code
uses: actions/checkout@v4
# This is intended to address disk space issues that have surfaced
# intermittently during CI -
# https://github.com/actions/runner-images/issues/2840#issuecomment-1284059930
- name: Free up space in /dev/root
run: |
echo "Disk usage before clean up:"
df -h
sudo rm -rf /usr/share/dotnet
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
echo "Disk usage after clean up:"
df -h
# This must occur after "Free up space" step
# otherwise python version will be overridden
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Create KFP cluster
id: create-kfp-cluster
uses: ./.github/actions/kfp-cluster
with:
k8s_version: ${{ matrix.k8s_version }}
continue-on-error: true
- name: Forward API port
id: forward-api-port
if: ${{ steps.create-kfp-cluster.outcome == 'success' }}
run: ./.github/resources/scripts/forward-port.sh "kubeflow" "ml-pipeline" 8888 8888
continue-on-error: true
- name: Forward MLMD port
id: forward-mlmd-port
if: ${{ steps.create-kfp-cluster.outcome == 'success' }}
run: kubectl -n kubeflow port-forward svc/metadata-grpc-service 8080:8080 &
continue-on-error: true
- name: Forward Minio port
id: forward-minio-port
if: ${{ steps.forward-mlmd-port.outcome == 'success' }}
run: kubectl -n kubeflow port-forward service/minio-service 9000:9000 &
continue-on-error: true
- name: Install protobuf dependencies & kfp-pipeline-spec
if: ${{ steps.forward-api-port.outcome == 'success' }}
id: install-protobuf-deps
uses: ./.github/actions/protobuf
- name: Install requirements
id: install-requirements
run: pip install -r ./test/sdk-execution-tests/requirements.txt
- name: Run tests
id: tests
env:
PULL_NUMBER: ${{ github.event.pull_request.number }}
REPO_NAME: ${{ github.repository }}
run: |
export KFP_ENDPOINT="http://localhost:8888"
export TIMEOUT_SECONDS=2700
pytest -v -n 5 ./test/sdk-execution-tests/sdk_execution_tests.py
continue-on-error: true
- name: Collect failed logs
if: ${{ steps.create-kfp-cluster.outcome != 'success' || steps.forward-api-port.outcome != 'success' || steps.forward-mlmd-port.outcome != 'success' || steps.forward-minio-port.outcome != 'success' || steps.tests.outcome != 'success'}}
run: |
./.github/resources/scripts/collect-logs.sh --ns kubeflow --output /tmp/tmp_pod_log.txt
exit 1
- name: Collect test results
if: always()
uses: actions/upload-artifact@v4
with:
name: periodic-functional-artifacts-k8s-${{ matrix.k8s_version }}
path: /tmp/tmp*/*

29
.github/workflows/sdk-isort.yml vendored Normal file
View File

@ -0,0 +1,29 @@
name: KFP SDK Isort Test
on:
push:
branches: [master]
pull_request:
paths:
- 'api/**'
- 'sdk/python/**'
- 'test/presubmit-isort-sdk.sh'
- '.github/workflows/sdk-isort.yml'
- '!**/*.md'
- '!**/OWNERS'
jobs:
test-isort-kfp-sdk:
runs-on: ubuntu-24.04
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Run isort tests
run: ./test/presubmit-isort-sdk.sh

28
.github/workflows/sdk-upgrade.yml vendored Normal file
View File

@ -0,0 +1,28 @@
name: KFP SDK Upgrade Test
on:
push:
branches: [master]
pull_request:
paths:
- 'sdk/python/**'
- 'test/presubmit-test-sdk-upgrade.sh'
- '.github/workflows/sdk-upgrade.yml'
- '!**/*.md'
- '!**/OWNERS'
jobs:
test-upgrade-kfp-sdk:
runs-on: ubuntu-24.04
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Run SDK upgrade tests
run: ./test/presubmit-test-sdk-upgrade.sh

33
.github/workflows/sdk-yapf.yml vendored Normal file
View File

@ -0,0 +1,33 @@
name: KFP SDK YAPF Tests
on:
push:
branches: [master]
pull_request:
paths:
- 'api/**'
- 'sdk/python/**'
- 'test/presubmit-yapf-sdk.sh'
- '.github/workflows/sdk-yapf.yml'
- '!**/*.md'
- '!**/OWNERS'
jobs:
yapf-sdk:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
- name: Install dependencies
run: pip install yapf
- name: Run YAPF SDK Tests
run: ./test/presubmit-yapf-sdk.sh

View File

@ -21,8 +21,8 @@ jobs:
- uses: actions/stale@v5
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 60
days-before-close: 21
days-before-stale: 365
days-before-close: 183 # half a year
stale-issue-message: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you

85
.github/workflows/upgrade-test.yml vendored Normal file
View File

@ -0,0 +1,85 @@
name: KFP upgrade tests
on:
push:
branches: [master]
pull_request:
paths:
- '.github/workflows/upgrade-test.yml'
- '.github/resources/**'
- 'backend/**'
- 'manifests/kustomize/**'
- '!**/*.md'
- '!**/OWNERS'
jobs:
upgrade-test:
runs-on: ubuntu-latest
strategy:
matrix:
k8s_version: [ "v1.29.2", "v1.31.0" ]
name: KFP upgrade tests - K8s ${{ matrix.k8s_version }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Create KFP cluster
id: create-kfp-cluster
uses: ./.github/actions/kfp-cluster
with:
k8s_version: ${{ matrix.k8s_version }}
continue-on-error: true
- name: Forward API port
id: forward-api-port
if: ${{ steps.create-kfp-cluster.outcome == 'success' }}
run: ./.github/resources/scripts/forward-port.sh "kubeflow" "ml-pipeline" 8888 8888
continue-on-error: true
- name: Prepare upgrade tests
id: upgrade-tests
if: ${{ steps.forward-api-port.outcome == 'success' }}
working-directory: backend/test/integration
run: go test -v ./... -namespace kubeflow -args -runUpgradeTests=true -testify.m=Prepare
continue-on-error: true
- name: Prepare verification tests
id: verification-tests
if: ${{ steps.forward-api-port.outcome == 'success' }}
working-directory: backend/test/integration
run: go test -v ./... -namespace kubeflow -args -runUpgradeTests=true -testify.m=Verify
continue-on-error: true
- name: Prepare upgrade tests v2
id: upgrade-tests-v2
if: ${{ steps.forward-api-port.outcome == 'success' }}
working-directory: backend/test/v2/integration/
run: go test -v ./... -namespace kubeflow -args -runUpgradeTests=true -testify.m=Prepare
continue-on-error: true
- name: Prepare verification tests v2
id: verification-tests-v2
if: ${{ steps.forward-api-port.outcome == 'success' }}
working-directory: backend/test/v2/integration
run: go test -v ./... -namespace kubeflow -args -runUpgradeTests=true -testify.m=Verify
continue-on-error: true
- name: Collect failed logs
if: ${{ steps.create-kfp-cluster.outcome != 'success' || steps.forward-api-port.outcome != 'success' || steps.upgrade-tests.outcome != 'success' || steps.upgrade-tests-v2.outcome != 'success' || steps.verification-tests.outcome != 'success' || steps.verification-tests-v2.outcome != 'success' }}
run: |
./.github/resources/scripts/collect-logs.sh --ns kubeflow --output /tmp/tmp_pod_log.txt
exit 1
- name: Collect test results
if: always()
uses: actions/upload-artifact@v4
with:
name: periodic-functional-artifacts-k8s-${{ matrix.k8s_version }}
path: /tmp/tmp*/*

View File

@ -0,0 +1,99 @@
name: Validate Generated Files
on:
push:
branches:
- master
pull_request:
paths:
- '.github/workflows/validate-generated-files.yml'
- 'backend/api/**/*.proto'
- 'backend/api/**/go_http_client/**'
- 'backend/api/**/go_client/**'
- 'backend/api/**/python_http_client/**'
- 'backend/api/**/swagger/**'
- 'api/**/*.proto'
- 'api/**/*.go'
- 'kubernetes_platform/**/*.proto'
- 'kubernetes_platform/**/*.go'
- 'backend/src/crd/kubernetes/**/*.go'
- 'manifests/kustomize/base/crds/*.yaml'
- '!**/*.md'
- '!**/OWNERS'
jobs:
validate-generated-files:
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v5
with:
go-version-file: go.mod
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Install protobuf dependencies & kfp-pipeline-spec
id: install-protobuf-deps
uses: ./.github/actions/protobuf
with:
generate_golang_proto: "true"
- name: Install kfp & kfp-kubernetes from source
id: install-kfp-k8s-deps
uses: ./.github/actions/kfp-k8s
with:
generate_golang_proto: "true"
- name: Generate K8s Native API CRDs
working-directory: ./backend/src/crd/kubernetes
run: make generate manifests
- name: Generate backend proto code v2beta1
working-directory: ./backend/api
env:
API_VERSION: v2beta1
run: make generate
- name: Generate backend proto code v1beta1
working-directory: ./backend/api
env:
API_VERSION: v1beta1
run: make generate
- name: Generate backend proto code v2beta1
working-directory: ./backend/api
env:
API_VERSION: v2beta1
run: make generate-kfp-server-api-package
- name: Generate backend proto code v1beta1
working-directory: ./backend/api
env:
API_VERSION: v1beta1
run: make generate-kfp-server-api-package
- name: Check for Changes
run: make check-diff
validate-backwards-compabitiblity:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v5
with:
go-version-file: go.mod
- name: Validate Go proto code backwards compatibility
working-directory: ./backend/test/proto_tests
env:
UPDATE_EXPORTED: false
run: go test .

13
.gitignore vendored
View File

@ -12,6 +12,7 @@ bower_components/
# Build output
dist
__debug_bin*
# Web server
frontend/server/dist
@ -56,10 +57,6 @@ bazel-*
# VSCode
.vscode
# test yaml
sdk/python/tests/compiler/pipeline.yaml
sdk/python/tests/compiler/testdata/testpackage/pipeline.yaml
# Test temporary files
_artifacts
@ -88,3 +85,11 @@ __pycache__
# kfp local execution default directory
local_outputs/
# Ignore the Kind cluster kubeconfig
kubeconfig_dev-pipelines-api
# Ignore debug Driver Dockerfile produced from `make -C backend image_driver_debug`
backend/Dockerfile.driver-debug
backend/src/crd/kubernetes/bin

View File

@ -1,27 +1,34 @@
version: "2"
run:
timeout: 30m
skip-files:
- "api\\*.go$"
- "backend\\api\\*.go"
issues:
max-same-issues: 0
linters:
disable-all: true
enable: # please keep this alphabetized
default: none
enable:
- gocritic
- gosimple
- govet
- ineffassign
- misspell
- staticcheck
- stylecheck
- unused
exclusions:
paths:
- "api/*.go"
- "backend/api/*.go"
settings:
misspell:
locale: US
staticcheck:
checks:
- "all"
linters-settings: # please keep this alphabetized
misspell:
locale: US
staticcheck:
checks:
- "all"
formatters:
enable:
- gofmt
- goimports

View File

@ -15,12 +15,18 @@ repos:
- id: double-quote-string-fixer
- id: no-commit-to-branch
args: [--branch, master]
- repo: https://github.com/PyCQA/flake8
rev: 7.1.1
hooks:
- id: flake8
args:
- --select=W605
# required formatting jobs (run these last)
# add comment "noqa" to ignore an import that should not be removed
# (e.g., for an import with desired side-effects)
- repo: https://github.com/hadialqattan/pycln
rev: v2.1.1
rev: v2.5.0
hooks:
- id: pycln
name: pycln
@ -37,7 +43,7 @@ repos:
hooks:
- id: yapf
- repo: https://github.com/pycqa/docformatter
rev: v1.4
rev: v1.7.7
hooks:
- id: docformatter
name: docformatter
@ -49,7 +55,7 @@ repos:
# Golang pre-submit hooks
- repo: https://github.com/golangci/golangci-lint
rev: v1.52.2
rev: v2.1.2
hooks:
- id: golangci-lint
name: golangci-lint
@ -59,3 +65,11 @@ repos:
language: golang
require_serial: true
pass_filenames: false
- id: golangci-lint
name: golangci-lint fmt
description: Formatter for Go.
entry: golangci-lint fmt
types: [go]
language: golang
require_serial: true
pass_filenames: false

View File

@ -1,11 +1,11 @@
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
version: 2
sphinx:
configuration: docs/conf.py
configuration: docs/sdk/conf.py
python:
install:
- requirements: docs/requirements.txt
- requirements: docs/sdk/requirements.txt
build:
os: ubuntu-22.04
tools:
python: "3.8"
python: "3.9"

View File

@ -1,652 +0,0 @@
# Copyright 2018 The Kubeflow Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
steps:
# Marketplace Major.Minor parsing
- id: "parseMajorMinorVersion"
name: gcr.io/cloud-builders/docker
entrypoint: /bin/bash
args:
- -ceux
- |
# Parse major minor version and save to a file for reusing in other steps.
# e.g. 1.0.0-rc.1 and 1.0.1 are parsed as 1.0
echo $TAG_NAME | sed -e "s#\([0-9]\+[.][0-9]\+\)[.].*#\1#" > /workspace/mm.ver
# Pull and retag images for pipeline components
- id: 'retagComponentImages'
name: 'gcr.io/cloud-builders/docker'
entrypoint: bash
waitFor: ['-']
args:
- -ceux
- |
images=(
"ml-pipeline-kubeflow-deployer"
"ml-pipeline-kubeflow-tf-trainer"
"ml-pipeline-kubeflow-tf-trainer-gpu"
"ml-pipeline-kubeflow-tfjob"
"ml-pipeline-local-confusion-matrix"
"ml-pipeline-local-roc"
)
for image in "${images[@]}"
do
from_image="gcr.io/$PROJECT_ID/$image:$COMMIT_SHA"
target_image="gcr.io/ml-pipeline/$image:$TAG_NAME"
docker pull $from_image
docker tag $from_image $target_image
docker push $target_image
done
# Pull and retag the images for the pipeline system
- name: 'gcr.io/cloud-builders/docker'
args: ['pull', 'gcr.io/$PROJECT_ID/frontend:$COMMIT_SHA']
id: 'pullFrontend'
- id: 'tagFrontendForMarketplaceMajorMin'
waitFor: ['pullFrontend', 'parseMajorMinorVersion']
name: 'gcr.io/cloud-builders/docker'
entrypoint: bash
args:
- -ceux
- |
docker tag gcr.io/$PROJECT_ID/frontend:$COMMIT_SHA gcr.io/ml-pipeline/frontend:$TAG_NAME
docker tag gcr.io/$PROJECT_ID/frontend:$COMMIT_SHA gcr.io/ml-pipeline/frontend:$COMMIT_SHA
docker tag gcr.io/$PROJECT_ID/frontend:$COMMIT_SHA gcr.io/ml-pipeline/google/pipelines/frontend:$TAG_NAME
docker tag gcr.io/$PROJECT_ID/frontend:$COMMIT_SHA gcr.io/ml-pipeline/google/pipelines-test/frontend:$TAG_NAME
docker tag gcr.io/$PROJECT_ID/frontend:$COMMIT_SHA gcr.io/ml-pipeline/google/pipelines/frontend:$(cat /workspace/mm.ver)
docker tag gcr.io/$PROJECT_ID/frontend:$COMMIT_SHA gcr.io/ml-pipeline/google/pipelines-test/frontend:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/frontend:$TAG_NAME
docker push gcr.io/ml-pipeline/frontend:$COMMIT_SHA
docker push gcr.io/ml-pipeline/google/pipelines/frontend:$TAG_NAME
docker push gcr.io/ml-pipeline/google/pipelines-test/frontend:$TAG_NAME
docker push gcr.io/ml-pipeline/google/pipelines/frontend:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines-test/frontend:$(cat /workspace/mm.ver)
- name: 'gcr.io/cloud-builders/docker'
args: ['pull', 'gcr.io/$PROJECT_ID/api-server:$COMMIT_SHA']
id: 'pullAPIServer'
- id: 'tagAPIServerForMarketplaceMajorMinor'
waitFor: ['pullAPIServer', 'parseMajorMinorVersion']
name: 'gcr.io/cloud-builders/docker'
entrypoint: bash
args:
- -ceux
- |
docker tag gcr.io/$PROJECT_ID/api-server:$COMMIT_SHA 'gcr.io/ml-pipeline/api-server:$TAG_NAME'
docker tag gcr.io/$PROJECT_ID/api-server:$COMMIT_SHA 'gcr.io/ml-pipeline/api-server:$COMMIT_SHA'
docker tag gcr.io/$PROJECT_ID/api-server:$COMMIT_SHA 'gcr.io/ml-pipeline/google/pipelines/apiserver:$TAG_NAME'
docker tag gcr.io/$PROJECT_ID/api-server:$COMMIT_SHA 'gcr.io/ml-pipeline/google/pipelines-test/apiserver:$TAG_NAME'
docker tag gcr.io/$PROJECT_ID/api-server:$COMMIT_SHA gcr.io/ml-pipeline/google/pipelines/apiserver:$(cat /workspace/mm.ver)
docker tag gcr.io/$PROJECT_ID/api-server:$COMMIT_SHA gcr.io/ml-pipeline/google/pipelines-test/apiserver:$(cat /workspace/mm.ver)
docker push 'gcr.io/ml-pipeline/api-server:$TAG_NAME'
docker push 'gcr.io/ml-pipeline/api-server:$COMMIT_SHA'
docker push 'gcr.io/ml-pipeline/google/pipelines/apiserver:$TAG_NAME'
docker push 'gcr.io/ml-pipeline/google/pipelines-test/apiserver:$TAG_NAME'
docker push gcr.io/ml-pipeline/google/pipelines/apiserver:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines-test/apiserver:$(cat /workspace/mm.ver)
- name: 'gcr.io/cloud-builders/docker'
args: ['pull', 'gcr.io/$PROJECT_ID/scheduledworkflow:$COMMIT_SHA']
id: 'pullScheduledworkflow'
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/scheduledworkflow:$COMMIT_SHA', 'gcr.io/ml-pipeline/scheduledworkflow:$TAG_NAME']
id: 'tagScheduledworkflowVersionNumber'
waitFor: ['pullScheduledworkflow']
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/scheduledworkflow:$COMMIT_SHA', 'gcr.io/ml-pipeline/scheduledworkflow:$COMMIT_SHA']
id: 'tagScheduledworkflowCommitSHA'
waitFor: ['pullScheduledworkflow']
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/scheduledworkflow:$COMMIT_SHA', 'gcr.io/ml-pipeline/google/pipelines/scheduledworkflow:$TAG_NAME']
id: 'tagScheduledworkflowForMarketplace'
waitFor: ['pullScheduledworkflow']
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/scheduledworkflow:$COMMIT_SHA', 'gcr.io/ml-pipeline/google/pipelines-test/scheduledworkflow:$TAG_NAME']
id: 'tagScheduledworkflowForMarketplaceTest'
waitFor: ['pullScheduledworkflow']
- id: 'tagScheduledworkflowForMarketplaceMajorMinor'
waitFor: ['pullScheduledworkflow', 'parseMajorMinorVersion']
name: 'gcr.io/cloud-builders/docker'
entrypoint: bash
args:
- -ceux
- |
docker tag gcr.io/$PROJECT_ID/scheduledworkflow:$COMMIT_SHA gcr.io/ml-pipeline/google/pipelines/scheduledworkflow:$(cat /workspace/mm.ver)
docker tag gcr.io/$PROJECT_ID/scheduledworkflow:$COMMIT_SHA gcr.io/ml-pipeline/google/pipelines-test/scheduledworkflow:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines/scheduledworkflow:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines-test/scheduledworkflow:$(cat /workspace/mm.ver)
- name: 'gcr.io/cloud-builders/docker'
args: ['pull', 'gcr.io/$PROJECT_ID/viewer-crd-controller:$COMMIT_SHA']
id: 'pullViewerCrdController'
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/viewer-crd-controller:$COMMIT_SHA', 'gcr.io/ml-pipeline/viewer-crd-controller:$TAG_NAME']
id: 'tagViewerCrdControllerVersionNumber'
waitFor: ['pullViewerCrdController']
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/viewer-crd-controller:$COMMIT_SHA', 'gcr.io/ml-pipeline/viewer-crd-controller:$COMMIT_SHA']
id: 'tagViewerCrdControllerCommitSHA'
waitFor: ['pullViewerCrdController']
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/viewer-crd-controller:$COMMIT_SHA', 'gcr.io/ml-pipeline/google/pipelines/viewercrd:$TAG_NAME']
id: 'tagViewerCrdControllerForMarketplace'
waitFor: ['pullViewerCrdController']
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/viewer-crd-controller:$COMMIT_SHA', 'gcr.io/ml-pipeline/google/pipelines-test/viewercrd:$TAG_NAME']
id: 'tagViewerCrdControllerForMarketplaceTest'
waitFor: ['pullViewerCrdController']
- id: 'tagViewerCrdControllerForMarketplaceMajorMinor'
waitFor: ['pullViewerCrdController', 'parseMajorMinorVersion']
name: 'gcr.io/cloud-builders/docker'
entrypoint: bash
args:
- -ceux
- |
docker tag gcr.io/$PROJECT_ID/viewer-crd-controller:$COMMIT_SHA gcr.io/ml-pipeline/google/pipelines/viewercrd:$(cat /workspace/mm.ver)
docker tag gcr.io/$PROJECT_ID/viewer-crd-controller:$COMMIT_SHA gcr.io/ml-pipeline/google/pipelines-test/viewercrd:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines/viewercrd:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines-test/viewercrd:$(cat /workspace/mm.ver)
- name: 'gcr.io/cloud-builders/docker'
args: ['pull', 'gcr.io/$PROJECT_ID/persistenceagent:$COMMIT_SHA']
id: 'pullPersistenceagent'
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/persistenceagent:$COMMIT_SHA', 'gcr.io/ml-pipeline/persistenceagent:$TAG_NAME']
id: 'tagPersistenceagentVersionNumber'
waitFor: ['pullPersistenceagent']
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/persistenceagent:$COMMIT_SHA', 'gcr.io/ml-pipeline/persistenceagent:$COMMIT_SHA']
id: 'tagPersistenceagentCommitSHA'
waitFor: ['pullPersistenceagent']
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/persistenceagent:$COMMIT_SHA', 'gcr.io/ml-pipeline/google/pipelines/persistenceagent:$TAG_NAME']
id: 'tagPersistenceagentForMarketplace'
waitFor: ['pullPersistenceagent']
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/persistenceagent:$COMMIT_SHA', 'gcr.io/ml-pipeline/google/pipelines-test/persistenceagent:$TAG_NAME']
id: 'tagPersistenceagentForMarketplaceTest'
waitFor: ['pullPersistenceagent']
- id: 'tagPersistenceagentForMarketplaceMajorMinor'
waitFor: ['pullPersistenceagent', 'parseMajorMinorVersion']
name: 'gcr.io/cloud-builders/docker'
entrypoint: bash
args:
- -ceux
- |
docker tag gcr.io/$PROJECT_ID/persistenceagent:$COMMIT_SHA gcr.io/ml-pipeline/google/pipelines/persistenceagent:$(cat /workspace/mm.ver)
docker tag gcr.io/$PROJECT_ID/persistenceagent:$COMMIT_SHA gcr.io/ml-pipeline/google/pipelines-test/persistenceagent:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines/persistenceagent:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines-test/persistenceagent:$(cat /workspace/mm.ver)
- name: 'gcr.io/cloud-builders/docker'
args: ['pull', 'gcr.io/$PROJECT_ID/inverse-proxy-agent:$COMMIT_SHA']
id: 'pullInverseProxyAgent'
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/inverse-proxy-agent:$COMMIT_SHA', 'gcr.io/ml-pipeline/inverse-proxy-agent:$TAG_NAME']
id: 'tagInverseProxyAgentVersionNumber'
waitFor: ['pullInverseProxyAgent']
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/inverse-proxy-agent:$COMMIT_SHA', 'gcr.io/ml-pipeline/inverse-proxy-agent:$COMMIT_SHA']
id: 'tagInverseProxyAgentCommitSHA'
waitFor: ['pullInverseProxyAgent']
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/inverse-proxy-agent:$COMMIT_SHA', 'gcr.io/ml-pipeline/google/pipelines/proxyagent:$TAG_NAME']
id: 'tagInverseProxyAgentForMarketplace'
waitFor: ['pullInverseProxyAgent']
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/inverse-proxy-agent:$COMMIT_SHA', 'gcr.io/ml-pipeline/google/pipelines-test/proxyagent:$TAG_NAME']
id: 'tagInverseProxyAgentForMarketplaceTest'
waitFor: ['pullInverseProxyAgent']
- id: 'tagInverseProxyAgentForMarketplaceMajorMinor'
waitFor: ['pullInverseProxyAgent', 'parseMajorMinorVersion']
name: 'gcr.io/cloud-builders/docker'
entrypoint: bash
args:
- -ceux
- |
docker tag gcr.io/$PROJECT_ID/inverse-proxy-agent:$COMMIT_SHA gcr.io/ml-pipeline/google/pipelines/proxyagent:$(cat /workspace/mm.ver)
docker tag gcr.io/$PROJECT_ID/inverse-proxy-agent:$COMMIT_SHA gcr.io/ml-pipeline/google/pipelines-test/proxyagent:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines/proxyagent:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines-test/proxyagent:$(cat /workspace/mm.ver)
- name: 'gcr.io/cloud-builders/docker'
args: ['pull', 'gcr.io/$PROJECT_ID/visualization-server:$COMMIT_SHA']
id: 'pullVisualizationServer'
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/visualization-server:$COMMIT_SHA', 'gcr.io/ml-pipeline/visualization-server:$TAG_NAME']
id: 'tagVisualizationServerVersionNumber'
waitFor: ['pullVisualizationServer']
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/visualization-server:$COMMIT_SHA', 'gcr.io/ml-pipeline/visualization-server:$COMMIT_SHA']
id: 'tagVisualizationServerCommitSHA'
waitFor: ['pullVisualizationServer']
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/visualization-server:$COMMIT_SHA', 'gcr.io/ml-pipeline/google/pipelines/visualizationserver:$TAG_NAME']
id: 'tagVisualizationServerForMarketplace'
waitFor: ['pullVisualizationServer']
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/visualization-server:$COMMIT_SHA', 'gcr.io/ml-pipeline/google/pipelines-test/visualizationserver:$TAG_NAME']
id: 'tagVisualizationServerForMarketplaceTest'
waitFor: ['pullVisualizationServer']
- id: 'tagVisualizationServerForMarketplaceMajorMinor'
waitFor: ['pullVisualizationServer', 'parseMajorMinorVersion']
name: 'gcr.io/cloud-builders/docker'
entrypoint: bash
args:
- -ceux
- |
docker tag gcr.io/$PROJECT_ID/visualization-server:$COMMIT_SHA gcr.io/ml-pipeline/google/pipelines/visualizationserver:$(cat /workspace/mm.ver)
docker tag gcr.io/$PROJECT_ID/visualization-server:$COMMIT_SHA gcr.io/ml-pipeline/google/pipelines-test/visualizationserver:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines/visualizationserver:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines-test/visualizationserver:$(cat /workspace/mm.ver)
# ! Sync to the same MLMD version:
# * backend/metadata_writer/requirements.in and requirements.txt
# * @kubeflow/frontend/src/mlmd/generated
# * .cloudbuild.yaml and .release.cloudbuild.yaml
# * manifests/kustomize/base/metadata/base/metadata-grpc-deployment.yaml
# * test/tag_for_hosted.sh
- name: 'gcr.io/cloud-builders/docker'
args: ['pull', 'gcr.io/tfx-oss-public/ml_metadata_store_server:1.14.0']
id: 'pullMetadataServer'
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/tfx-oss-public/ml_metadata_store_server:1.14.0', 'gcr.io/ml-pipeline/google/pipelines/metadataserver:$TAG_NAME']
id: 'tagMetadataServerForMarketplace'
waitFor: ['pullMetadataServer']
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/tfx-oss-public/ml_metadata_store_server:1.14.0', 'gcr.io/ml-pipeline/google/pipelines-test/metadataserver:$TAG_NAME']
id: 'tagMetadataServerForMarketplaceTest'
waitFor: ['pullMetadataServer']
- id: 'tagMetadataServerForMarketplaceMajorMinor'
waitFor: ['pullMetadataServer', 'parseMajorMinorVersion']
name: 'gcr.io/cloud-builders/docker'
entrypoint: bash
args:
- -ceux
- |
docker tag gcr.io/tfx-oss-public/ml_metadata_store_server:1.14.0 gcr.io/ml-pipeline/google/pipelines/metadataserver:$(cat /workspace/mm.ver)
docker tag gcr.io/tfx-oss-public/ml_metadata_store_server:1.14.0 gcr.io/ml-pipeline/google/pipelines-test/metadataserver:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines/metadataserver:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines-test/metadataserver:$(cat /workspace/mm.ver)
- id: 'pullMetadataWriter'
name: 'gcr.io/cloud-builders/docker'
args: ['pull', 'gcr.io/$PROJECT_ID/metadata-writer:$COMMIT_SHA']
waitFor: ['-']
- id: 'tagMetadataWriterVersionNumber'
name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/metadata-writer:$COMMIT_SHA', 'gcr.io/ml-pipeline/metadata-writer:$TAG_NAME']
waitFor: ['pullMetadataWriter']
- id: 'tagMetadataWriterCommitSHA'
name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/metadata-writer:$COMMIT_SHA', 'gcr.io/ml-pipeline/metadata-writer:$COMMIT_SHA']
waitFor: ['pullMetadataWriter']
- id: 'tagMetadataWriterForMarketplace'
name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/metadata-writer:$COMMIT_SHA', 'gcr.io/ml-pipeline/google/pipelines/metadatawriter:$TAG_NAME']
waitFor: ['pullMetadataWriter']
- id: 'tagMetadataWriterForMarketplaceTest'
name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/metadata-writer:$COMMIT_SHA', 'gcr.io/ml-pipeline/google/pipelines-test/metadatawriter:$TAG_NAME']
waitFor: ['pullMetadataWriter']
- id: 'tagMetadataWriterForMarketplaceMajorMinor'
waitFor: ['pullMetadataWriter', 'parseMajorMinorVersion']
name: 'gcr.io/cloud-builders/docker'
entrypoint: bash
args:
- -ceux
- |
docker tag gcr.io/$PROJECT_ID/metadata-writer:$COMMIT_SHA gcr.io/ml-pipeline/google/pipelines/metadatawriter:$(cat /workspace/mm.ver)
docker tag gcr.io/$PROJECT_ID/metadata-writer:$COMMIT_SHA gcr.io/ml-pipeline/google/pipelines-test/metadatawriter:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines/metadatawriter:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines-test/metadatawriter:$(cat /workspace/mm.ver)
- id: 'pullCacheServer'
name: 'gcr.io/cloud-builders/docker'
args: ['pull', 'gcr.io/$PROJECT_ID/cache-server:$COMMIT_SHA']
waitFor: ['-']
- id: 'tagCacheServerVersionNumber'
name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/cache-server:$COMMIT_SHA', 'gcr.io/ml-pipeline/cache-server:$TAG_NAME']
waitFor: ['pullCacheServer']
- id: 'tagCacheServerCommitSHA'
name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/cache-server:$COMMIT_SHA', 'gcr.io/ml-pipeline/cache-server:$COMMIT_SHA']
waitFor: ['pullCacheServer']
- id: 'tagCacheServerForMarketplace'
name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/cache-server:$COMMIT_SHA', 'gcr.io/ml-pipeline/google/pipelines/cacheserver:$TAG_NAME']
waitFor: ['pullCacheServer']
- id: 'tagCacheServerForMarketplaceTest'
name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/cache-server:$COMMIT_SHA', 'gcr.io/ml-pipeline/google/pipelines-test/cacheserver:$TAG_NAME']
waitFor: ['pullCacheServer']
- id: 'tagCacheServerForMarketplaceMajorMinor'
waitFor: ['pullCacheServer', 'parseMajorMinorVersion']
name: 'gcr.io/cloud-builders/docker'
entrypoint: bash
args:
- -ceux
- |
docker tag gcr.io/$PROJECT_ID/cache-server:$COMMIT_SHA gcr.io/ml-pipeline/google/pipelines/cacheserver:$(cat /workspace/mm.ver)
docker tag gcr.io/$PROJECT_ID/cache-server:$COMMIT_SHA gcr.io/ml-pipeline/google/pipelines-test/cacheserver:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines/cacheserver:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines-test/cacheserver:$(cat /workspace/mm.ver)
- id: 'pullCacheDeployer'
name: 'gcr.io/cloud-builders/docker'
args: ['pull', 'gcr.io/$PROJECT_ID/cache-deployer:$COMMIT_SHA']
waitFor: ['-']
- id: 'tagCacheDeployerVersionNumber'
name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/cache-deployer:$COMMIT_SHA', 'gcr.io/ml-pipeline/cache-deployer:$TAG_NAME']
waitFor: ['pullCacheDeployer']
- id: 'tagCacheDeployerCommitSHA'
name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/cache-deployer:$COMMIT_SHA', 'gcr.io/ml-pipeline/cache-deployer:$COMMIT_SHA']
waitFor: ['pullCacheDeployer']
- id: 'tagCacheDeployerForMarketplace'
name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/cache-deployer:$COMMIT_SHA', 'gcr.io/ml-pipeline/google/pipelines/cachedeployer:$TAG_NAME']
waitFor: ['pullCacheDeployer']
- id: 'tagCacheDeployerForMarketplaceTest'
name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/cache-deployer:$COMMIT_SHA', 'gcr.io/ml-pipeline/google/pipelines-test/cachedeployer:$TAG_NAME']
waitFor: ['pullCacheDeployer']
- id: 'tagCacheDeployerForMarketplaceMajorMinor'
waitFor: ['pullCacheDeployer', 'parseMajorMinorVersion']
name: 'gcr.io/cloud-builders/docker'
entrypoint: bash
args:
- -ceux
- |
docker tag gcr.io/$PROJECT_ID/cache-deployer:$COMMIT_SHA gcr.io/ml-pipeline/google/pipelines/cachedeployer:$(cat /workspace/mm.ver)
docker tag gcr.io/$PROJECT_ID/cache-deployer:$COMMIT_SHA gcr.io/ml-pipeline/google/pipelines-test/cachedeployer:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines/cachedeployer:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines-test/cachedeployer:$(cat /workspace/mm.ver)
- name: 'gcr.io/cloud-builders/docker'
args: ['pull', 'gcr.io/$PROJECT_ID/metadata-envoy:$COMMIT_SHA']
id: 'pullMetadataEnvoy'
- id: 'tagMetadataEnvoyVersionNumber'
name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/metadata-envoy:$COMMIT_SHA', 'gcr.io/ml-pipeline/metadata-envoy:$TAG_NAME']
waitFor: ['pullMetadataEnvoy']
- id: 'tagMetadataEnvoyCommitSHA'
name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/metadata-envoy:$COMMIT_SHA', 'gcr.io/ml-pipeline/metadata-envoy:$COMMIT_SHA']
waitFor: ['pullMetadataEnvoy']
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/metadata-envoy:$COMMIT_SHA', 'gcr.io/ml-pipeline/google/pipelines/metadataenvoy:$TAG_NAME']
id: 'tagMetadataEnvoyForMarketplace'
waitFor: ['pullMetadataEnvoy']
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/metadata-envoy:$COMMIT_SHA', 'gcr.io/ml-pipeline/google/pipelines-test/metadataenvoy:$TAG_NAME']
id: 'tagMetadataEnvoyForMarketplaceTest'
waitFor: ['pullMetadataEnvoy']
- id: 'tagMetadataEnvoyForMarketplaceMajorMinor'
waitFor: ['pullMetadataEnvoy', 'parseMajorMinorVersion']
name: 'gcr.io/cloud-builders/docker'
entrypoint: bash
args:
- -ceux
- |
docker tag gcr.io/$PROJECT_ID/metadata-envoy:$COMMIT_SHA gcr.io/ml-pipeline/google/pipelines/metadataenvoy:$(cat /workspace/mm.ver)
docker tag gcr.io/$PROJECT_ID/metadata-envoy:$COMMIT_SHA gcr.io/ml-pipeline/google/pipelines-test/metadataenvoy:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines/metadataenvoy:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines-test/metadataenvoy:$(cat /workspace/mm.ver)
- name: 'gcr.io/cloud-builders/docker'
args: ['pull', 'gcr.io/ml-pipeline/minio:RELEASE.2019-08-14T20-37-41Z-license-compliance']
id: 'pullMinio'
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/ml-pipeline/minio:RELEASE.2019-08-14T20-37-41Z-license-compliance', 'gcr.io/ml-pipeline/google/pipelines/minio:$TAG_NAME']
id: 'tagMinioForMarketplace'
waitFor: ['pullMinio']
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/ml-pipeline/minio:RELEASE.2019-08-14T20-37-41Z-license-compliance', 'gcr.io/ml-pipeline/google/pipelines-test/minio:$TAG_NAME']
id: 'tagMinioForMarketplaceTest'
waitFor: ['pullMinio']
- id: 'tagMinioForMarketplaceMajorMinor'
waitFor: ['pullMinio', 'parseMajorMinorVersion']
name: 'gcr.io/cloud-builders/docker'
entrypoint: bash
args:
- -ceux
- |
docker tag gcr.io/ml-pipeline/minio:RELEASE.2019-08-14T20-37-41Z-license-compliance gcr.io/ml-pipeline/google/pipelines/minio:$(cat /workspace/mm.ver)
docker tag gcr.io/ml-pipeline/minio:RELEASE.2019-08-14T20-37-41Z-license-compliance gcr.io/ml-pipeline/google/pipelines-test/minio:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines/minio:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines-test/minio:$(cat /workspace/mm.ver)
- name: 'gcr.io/cloud-builders/docker'
args: ['pull', 'gcr.io/ml-pipeline/mysql:8.0.26']
id: 'pullMysql'
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/ml-pipeline/mysql:8.0.26', 'gcr.io/ml-pipeline/google/pipelines/mysql:$TAG_NAME']
id: 'tagMySqlForMarketplace'
waitFor: ['pullMysql']
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/ml-pipeline/mysql:8.0.26', 'gcr.io/ml-pipeline/google/pipelines-test/mysql:$TAG_NAME']
id: 'tagMySqlForMarketplaceTest'
waitFor: ['pullMysql']
- id: 'tagMySqlForMarketplaceMajorMinor'
waitFor: ['pullMysql', 'parseMajorMinorVersion']
name: 'gcr.io/cloud-builders/docker'
entrypoint: bash
args:
- -ceux
- |
docker tag gcr.io/ml-pipeline/mysql:8.0.26 gcr.io/ml-pipeline/google/pipelines/mysql:$(cat /workspace/mm.ver)
docker tag gcr.io/ml-pipeline/mysql:8.0.26 gcr.io/ml-pipeline/google/pipelines-test/mysql:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines/mysql:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines-test/mysql:$(cat /workspace/mm.ver)
- name: 'gcr.io/cloud-builders/docker'
args: ['pull', 'gcr.io/cloudsql-docker/gce-proxy:1.25.0']
id: 'pullCloudsqlProxy'
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/cloudsql-docker/gce-proxy:1.25.0', 'gcr.io/ml-pipeline/google/pipelines/cloudsqlproxy:$TAG_NAME']
id: 'tagCloudSqlProxyForMarketplace'
waitFor: ['pullCloudsqlProxy']
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/cloudsql-docker/gce-proxy:1.25.0', 'gcr.io/ml-pipeline/google/pipelines-test/cloudsqlproxy:$TAG_NAME']
id: 'tagCloudSqlProxyForMarketplaceTest'
waitFor: ['pullCloudsqlProxy']
- id: 'tagCloudSqlProxyForMarketplaceMajorMinor'
waitFor: ['pullCloudsqlProxy', 'parseMajorMinorVersion']
name: 'gcr.io/cloud-builders/docker'
entrypoint: bash
args:
- -ceux
- |
docker tag gcr.io/cloudsql-docker/gce-proxy:1.25.0 gcr.io/ml-pipeline/google/pipelines/cloudsqlproxy:$(cat /workspace/mm.ver)
docker tag gcr.io/cloudsql-docker/gce-proxy:1.25.0 gcr.io/ml-pipeline/google/pipelines-test/cloudsqlproxy:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines/cloudsqlproxy:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines-test/cloudsqlproxy:$(cat /workspace/mm.ver)
- name: 'gcr.io/cloud-builders/docker'
args: ['pull', 'gcr.io/ml-pipeline/argoexec:v3.4.16-license-compliance']
id: 'pullArgoExecutor'
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/ml-pipeline/argoexec:v3.4.16-license-compliance', 'gcr.io/ml-pipeline/google/pipelines/argoexecutor:$TAG_NAME']
id: 'tagArgoExecutorForMarketplace'
waitFor: ['pullArgoExecutor']
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/ml-pipeline/argoexec:v3.4.16-license-compliance', 'gcr.io/ml-pipeline/google/pipelines-test/argoexecutor:$TAG_NAME']
id: 'tagArgoExecutorForMarketplaceTest'
waitFor: ['pullArgoExecutor']
- id: 'tagArgoExecutorForMarketplaceMajorMinor'
waitFor: ['pullArgoExecutor', 'parseMajorMinorVersion']
name: 'gcr.io/cloud-builders/docker'
entrypoint: bash
args:
- -ceux
- |
docker tag gcr.io/ml-pipeline/argoexec:v3.4.16-license-compliance gcr.io/ml-pipeline/google/pipelines/argoexecutor:$(cat /workspace/mm.ver)
docker tag gcr.io/ml-pipeline/argoexec:v3.4.16-license-compliance gcr.io/ml-pipeline/google/pipelines-test/argoexecutor:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines/argoexecutor:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines-test/argoexecutor:$(cat /workspace/mm.ver)
- name: 'gcr.io/cloud-builders/docker'
args: ['pull', 'gcr.io/ml-pipeline/workflow-controller:v3.4.16-license-compliance']
id: 'pullArgoWorkflowController'
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/ml-pipeline/workflow-controller:v3.4.16-license-compliance', 'gcr.io/ml-pipeline/google/pipelines/argoworkflowcontroller:$TAG_NAME']
id: 'tagArgoWorkflowControllerForMarketplace'
waitFor: ['pullArgoWorkflowController']
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/ml-pipeline/workflow-controller:v3.4.16-license-compliance', 'gcr.io/ml-pipeline/google/pipelines-test/argoworkflowcontroller:$TAG_NAME']
id: 'tagArgoWorkflowControllerForMarketplaceTest'
waitFor: ['pullArgoWorkflowController']
- id: 'tagArgoWorkflowControllerForMarketplaceMajorMinor'
waitFor: ['pullArgoWorkflowController', 'parseMajorMinorVersion']
name: 'gcr.io/cloud-builders/docker'
entrypoint: bash
args:
- -ceux
- |
docker tag gcr.io/ml-pipeline/workflow-controller:v3.4.16-license-compliance gcr.io/ml-pipeline/google/pipelines/argoworkflowcontroller:$(cat /workspace/mm.ver)
docker tag gcr.io/ml-pipeline/workflow-controller:v3.4.16-license-compliance gcr.io/ml-pipeline/google/pipelines-test/argoworkflowcontroller:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines/argoworkflowcontroller:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines-test/argoworkflowcontroller:$(cat /workspace/mm.ver)
# Marketplace specific deployer and specific primary image
- id: 'pullMarketplaceDeployer'
name: 'gcr.io/cloud-builders/docker'
args: ['pull', 'gcr.io/$PROJECT_ID/deployer:$COMMIT_SHA']
waitFor: ['-']
- id: 'tagMarketplaceDeployerVersionNumber'
name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/deployer:$COMMIT_SHA', 'gcr.io/ml-pipeline/google/pipelines/deployer:$TAG_NAME']
waitFor: ['pullMarketplaceDeployer']
- id: 'tagMarketplaceDeployerVersionNumberTest'
name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/deployer:$COMMIT_SHA', 'gcr.io/ml-pipeline/google/pipelines-test/deployer:$TAG_NAME']
waitFor: ['pullMarketplaceDeployer']
- id: 'tagMarketplaceDeployerVersionNumberMajorMinor'
waitFor: ['pullMarketplaceDeployer', 'parseMajorMinorVersion']
name: 'gcr.io/cloud-builders/docker'
entrypoint: bash
args:
- -ceux
- |
docker tag gcr.io/$PROJECT_ID/deployer:$COMMIT_SHA gcr.io/ml-pipeline/google/pipelines/deployer:$(cat /workspace/mm.ver)
docker tag gcr.io/$PROJECT_ID/deployer:$COMMIT_SHA gcr.io/ml-pipeline/google/pipelines-test/deployer:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines/deployer:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines-test/deployer:$(cat /workspace/mm.ver)
- id: 'tagMarketplacePrimaryVersionNumber'
name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/deployer:$COMMIT_SHA', 'gcr.io/ml-pipeline/google/pipelines:$TAG_NAME']
waitFor: ['pullMarketplaceDeployer']
- id: 'tagMarketplacePrimaryVersionNumberTest'
name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'gcr.io/$PROJECT_ID/deployer:$COMMIT_SHA', 'gcr.io/ml-pipeline/google/pipelines-test:$TAG_NAME']
waitFor: ['pullMarketplaceDeployer']
- id: 'tagMarketplacePrimaryVersionNumberMajorMinor'
waitFor: ['pullMarketplaceDeployer', 'parseMajorMinorVersion']
name: 'gcr.io/cloud-builders/docker'
entrypoint: bash
args:
- -ceux
- |
docker tag gcr.io/$PROJECT_ID/deployer:$COMMIT_SHA gcr.io/ml-pipeline/google/pipelines:$(cat /workspace/mm.ver)
docker tag gcr.io/$PROJECT_ID/deployer:$COMMIT_SHA gcr.io/ml-pipeline/google/pipelines-test:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines:$(cat /workspace/mm.ver)
docker push gcr.io/ml-pipeline/google/pipelines-test:$(cat /workspace/mm.ver)
# # Copy the Python SDK
# - name: 'gcr.io/cloud-builders/gsutil'
# args: ['cp', 'gs://$PROJECT_ID/builds/$COMMIT_SHA/kfp.tar.gz', '/workspace/']
# id: 'copyPythonSDKLocal'
# - name: 'gcr.io/cloud-builders/gsutil'
# args: ['cp', '/workspace/kfp.tar.gz', 'gs://ml-pipeline/release/$TAG_NAME/kfp.tar.gz']
# id: 'copyPythonSDK'
# waitFor: ['copyPythonSDKLocal']
# - name: 'gcr.io/cloud-builders/gsutil'
# args: ['cp', '/workspace/kfp.tar.gz', 'gs://ml-pipeline/release/latest/kfp.tar.gz']
# id: 'copyPythonSDKToLatest'
# waitFor: ['copyPythonSDKLocal']
# # Copy the Python Component SDK
# - name: 'gcr.io/cloud-builders/gsutil'
# args: ['cp', 'gs://$PROJECT_ID/builds/$COMMIT_SHA/kfp-component.tar.gz', '/workspace/']
# id: 'copyPythonComponentSDKLocal'
# - name: 'gcr.io/cloud-builders/gsutil'
# args: ['cp', '/workspace/kfp-component.tar.gz', 'gs://ml-pipeline/release/$TAG_NAME/kfp-component.tar.gz']
# id: 'copyPythonComponentSDK'
# waitFor: ['copyPythonComponentSDKLocal']
# - name: 'gcr.io/cloud-builders/gsutil'
# args: ['cp', '/workspace/kfp-component.tar.gz', 'gs://ml-pipeline/release/latest/kfp-component.tar.gz']
# id: 'copyPythonComponentSDKToLatest'
# waitFor: ['copyPythonComponentSDKLocal']
images:
- 'gcr.io/ml-pipeline/scheduledworkflow:$TAG_NAME'
- 'gcr.io/ml-pipeline/scheduledworkflow:$COMMIT_SHA'
- 'gcr.io/ml-pipeline/persistenceagent:$TAG_NAME'
- 'gcr.io/ml-pipeline/persistenceagent:$COMMIT_SHA'
- 'gcr.io/ml-pipeline/viewer-crd-controller:$TAG_NAME'
- 'gcr.io/ml-pipeline/viewer-crd-controller:$COMMIT_SHA'
- 'gcr.io/ml-pipeline/inverse-proxy-agent:$TAG_NAME'
- 'gcr.io/ml-pipeline/inverse-proxy-agent:$COMMIT_SHA'
- 'gcr.io/ml-pipeline/visualization-server:$TAG_NAME'
- 'gcr.io/ml-pipeline/visualization-server:$COMMIT_SHA'
- 'gcr.io/ml-pipeline/metadata-envoy:$TAG_NAME'
- 'gcr.io/ml-pipeline/metadata-envoy:$COMMIT_SHA'
- 'gcr.io/ml-pipeline/metadata-writer:$TAG_NAME'
- 'gcr.io/ml-pipeline/metadata-writer:$COMMIT_SHA'
- 'gcr.io/ml-pipeline/cache-server:$TAG_NAME'
- 'gcr.io/ml-pipeline/cache-server:$COMMIT_SHA'
- 'gcr.io/ml-pipeline/cache-deployer:$TAG_NAME'
- 'gcr.io/ml-pipeline/cache-deployer:$COMMIT_SHA'
- 'gcr.io/ml-pipeline/google/pipelines/scheduledworkflow:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines/viewercrd:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines/persistenceagent:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines/proxyagent:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines/visualizationserver:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines/metadataserver:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines/minio:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines/mysql:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines/cloudsqlproxy:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines/argoexecutor:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines/argoworkflowcontroller:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines/metadataenvoy:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines/metadatawriter:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines/deployer:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines/cacheserver:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines/cachedeployer:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines-test/scheduledworkflow:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines-test/viewercrd:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines-test/persistenceagent:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines-test/proxyagent:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines-test/visualizationserver:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines-test/metadataserver:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines-test/minio:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines-test/mysql:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines-test/cloudsqlproxy:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines-test/argoexecutor:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines-test/argoworkflowcontroller:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines-test/metadataenvoy:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines-test/metadatawriter:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines-test/cacheserver:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines-test/cachedeployer:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines-test/deployer:$TAG_NAME'
- 'gcr.io/ml-pipeline/google/pipelines-test:$TAG_NAME'
timeout: '2000s'
tags:
- release-on-tag

12
ADOPTERS.md Normal file
View File

@ -0,0 +1,12 @@
# Adopters of Kubeflow Pipelines
Below are the adopters of project Kubeflow Pipelines. If you are using Kubeflow Pipelines
please add yourself into the following list by a pull request.
Please keep the list in alphabetical order.
| Organization | Contact | Description of Use |
|------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------|--------------------------------------------------------|
| [Capital One](https://www.capitalone.com/) | [@droctothorpe](https://github.com/droctothorpe) | ML/AI Workflow orchestration |
| [IBM Research Foundation Model Data Engineering Team](https://www.research.ibm.com/) | [@yuanchi2807](https://github.com/yuanchi2807), [@roytman](https://github.com/roytman) | Foundation Model Data Engineering |
| [Red Hat](https://www.redhat.com/) | [@franciscojavierarceo](https://github.com/franciscojavierarceo) | ML/AI & Data orchestration |

View File

@ -1,5 +1,455 @@
# Changelog
## [2.14.0](https://github.com/kubeflow/pipelines/compare/2.5.0...2.14.0) (2025-08-05)
### Features
* **backend:** Add CLI flags to support Kubernetes native API implementation ([\#11907](https://github.com/kubeflow/pipelines/issues/11907)) ([c368ac6](https://github.com/kubeflow/pipelines/commit/c368ac6881b75331a3b7aa31e3adb36eacf858a1))
* **backend:** Add migration script to create Pipeline and PipelineVersion objects from the database to Kubernetes API ([\#11884](https://github.com/kubeflow/pipelines/issues/11884)) ([988477a](https://github.com/kubeflow/pipelines/commit/988477a7de1c9376abb51618c4b926226afe587f))
* **backend:** Add support for platform specs on K8s native API ([\#12016](https://github.com/kubeflow/pipelines/issues/12016)) ([04407fb](https://github.com/kubeflow/pipelines/commit/04407fbe9397def09fd1e12df34190ba95f5d8a2))
* **backend:** Add the Kubernetes native pipeline store ([\#11881](https://github.com/kubeflow/pipelines/issues/11881)) ([c03127d](https://github.com/kubeflow/pipelines/commit/c03127d9671ed2ac29350840b4a56c5cf0c227eb))
* **backend:** add the option to enable/disable cache globally ([\#11831](https://github.com/kubeflow/pipelines/issues/11831)) ([9aebb62](https://github.com/kubeflow/pipelines/commit/9aebb62be1a9412d960fc681787468e1e3ab2001))
* **backend:** Allow the launcher command to be configurable ([\#11888](https://github.com/kubeflow/pipelines/issues/11888)) ([70d2888](https://github.com/kubeflow/pipelines/commit/70d28885f27bff40397f9c9ea790e5985deb91e1))
* **backend:** parameterize retryStrategy input in Argo workflow ([\#11861](https://github.com/kubeflow/pipelines/issues/11861)) ([9245739](https://github.com/kubeflow/pipelines/commit/9245739f6fdd76769cd477f8952706cfe0eabc34))
* **backend:** support for optional input parameters in nested pipelines ([\#11980](https://github.com/kubeflow/pipelines/issues/11980)) ([ecfe94e](https://github.com/kubeflow/pipelines/commit/ecfe94ebc3adc0dd41da9a944056ce4170ce9064))
* **backend:** Support more than one label & annotations setting per component ([\#12049](https://github.com/kubeflow/pipelines/issues/12049)) ([a870b1a](https://github.com/kubeflow/pipelines/commit/a870b1a325dae0c82c8b6f57941468ee1aea960b))
* **backend:** update Argo Workflow Compiler to create workspace PVCs ([\#11982](https://github.com/kubeflow/pipelines/issues/11982)) ([daac099](https://github.com/kubeflow/pipelines/commit/daac099508865670f41eeeef135fa22f9ec880f1))
* **backend:** Use native k8s probes for api-server and visualization ([\#11960](https://github.com/kubeflow/pipelines/issues/11960)) ([cc78308](https://github.com/kubeflow/pipelines/commit/cc7830812ae3ced24962238dcbf5f113f28c4772))
* **backend/frontend:** Add the name field for pipelines and pipeline versions ([\#11952](https://github.com/kubeflow/pipelines/issues/11952)) ([ea20731](https://github.com/kubeflow/pipelines/commit/ea207310601ffaf807b148a79a9ddcb8d4812886))
* **backend/sdk:** enable dsl.Collected for parameters & artifacts ([\#11725](https://github.com/kubeflow/pipelines/issues/11725)) ([ed828b5](https://github.com/kubeflow/pipelines/commit/ed828b513aef4826f1f05e47168cf7b08a3c74ab))
* **backend/sdk:** support PipelineTaskFinalStatus input ([\#11953](https://github.com/kubeflow/pipelines/issues/11953)) ([0d857b6](https://github.com/kubeflow/pipelines/commit/0d857b6f8a1261477bb05bc65aa474d992b57084))
* **docs:** erdiagram of kfp-db ([\#12009](https://github.com/kubeflow/pipelines/issues/12009)) ([99326e1](https://github.com/kubeflow/pipelines/commit/99326e1bd13e6223c1cfb657524c9e5926d95ce5))
* **docs:** Guide to report security vulnerabilities ([\#12044](https://github.com/kubeflow/pipelines/issues/12044)) ([9aa3dfb](https://github.com/kubeflow/pipelines/commit/9aa3dfb0d9810e3d3940b728e2e39dad1e956587))
* **frontend:** Add "Always Use Latest Version" option for recurring runs (fixes [\#11581](https://github.com/kubeflow/pipelines/issues/11581)) ([\#11755](https://github.com/kubeflow/pipelines/issues/11755)) ([0e7e806](https://github.com/kubeflow/pipelines/commit/0e7e806b4cd52c20397220d6e0e8db79cae35894))
* **proto:** Add WorkspaceConfig and KubernetesWorkspaceConfig message types to pipeline_spec proto ([\#11921](https://github.com/kubeflow/pipelines/issues/11921)) ([67f9b7d](https://github.com/kubeflow/pipelines/commit/67f9b7d73c895fd0fd027488ba20c255918d735e))
* **sdk:** Add support for compiling pipelines to Kubernetes native format in SDK ([\#12012](https://github.com/kubeflow/pipelines/issues/12012)) ([dc398f6](https://github.com/kubeflow/pipelines/commit/dc398f689eb0b19e86fdbb554b33d9f6cb1095e3))
* **sdk:** Add Support for Docker Container Run Arguments ([\#12006](https://github.com/kubeflow/pipelines/issues/12006)) ([268e089](https://github.com/kubeflow/pipelines/commit/268e0898ecdd3f9447988b6e675676eb21c584f0))
* **sdk:** update PipelineConfig to reflect new workspace Protobuf changes ([\#11934](https://github.com/kubeflow/pipelines/issues/11934)) ([dda6033](https://github.com/kubeflow/pipelines/commit/dda6033a03a8f69e51c6672d964169521744357b))
* **ui:** add `ESC` shortcut for closing SidePanel. Fixes [\#11873](https://github.com/kubeflow/pipelines/issues/11873) ([\#11874](https://github.com/kubeflow/pipelines/issues/11874)) ([c3d05eb](https://github.com/kubeflow/pipelines/commit/c3d05eb0b1ee492098c9db769371d975ebf0241a))
* add openshift env to manifests ([\#11932](https://github.com/kubeflow/pipelines/issues/11932)) ([8329e64](https://github.com/kubeflow/pipelines/commit/8329e64716dab0e3485381f712aeadc80beb05f3))
### Bug Fixes
* **backend:** omit unknown fields in json marshaling ([\#12101](https://github.com/kubeflow/pipelines/issues/12101)) ([000a111](https://github.com/kubeflow/pipelines/commit/000a111396213847a437296afb511564ccc0c60d))
* **deps:** revert metadata_writer k8s version ([\#12099](https://github.com/kubeflow/pipelines/issues/12099)) ([c64feac](https://github.com/kubeflow/pipelines/commit/c64feac20edf6129523fd5d8241d1f7140107fdd))
* **sdk,backend:** Make the workspace size required ([\#12094](https://github.com/kubeflow/pipelines/issues/12094)) ([4bd3d4b](https://github.com/kubeflow/pipelines/commit/4bd3d4b4e99b5af38380ddad9693a2a0bbe4e968))
* backwards compatibility for pipeline spec task_name ([\#12061](https://github.com/kubeflow/pipelines/issues/12061)) ([bcb9ee4](https://github.com/kubeflow/pipelines/commit/bcb9ee4324c4606f34ac000315b8b2f60df8c31e))
* **apiserver:** fix typos in resource_manager.go: ([\#11998](https://github.com/kubeflow/pipelines/issues/11998)) ([3154ef9](https://github.com/kubeflow/pipelines/commit/3154ef9258c1dfb179fdb5d036989b126b2412fe))
* **backend:** Fix boolean flag syntax for `--cache_disabled` and update test to cover pipelines with outputs ([\#12001](https://github.com/kubeflow/pipelines/issues/12001)) ([f240685](https://github.com/kubeflow/pipelines/commit/f240685bf3169251ca343fc985bbb5607be3f727))
* **backend:** Fix the pipeline samples ([\#11967](https://github.com/kubeflow/pipelines/issues/11967)) ([b477269](https://github.com/kubeflow/pipelines/commit/b4772693ae0f7d90425f604ebdafbda1a1c4a5f3))
* **backend:** increase max_metadata_size for ml-metadata grpc server ([\#12062](https://github.com/kubeflow/pipelines/issues/12062)) ([09ced38](https://github.com/kubeflow/pipelines/commit/09ced38500725c5e8542ce4885eee8d3cee58f02))
* **backend:** Stop logging the strack trace on benign user errors ([\#11883](https://github.com/kubeflow/pipelines/issues/11883)) ([56da004](https://github.com/kubeflow/pipelines/commit/56da004d91d8db9b46b57544d1ad6699ddb4de4c))
* **backend/sdk:** update proto packages ([\#12067](https://github.com/kubeflow/pipelines/issues/12067)) ([cc35187](https://github.com/kubeflow/pipelines/commit/cc35187dff270008c6bef505c828f442773ec97d))
* **cache:** Optimize cache expiration query solves [\#11614](https://github.com/kubeflow/pipelines/issues/11614) ([\#11920](https://github.com/kubeflow/pipelines/issues/11920)) ([faa2c8c](https://github.com/kubeflow/pipelines/commit/faa2c8cd16bd5dddec2c30dd456f6d8f55f12471))
* **components:** Changed method_whitelist. Fixes [\#11880](https://github.com/kubeflow/pipelines/issues/11880) ([\#11961](https://github.com/kubeflow/pipelines/issues/11961)) ([a123d53](https://github.com/kubeflow/pipelines/commit/a123d53be0158b961e8527999392358a4403d191))
* **sdk:** Fixes for Identifying Untagged Images for Running ([\#11984](https://github.com/kubeflow/pipelines/issues/11984)) ([e8e23f0](https://github.com/kubeflow/pipelines/commit/e8e23f0d7a0a583b93e11e5690504306f4e0091e))
* **sdk:** Move version info to version.py for editable installs. ([\#11997](https://github.com/kubeflow/pipelines/issues/11997)) ([ada935a](https://github.com/kubeflow/pipelines/commit/ada935a0ad86d02329e3cb6b9a36a399d9fd4a79))
* **sdk:** Support partial replace of placeholders in dict/list objects ([\#12039](https://github.com/kubeflow/pipelines/issues/12039)) ([ce84873](https://github.com/kubeflow/pipelines/commit/ce848730b8f4bf8a2d07f3b53691d9801b0e60f5))
* Delete the pipeline along with its all versions. Fixes [\#11665](https://github.com/kubeflow/pipelines/issues/11665) ([\#12019](https://github.com/kubeflow/pipelines/issues/12019)) ([ad2730c](https://github.com/kubeflow/pipelines/commit/ad2730cf19febf2d8a0a7d42ac8eafe1bb458a14))
* input resolution with set_display_name ([\#11938](https://github.com/kubeflow/pipelines/issues/11938)) ([7f60100](https://github.com/kubeflow/pipelines/commit/7f60100602deefa3ed6ffbef22a948b7790c360f))
* **sdk:** fix pip install for dev ([\#11891](https://github.com/kubeflow/pipelines/issues/11891)) ([4503eae](https://github.com/kubeflow/pipelines/commit/4503eae10d19518bc35310c57d2ef957b31f959c))
* **sdk:** resolve issue when creating pipeline version from pipeline name using the cli. Fixes [\#11810](https://github.com/kubeflow/pipelines/issues/11810) ([\#11866](https://github.com/kubeflow/pipelines/issues/11866)) ([c68640d](https://github.com/kubeflow/pipelines/commit/c68640d95038f1b577caa44a2ff0bd966d059b94))
* **sdk:** Resolves issue when using ParallelFor with param and depending tasks ([\#11903](https://github.com/kubeflow/pipelines/issues/11903)) ([ef94ccd](https://github.com/kubeflow/pipelines/commit/ef94ccd734957bdee3bbb98ea043738bb5795dc7))
* **test:** Fix the frontend sample test ([\#11968](https://github.com/kubeflow/pipelines/issues/11968)) ([5447563](https://github.com/kubeflow/pipelines/commit/54475637a241f55957149a32b80cb8c44d8f6458))
* **tests:** free up space in kfp samples test workflow ([\#11942](https://github.com/kubeflow/pipelines/issues/11942)) ([8fe090d](https://github.com/kubeflow/pipelines/commit/8fe090d461d7c2e1226c2fc46a80479790bcd2e5))
### Other Pull Requests
* revert changelog ([62082a4](https://github.com/kubeflow/pipelines/commit/62082a4812b84ed00102f05a81e8e924f02f36fe))
* test generating backend proto go code ([\#12108](https://github.com/kubeflow/pipelines/issues/12108)) ([5685e88](https://github.com/kubeflow/pipelines/commit/5685e884f459da6d1f63c46a3185a7a24b22dfca))
* update python packages to 2.14 ([3ffde88](https://github.com/kubeflow/pipelines/commit/3ffde88e5f306268e00ccbe0e450dd76e7baf1bf))
* add versioning policy for KFP ([\#12105](https://github.com/kubeflow/pipelines/issues/12105)) ([9f5abab](https://github.com/kubeflow/pipelines/commit/9f5abab7d2d995b5a5f197c7e697fb30bc8c9ab7))
* feat(sdk) Add Input Parameter support for node affinity ([\#12028](https://github.com/kubeflow/pipelines/issues/12028)) ([ecf488b](https://github.com/kubeflow/pipelines/commit/ecf488b65fed923595ed048a2d0e9ba3d932f409))
* Fix broken Pipeline Root documentation link ([\#12051](https://github.com/kubeflow/pipelines/issues/12051)) ([f20cec5](https://github.com/kubeflow/pipelines/commit/f20cec5b7097a628f18765d6160dd2316f41dec4))
* add new KFP maintainers ([\#12059](https://github.com/kubeflow/pipelines/issues/12059)) ([69a1846](https://github.com/kubeflow/pipelines/commit/69a184637a97458037d65f6a9b938013d9e2f579))
* user master for dev manifests ([\#11977](https://github.com/kubeflow/pipelines/issues/11977)) ([5181358](https://github.com/kubeflow/pipelines/commit/5181358d6a4ca4d0923ac90733cf83470763cdd2))
* feat(frontend) Use native k8s probes for pipeline-ui ([\#11955](https://github.com/kubeflow/pipelines/issues/11955)) ([48468ae](https://github.com/kubeflow/pipelines/commit/48468ae1fa126f8668e275817f77023a585175f9))
* feat(backend) implement retryStrategy for nested pipelines ([\#11908](https://github.com/kubeflow/pipelines/issues/11908)) ([beae62f](https://github.com/kubeflow/pipelines/commit/beae62fb528fc9044af54bf2c46771727d5d22b2))
* - fix(launcher): missing executorInput parameter values caused by {{$}} evaluation order ([\#11925](https://github.com/kubeflow/pipelines/issues/11925)) ([3337b5e](https://github.com/kubeflow/pipelines/commit/3337b5e32377653968f477b05e5cbd5d6a081bdf))
* add maintainer to kfp ([\#11900](https://github.com/kubeflow/pipelines/issues/11900)) ([e276474](https://github.com/kubeflow/pipelines/commit/e276474f970a1a92db7cf8c01d5ef716acc3ee4b))
* No public description ([d90e4e8](https://github.com/kubeflow/pipelines/commit/d90e4e8a54fdd08a73ca9b0ebb404e7cb6035f7c))
* update release doc paths & make script executable ([\#11871](https://github.com/kubeflow/pipelines/issues/11871)) ([8a402c1](https://github.com/kubeflow/pipelines/commit/8a402c10a8e3d36f964fb451760319c99a185e8f))
## [2.5.0](https://github.com/kubeflow/pipelines/compare/2.4.1...2.5.0) (2025-04-29)
### Features
* **backend:** Add a mutating webhook for the PipelineVersion kind ([\#11782](https://github.com/kubeflow/pipelines/issues/11782)) ([c9be64d](https://github.com/kubeflow/pipelines/commit/c9be64dca362a33dcfad186fe579066a646a6df1))
* **backend:** Add the ability to set a proxy for accessing external resources ([\#11771](https://github.com/kubeflow/pipelines/issues/11771)) ([6e3548f](https://github.com/kubeflow/pipelines/commit/6e3548f33e226ba374e4d43a175ae8ac9018e268))
* **backend:** Add types for KFP Kubernete Native API ([\#11672](https://github.com/kubeflow/pipelines/issues/11672)) ([0d9a7b0](https://github.com/kubeflow/pipelines/commit/0d9a7b00e926130b07058ea71148fbb9cab69d2b))
* **backend:** Create a validating webhook for the PipelineVersion kind ([\#11774](https://github.com/kubeflow/pipelines/issues/11774)) ([2efcde5](https://github.com/kubeflow/pipelines/commit/2efcde5efd3952b91ea79a5ee6dbf064282f719a))
* **backend:** implement logs as artifacts ([\#11762](https://github.com/kubeflow/pipelines/issues/11762)) ([cd3e747](https://github.com/kubeflow/pipelines/commit/cd3e747b5de3d7e1e338e309cc57311dd4a91258))
* **backend:** implement logs as artifacts + CI updates ([\#11809](https://github.com/kubeflow/pipelines/issues/11809)) ([464ca39](https://github.com/kubeflow/pipelines/commit/464ca3974fbbc46e022f863e49c4fbaabd1a8265))
* **backend/sdk:** Add input parameterization for various k8s resources ([\#11770](https://github.com/kubeflow/pipelines/issues/11770)) ([fd1b48b](https://github.com/kubeflow/pipelines/commit/fd1b48b4712038afe8a78e37843672d4773dc080))
* **proto:** Add TTL fields to KFP IR yaml proto ([\#11758](https://github.com/kubeflow/pipelines/issues/11758)) ([c5aba41](https://github.com/kubeflow/pipelines/commit/c5aba41bcaf3c214d984db4571c1ecae4a0d551d))
* **sdk:** add upload pipeline and upload pipeline version from pipeline function ([\#11804](https://github.com/kubeflow/pipelines/issues/11804)) ([1ad4f60](https://github.com/kubeflow/pipelines/commit/1ad4f608a0b9dea2362cf89f9cf7abdebf20e080))
### Bug Fixes
* **backend:** Fix run submissions with OwnerReferencesPermissionEnforcement on ([\#11821](https://github.com/kubeflow/pipelines/issues/11821)) ([69ba50b](https://github.com/kubeflow/pipelines/commit/69ba50b3fb03bd8441f833950a6c77835a2d47a1))
* **backend:** fixed Dockerfile ([\#11841](https://github.com/kubeflow/pipelines/issues/11841)) ([d38418e](https://github.com/kubeflow/pipelines/commit/d38418efeadec3ea3bea55b3373bcc311dacc135))
* **backend:** Include missing go.mod for cacheserver/viewercontroller images ([\#11776](https://github.com/kubeflow/pipelines/issues/11776)) ([715ed40](https://github.com/kubeflow/pipelines/commit/715ed40b92f9bca521f94e0df5201425d9d30866))
* **components:** Set tensorboard_experiment_name to random uuid when uploading plots in Starry Net pipeline ([cc56d04](https://github.com/kubeflow/pipelines/commit/cc56d04c46d01666a8e091b124473c2654e1b6d3))
* **deployment:** Update kustomize manifests to use new label and patch syntax ([\#11733](https://github.com/kubeflow/pipelines/issues/11733)) ([230c1b8](https://github.com/kubeflow/pipelines/commit/230c1b8f1332ffab575b2e69b65d9a6958167195))
* **deps:** widen urllib3 upper bound to <3.0.0 ([\#11819](https://github.com/kubeflow/pipelines/issues/11819)) ([866ff35](https://github.com/kubeflow/pipelines/commit/866ff3556a4454ccb52f1594bbca4167a04c0d3e))
* **docs:** Remove Podman as backend README pre-req ([\#11824](https://github.com/kubeflow/pipelines/issues/11824)) ([88cff55](https://github.com/kubeflow/pipelines/commit/88cff559142e5a985cf31620f07b71244645cb4a))
* **docs:** Use the latest driver and launcher images in the dev environment ([\#11820](https://github.com/kubeflow/pipelines/issues/11820)) ([92e4921](https://github.com/kubeflow/pipelines/commit/92e4921c4cce8155093bf7e332abfbf03bd6eaef))
* **local:** warn about oci:// not supported too ([\#11794](https://github.com/kubeflow/pipelines/issues/11794)) ([564522c](https://github.com/kubeflow/pipelines/commit/564522c42de9136dec67f1bf29590bdd64bf2333))
* **metadata-writer:** use mlmd_store.get_context_types() instead of workaround ([\#11753](https://github.com/kubeflow/pipelines/issues/11753)) ([35041ef](https://github.com/kubeflow/pipelines/commit/35041ef2bd4d9b3261f1250f5803786ed9e453fe))
* **sdk:** Add SDK support for setting resource limits on older KFP versions ([\#11839](https://github.com/kubeflow/pipelines/issues/11839)) ([f9d487c](https://github.com/kubeflow/pipelines/commit/f9d487cb605727f357f58783db298d96898b24d1))
* **sdk:** allow google-cloud-storage < 4 ([\#11735](https://github.com/kubeflow/pipelines/issues/11735)) ([bd4fc5c](https://github.com/kubeflow/pipelines/commit/bd4fc5c6677402d5f2d9ac45481ac86f25da4640))
* **sdk:** avoid conflicting component names in DAG when reusing pipelines ([\#11071](https://github.com/kubeflow/pipelines/issues/11071)) ([d1b15ef](https://github.com/kubeflow/pipelines/commit/d1b15ef4da33cbeafa491564318c7e2a68dc431f))
* **tests:** free up space in some test runners ([\#11818](https://github.com/kubeflow/pipelines/issues/11818)) ([478ca08](https://github.com/kubeflow/pipelines/commit/478ca089012e64edd371feff4ece9d0d156d4710))
* minio fsgroup for popular clusters ([\#11734](https://github.com/kubeflow/pipelines/issues/11734)) ([8d0ae53](https://github.com/kubeflow/pipelines/commit/8d0ae5381e8366905c90009c56fd0e4807e94f0f))
### Other Pull Requests
* Fix Integration tests ([0359551](https://github.com/kubeflow/pipelines/commit/0359551b7601165ba8bf7cc24fdc1858224c0d2d))
* add list or dict support for add toleration json ([fb18235](https://github.com/kubeflow/pipelines/commit/fb182355f08e41eff1ac530be1afac0bad69e15d))
* add backend support for toleration lists. ([90909fc](https://github.com/kubeflow/pipelines/commit/90909fc0ef58b71362017a3e48c924b38c389183))
* switch selenium image to ghcr ([7529bbe](https://github.com/kubeflow/pipelines/commit/7529bbeba7f245366ca1cbc280169e20a7100a6a))
* add missing release note updates to sdk main branch ([\#11842](https://github.com/kubeflow/pipelines/issues/11842)) ([611d582](https://github.com/kubeflow/pipelines/commit/611d5820049dc51ddf261d7d1368c4858dad5159))
* fix component retry test ([\#11836](https://github.com/kubeflow/pipelines/issues/11836)) ([598826e](https://github.com/kubeflow/pipelines/commit/598826e1ccfecb5f34716876053a22cdc6605ae4))
* **chore:** add cleanup resources to sdk execution tests ([\#11823](https://github.com/kubeflow/pipelines/issues/11823)) ([eee4986](https://github.com/kubeflow/pipelines/commit/eee4986f180cd4e7469a65a3c5f4ffbf3ec0b46c))
* update driver & launcher image handling ([\#11533](https://github.com/kubeflow/pipelines/issues/11533)) ([38a4653](https://github.com/kubeflow/pipelines/commit/38a46533fcd47aa31e825109e2bf6940d127910a))
* **chore:** add image builds for default branch ([\#11800](https://github.com/kubeflow/pipelines/issues/11800)) ([eacb586](https://github.com/kubeflow/pipelines/commit/eacb586f6225bb277642f4977552f799850e06a1))
* fix setup env for kfp k8s lib tests ([\#11798](https://github.com/kubeflow/pipelines/issues/11798)) ([f10c7bf](https://github.com/kubeflow/pipelines/commit/f10c7bfbbcf01eb25f2fa8a437da62bbf07dc1f5))
* Handle optional pipeline inputs in the driver ([\#11788](https://github.com/kubeflow/pipelines/issues/11788)) ([bb7a108](https://github.com/kubeflow/pipelines/commit/bb7a1082c4c5a3fb308aac2bf37bab476c3c4df6))
* Fix recurring run output when always using latest ([\#11790](https://github.com/kubeflow/pipelines/issues/11790)) ([048f283](https://github.com/kubeflow/pipelines/commit/048f28332b6a0b6684632e76dcb284de2f81d829))
* increase stale action timers ([\#11792](https://github.com/kubeflow/pipelines/issues/11792)) ([ade8a2d](https://github.com/kubeflow/pipelines/commit/ade8a2d072efa9897a5a0173316836236d629238))
* Fix PSS restricted warnings ([\#11751](https://github.com/kubeflow/pipelines/issues/11751)) ([01999b8](https://github.com/kubeflow/pipelines/commit/01999b8fea23db52da0f633e475c457fc06ca531))
* fix(CI) Github action is vulnerable to code execution via `comment body` ([\#11772](https://github.com/kubeflow/pipelines/issues/11772)) ([95c3f2c](https://github.com/kubeflow/pipelines/commit/95c3f2c04d8f19b8b656ddbda046ed9f2c81130a))
* Fix Istio sidecar injection by moving from annotations to labels ([\#11750](https://github.com/kubeflow/pipelines/issues/11750)) ([df4e9c2](https://github.com/kubeflow/pipelines/commit/df4e9c2bf5b645f4a3fa831b073846eae5eaceb7))
## [2.5.0](https://github.com/kubeflow/pipelines/compare/2.3.0...2.5.0) (2025-04-28)
### ⚠ BREAKING CHANGES
* **sdk:** stop auto-populating metrics as dag output ([\#11362](https://github.com/kubeflow/pipelines/issues/11362))
* **components:** Deprecate preview.custom_job module
* **sdk:** Pin kfp-pipeline-spec==0.4.0, kfp-server-api>=2.1.0,<2.4.0 ([\#11192](https://github.com/kubeflow/pipelines/issues/11192))
### Features
* **api:** add PipelineConfig to api to re-implement pipeline-level config ([\#11333](https://github.com/kubeflow/pipelines/issues/11333)) ([c2f5649](https://github.com/kubeflow/pipelines/commit/c2f56495b9b1e9eda1b44b6106e12d5290a89ed7))
* **api:** Add SemaphoreKey and MutexName fields to proto ([\#11384](https://github.com/kubeflow/pipelines/issues/11384)) ([915cc55](https://github.com/kubeflow/pipelines/commit/915cc552f56359454b91870df0e5eea1ecda2218))
* **backend:** Add a mutating webhook for the PipelineVersion kind ([\#11782](https://github.com/kubeflow/pipelines/issues/11782)) ([c9be64d](https://github.com/kubeflow/pipelines/commit/c9be64dca362a33dcfad186fe579066a646a6df1))
* **backend:** add configurable S3 path style support ([\#11246](https://github.com/kubeflow/pipelines/issues/11246)) ([85fdd73](https://github.com/kubeflow/pipelines/commit/85fdd73ae0bb1c2ce01da6311807b37cfc589710))
* **backend:** Add Parallelism Limit to ParallelFor tasks. Fixes [\#8718](https://github.com/kubeflow/pipelines/issues/8718) ([\#10798](https://github.com/kubeflow/pipelines/issues/10798)) ([b7d8c97](https://github.com/kubeflow/pipelines/commit/b7d8c97d65af575b71efe6755eb67b0bb9126f01))
* **backend:** Add support for importing models stored in the Modelcar format (sidecar) ([\#11606](https://github.com/kubeflow/pipelines/issues/11606)) ([cc1c435](https://github.com/kubeflow/pipelines/commit/cc1c435f1e06aad3e9b83e57768512a63460b15b))
* **backend:** Add support for job and task placeholders in the KFP backend ([\#11599](https://github.com/kubeflow/pipelines/issues/11599)) ([6a13f4b](https://github.com/kubeflow/pipelines/commit/6a13f4bad07e5a22006b73b21515df9d597222f0))
* **backend:** add support for uploading new sample pipeline vers ([\#11553](https://github.com/kubeflow/pipelines/issues/11553)) ([d2ddb2e](https://github.com/kubeflow/pipelines/commit/d2ddb2ed1c2afa64fd6014c95190416ff5cdd621))
* **backend:** Add the ability to set a proxy for accessing external resources ([\#11771](https://github.com/kubeflow/pipelines/issues/11771)) ([6e3548f](https://github.com/kubeflow/pipelines/commit/6e3548f33e226ba374e4d43a175ae8ac9018e268))
* **backend:** Add types for KFP Kubernete Native API ([\#11672](https://github.com/kubeflow/pipelines/issues/11672)) ([0d9a7b0](https://github.com/kubeflow/pipelines/commit/0d9a7b00e926130b07058ea71148fbb9cab69d2b))
* **backend:** Allow recurring runs to always use the latest pipeline version ([\#11560](https://github.com/kubeflow/pipelines/issues/11560)) ([9c5b72c](https://github.com/kubeflow/pipelines/commit/9c5b72c2d0b298fc1b6c984e135b74e7a736a7b9))
* **backend:** configurable log level for driver / launcher images ([\#11278](https://github.com/kubeflow/pipelines/issues/11278)) ([d2c0376](https://github.com/kubeflow/pipelines/commit/d2c0376b0aff70304fe049c415dc97a22d883966))
* **backend:** Create a validating webhook for the PipelineVersion kind ([\#11774](https://github.com/kubeflow/pipelines/issues/11774)) ([2efcde5](https://github.com/kubeflow/pipelines/commit/2efcde5efd3952b91ea79a5ee6dbf064282f719a))
* **backend:** implement logs as artifacts ([\#11762](https://github.com/kubeflow/pipelines/issues/11762)) ([cd3e747](https://github.com/kubeflow/pipelines/commit/cd3e747b5de3d7e1e338e309cc57311dd4a91258))
* **backend:** implement logs as artifacts + CI updates ([\#11809](https://github.com/kubeflow/pipelines/issues/11809)) ([464ca39](https://github.com/kubeflow/pipelines/commit/464ca3974fbbc46e022f863e49c4fbaabd1a8265))
* **backend:** implement subdag output resolution ([\#11196](https://github.com/kubeflow/pipelines/issues/11196)) ([c5b787a](https://github.com/kubeflow/pipelines/commit/c5b787aacc4fddeeb1ebc526a83159540cd7b311))
* **backend:** Remove PipelineSpec Template storage from ObjStore responsibilies. Fixes [\#10509](https://github.com/kubeflow/pipelines/issues/10509) ([\#10790](https://github.com/kubeflow/pipelines/issues/10790)) ([374b18b](https://github.com/kubeflow/pipelines/commit/374b18bc3366a51f4b92821cdb3a942bc12343a0))
* **backend/sdk:** Add input parameterization for various k8s resources ([\#11770](https://github.com/kubeflow/pipelines/issues/11770)) ([fd1b48b](https://github.com/kubeflow/pipelines/commit/fd1b48b4712038afe8a78e37843672d4773dc080))
* **cli:** expose existing_token client property ([\#11400](https://github.com/kubeflow/pipelines/issues/11400)) ([35793be](https://github.com/kubeflow/pipelines/commit/35793be4168584b1084169b723bfb216aa4a03b6))
* **component:** Created Snowflake data unload component ([\#11349](https://github.com/kubeflow/pipelines/issues/11349)) ([22e7780](https://github.com/kubeflow/pipelines/commit/22e77805ed41a72837f7cd15a9d679f42169b253))
* **component:** execute in a virtual env ([\#11326](https://github.com/kubeflow/pipelines/issues/11326)) ([df28e89](https://github.com/kubeflow/pipelines/commit/df28e891c4374f7eac98cc6a4892b6e6c35a43f2))
* **components:** Add reservation_affinity support in v1.create_custom_training_job_from_component ([c84241b](https://github.com/kubeflow/pipelines/commit/c84241b7362c0351109bc0ddbc2f697479ff8675))
* **components:** add strategy to v1 GCPC custom job components/utils ([1cdd648](https://github.com/kubeflow/pipelines/commit/1cdd648239ff850bf5baae48e4e7bd1b24330dd5))
* **components:** Deprecate preview.custom_job module ([abbd915](https://github.com/kubeflow/pipelines/commit/abbd915a2ac32b22151efef662b937601602ba9d))
* **components:** Fix typos: 'statgey' -> 'strategy'in v1 GCPC custom job components/utils ([dcaf5a4](https://github.com/kubeflow/pipelines/commit/dcaf5a48e5feae6e61de6c033bee5f8f6675a630))
* **components:** Introduce max_wait_duration to custom job to v1 GCPC custom job components/utils ([6cb7cf7](https://github.com/kubeflow/pipelines/commit/6cb7cf71fa81cc27e87a002f3d7685d9fc828d88))
* **docs:** Add architecture diagram ([\#11490](https://github.com/kubeflow/pipelines/issues/11490)) ([3e423d8](https://github.com/kubeflow/pipelines/commit/3e423d8d1c0f8f7700a4b2138d8e9bd20a02a9f2))
* **docs:** Replace ADRs with KEPs for documentation ([\#11535](https://github.com/kubeflow/pipelines/issues/11535)) ([7497b65](https://github.com/kubeflow/pipelines/commit/7497b65067aa1e596605c03e8dc4c07c963f907b))
* **frontend/backend:** Allow the ability to sort experiments by last run creation. Fixes [\#10884](https://github.com/kubeflow/pipelines/issues/10884) ([\#11163](https://github.com/kubeflow/pipelines/issues/11163)) ([db8669c](https://github.com/kubeflow/pipelines/commit/db8669c33e60bb8910710359c0638d21ec27ac7c))
* **proto:** Add TTL fields to KFP IR yaml proto ([\#11758](https://github.com/kubeflow/pipelines/issues/11758)) ([c5aba41](https://github.com/kubeflow/pipelines/commit/c5aba41bcaf3c214d984db4571c1ecae4a0d551d))
* **sdk:** Add Input Parameter support for configmap, secrets, node selectors, tolerations, pull secrets ([\#11621](https://github.com/kubeflow/pipelines/issues/11621)) ([7838009](https://github.com/kubeflow/pipelines/commit/78380095385be25e69b891ccb312b2857a200fdd))
* **sdk:** add upload pipeline and upload pipeline version from pipeline function ([\#11804](https://github.com/kubeflow/pipelines/issues/11804)) ([1ad4f60](https://github.com/kubeflow/pipelines/commit/1ad4f608a0b9dea2362cf89f9cf7abdebf20e080))
* Introduce cache_key for cache key customization ([\#11434](https://github.com/kubeflow/pipelines/issues/11434)) ([50b367f](https://github.com/kubeflow/pipelines/commit/50b367f232b2d37b762745c8b4296a29c9d8fd45))
* Introduce cache_key to sdk ([\#11466](https://github.com/kubeflow/pipelines/issues/11466)) ([42fc132](https://github.com/kubeflow/pipelines/commit/42fc13261628d764296607d9e12ecad13e721a68))
* **sdk:** add PipelineConfig to DSL to re-implement pipeline-level config ([\#11112](https://github.com/kubeflow/pipelines/issues/11112)) ([df4d787](https://github.com/kubeflow/pipelines/commit/df4d7878c4ce25c801a916351bcbce1266a9daf1))
* **sdk:** Allow disabling default caching via a CLI flag and env var ([\#11222](https://github.com/kubeflow/pipelines/issues/11222)) ([3f49522](https://github.com/kubeflow/pipelines/commit/3f495229f26ef08360048d050dfe014ca4b57b4f))
* **sdk:** Pin kfp-pipeline-spec==0.4.0, kfp-server-api>=2.1.0,<2.4.0 ([\#11192](https://github.com/kubeflow/pipelines/issues/11192)) ([dfd4cc1](https://github.com/kubeflow/pipelines/commit/dfd4cc1e537523b04b01b6e209b5760bd2a007d5))
* **sdk:** stop auto-populating metrics as dag output ([\#11362](https://github.com/kubeflow/pipelines/issues/11362)) ([8d018af](https://github.com/kubeflow/pipelines/commit/8d018aff6ed14b5bed7b3f90d9f450b3144ae18e))
* **sdk:** support dynamic machine type parameters in pipeline task setters ([\#11097](https://github.com/kubeflow/pipelines/issues/11097)) ([70aaf8a](https://github.com/kubeflow/pipelines/commit/70aaf8a9a469607dc6e4aad58d40b39c75363b99))
* **sdk/backend:** Add support for placeholders in resource limits ([\#11501](https://github.com/kubeflow/pipelines/issues/11501)) ([7c931ae](https://github.com/kubeflow/pipelines/commit/7c931ae20197b2309d7a8462f6ce099882a8f915))
* **sdk/backend:** enable parameterization of container images ([\#11404](https://github.com/kubeflow/pipelines/issues/11404)) ([22e85de](https://github.com/kubeflow/pipelines/commit/22e85de2bcbd2ff5ed2a099e4f11a39ff27e4190))
* **testing:** use kustomize to patch deployments before deploy ([\#11294](https://github.com/kubeflow/pipelines/issues/11294)) ([be863a8](https://github.com/kubeflow/pipelines/commit/be863a852997718701a1ee548d9db86dca7ffc33))
* add fields in SinglePlatformSpec ([\#11299](https://github.com/kubeflow/pipelines/issues/11299)) ([a0d313e](https://github.com/kubeflow/pipelines/commit/a0d313e095c2b5fc1a32809c38cf96b13e5772b2))
* **workflows:** use built images in Github workflows ([\#11284](https://github.com/kubeflow/pipelines/issues/11284)) ([1550b36](https://github.com/kubeflow/pipelines/commit/1550b363aed3745b476d2b3798725432329e8cea))
### Bug Fixes
* **backend:** Allow initializing the Kubernetes client with a kubeconfig ([\#11443](https://github.com/kubeflow/pipelines/issues/11443)) ([87bdb7c](https://github.com/kubeflow/pipelines/commit/87bdb7c3b1126ae5e899826be0834c11764edbae))
* **backend:** Fix enable_caching issues when handling PVC creation/deletion ([\#11411](https://github.com/kubeflow/pipelines/issues/11411)) ([027ca8b](https://github.com/kubeflow/pipelines/commit/027ca8b9c9fe2bb603b2a08c843e726ed4837a1d))
* **backend:** Fix run submissions with OwnerReferencesPermissionEnforcement on ([\#11821](https://github.com/kubeflow/pipelines/issues/11821)) ([69ba50b](https://github.com/kubeflow/pipelines/commit/69ba50b3fb03bd8441f833950a6c77835a2d47a1))
* **backend:** fixed Dockerfile ([\#11841](https://github.com/kubeflow/pipelines/issues/11841)) ([d38418e](https://github.com/kubeflow/pipelines/commit/d38418efeadec3ea3bea55b3373bcc311dacc135))
* **backend:** fixes DAG status update to reflect completion of all tasks ([\#11651](https://github.com/kubeflow/pipelines/issues/11651)) ([7719b38](https://github.com/kubeflow/pipelines/commit/7719b38061d489246294bd53b49aacfc105c8a19))
* **backend:** handle client side HTTP timeouts to fix crashes of metadata-writer. Fixes [\#8200](https://github.com/kubeflow/pipelines/issues/8200) ([\#11361](https://github.com/kubeflow/pipelines/issues/11361)) ([94a21cc](https://github.com/kubeflow/pipelines/commit/94a21cc7e27a3824732e7f4c09a4d8b826dde5b8))
* **backend:** ignore unknown fields for pb json unmarshaling ([\#11662](https://github.com/kubeflow/pipelines/issues/11662)) ([9afe23e](https://github.com/kubeflow/pipelines/commit/9afe23e74866f30f7333ea47abfe2d9efa4098c7))
* **backend:** Include missing go.mod for cacheserver/viewercontroller images ([\#11776](https://github.com/kubeflow/pipelines/issues/11776)) ([715ed40](https://github.com/kubeflow/pipelines/commit/715ed40b92f9bca521f94e0df5201425d9d30866))
* **backend:** modelToCRDTrigger was not including periodic schedule correctly ([\#11475](https://github.com/kubeflow/pipelines/issues/11475)) ([97acacb](https://github.com/kubeflow/pipelines/commit/97acacbd2a0b72d442398ca04382ac1e6d9aa37f))
* **backend:** parallelFor resolve upstream inputs. Fixes [\#11520](https://github.com/kubeflow/pipelines/issues/11520) ([\#11627](https://github.com/kubeflow/pipelines/issues/11627)) ([f7c0616](https://github.com/kubeflow/pipelines/commit/f7c0616db75ac92581f973e8f05f962b965255b1))
* **backend:** randomizing output uri path to avoid overwriting. Fixes [\#10186](https://github.com/kubeflow/pipelines/issues/10186) ([\#11243](https://github.com/kubeflow/pipelines/issues/11243)) ([219725d](https://github.com/kubeflow/pipelines/commit/219725d9f02b690cf0829a21faf092a3e4c65531))
* **backend:** remove unused function argument ([\#11425](https://github.com/kubeflow/pipelines/issues/11425)) ([7f2278f](https://github.com/kubeflow/pipelines/commit/7f2278f25222992bedfcae5b613a7a06430f4542))
* **backend:** removed old version comment ([\#11549](https://github.com/kubeflow/pipelines/issues/11549)) ([906b5c0](https://github.com/kubeflow/pipelines/commit/906b5c084146506e71685d2324566bd15dc25bec))
* **backend:** Replaced hardcoded ServiceAccount with default config ([\#11578](https://github.com/kubeflow/pipelines/issues/11578)) ([18641e1](https://github.com/kubeflow/pipelines/commit/18641e16cbac7512f8f63f001acafd8a0bf52924))
* **backend:** return error properly ([\#11424](https://github.com/kubeflow/pipelines/issues/11424)) ([13f83cf](https://github.com/kubeflow/pipelines/commit/13f83cf745eb5628d6ae5b25c1ca979d8c6d92ad))
* **backend:** set default value to true for ForcePathStyle ([\#11281](https://github.com/kubeflow/pipelines/issues/11281)) ([391de8c](https://github.com/kubeflow/pipelines/commit/391de8ca9ec68fe4cd85bba6c82348386fc79842))
* **backend:** stop heartbeat status updates for ScheduledWorkflows. Fixes [\#8757](https://github.com/kubeflow/pipelines/issues/8757) ([\#11363](https://github.com/kubeflow/pipelines/issues/11363)) ([9ccec4c](https://github.com/kubeflow/pipelines/commit/9ccec4c7d1aff4d2bfdb20cf4fd1f9d64b8632f4))
* **backend:** Synced ScheduledWorkflow CRs on apiserver startup ([\#11469](https://github.com/kubeflow/pipelines/issues/11469)) ([d21fca6](https://github.com/kubeflow/pipelines/commit/d21fca650c8152d992ad5f7f590f70b1368bc60b))
* **backend:** the metacontroller is broken since [\#11474](https://github.com/kubeflow/pipelines/issues/11474) ([\#11608](https://github.com/kubeflow/pipelines/issues/11608)) ([a40163f](https://github.com/kubeflow/pipelines/commit/a40163fdf2fe281cda91baf2f122c23664d5fcb9))
* **backend:** upgrade go version to 1.22.12 to fix CVE-2024-45336 ([\#11631](https://github.com/kubeflow/pipelines/issues/11631)) ([87498e8](https://github.com/kubeflow/pipelines/commit/87498e8b60a167eccfef7cc29f888808ca954155))
* **backend:** upgrade PyYMAL to fix metadata_writer build error ([\#11231](https://github.com/kubeflow/pipelines/issues/11231)) ([a4119a6](https://github.com/kubeflow/pipelines/commit/a4119a6bf1fe220c84aaa5caa7051c423b5f145e))
* **backend:** upgrade various old dependencies ([\#11448](https://github.com/kubeflow/pipelines/issues/11448)) ([803d7a8](https://github.com/kubeflow/pipelines/commit/803d7a8ebb00924107b890de01e2a53af78d9a5e))
* **backend:** Use an Argo Workflow exit lifecycle hook for exit handlers ([\#11470](https://github.com/kubeflow/pipelines/issues/11470)) ([3059f7c](https://github.com/kubeflow/pipelines/commit/3059f7c124dc95f867e6f755f7c0720aaa32d48b))
* **CI:** Use the correct image registry for replacements in integration tests ([\#11564](https://github.com/kubeflow/pipelines/issues/11564)) ([ac9b257](https://github.com/kubeflow/pipelines/commit/ac9b257a7a249c4b4c20b04d4c95ff8354c5b4e0))
* **components:** Fix create_custom_training_job_from_component default location ([04d600b](https://github.com/kubeflow/pipelines/commit/04d600b2d36405f34799306c5d24287c75e31595))
* **components:** remove default prediction column names in evaluation regression component to fix issues with bigquery data source ([753a2f1](https://github.com/kubeflow/pipelines/commit/753a2f148ac3f001bc785acc6359295e6fe521fd))
* **components:** Set tensorboard_experiment_name to random uuid when uploading plots in Starry Net pipeline ([cc56d04](https://github.com/kubeflow/pipelines/commit/cc56d04c46d01666a8e091b124473c2654e1b6d3))
* **deployment:** Update kustomize manifests to use new label and patch syntax ([\#11733](https://github.com/kubeflow/pipelines/issues/11733)) ([230c1b8](https://github.com/kubeflow/pipelines/commit/230c1b8f1332ffab575b2e69b65d9a6958167195))
* **deps:** widen urllib3 upper bound to <3.0.0 ([\#11819](https://github.com/kubeflow/pipelines/issues/11819)) ([866ff35](https://github.com/kubeflow/pipelines/commit/866ff3556a4454ccb52f1594bbca4167a04c0d3e))
* **docs:** Remove Podman as backend README pre-req ([\#11824](https://github.com/kubeflow/pipelines/issues/11824)) ([88cff55](https://github.com/kubeflow/pipelines/commit/88cff559142e5a985cf31620f07b71244645cb4a))
* **docs:** Use the latest driver and launcher images in the dev environment ([\#11820](https://github.com/kubeflow/pipelines/issues/11820)) ([92e4921](https://github.com/kubeflow/pipelines/commit/92e4921c4cce8155093bf7e332abfbf03bd6eaef))
* **frontend:** compatibility with pod_names v1 ([\#11682](https://github.com/kubeflow/pipelines/issues/11682)) ([afb3b14](https://github.com/kubeflow/pipelines/commit/afb3b1461bdd8c4d4cbc697abe1d7d1acfcdc38f))
* **frontend:** Detailed information of nodes is not displayed when clicking the node. Fixes [\#11325](https://github.com/kubeflow/pipelines/issues/11325) ([\#11493](https://github.com/kubeflow/pipelines/issues/11493)) ([028d81b](https://github.com/kubeflow/pipelines/commit/028d81b624629d4610ddcdced5b982437ff88d08))
* **frontend:** first time choosing a pipeline definition is VERY slow. Fixes [\#10897](https://github.com/kubeflow/pipelines/issues/10897) ([\#11130](https://github.com/kubeflow/pipelines/issues/11130)) ([cfb3b31](https://github.com/kubeflow/pipelines/commit/cfb3b3149d9ba02daec584af77ef763f936cd727))
* **frontend:** Fix the frontend image build with Node 22 ([\#11524](https://github.com/kubeflow/pipelines/issues/11524)) ([533a3c6](https://github.com/kubeflow/pipelines/commit/533a3c6b667eb11b9cd7da2f6fe334252867fcc5))
* **frontend:** fixes Default pipeline input params are missing from the GUI. Fixes [\#11515](https://github.com/kubeflow/pipelines/issues/11515) ([\#11518](https://github.com/kubeflow/pipelines/issues/11518)) ([8fe2157](https://github.com/kubeflow/pipelines/commit/8fe21574c644543fef55a2d515681d23fdfce508))
* **frontend:** fixes optional pipeline inputs. Fixes [\#11632](https://github.com/kubeflow/pipelines/issues/11632) ([\#11657](https://github.com/kubeflow/pipelines/issues/11657)) ([a6b944b](https://github.com/kubeflow/pipelines/commit/a6b944b894a4a297a6310f5028a8c27e3603ac16))
* **frontend:** restrict file explorer to show only .yaml, .yml, .zip, and .tar.gz files ([\#11623](https://github.com/kubeflow/pipelines/issues/11623)) ([c0778ba](https://github.com/kubeflow/pipelines/commit/c0778ba88c359d119453c2acc94c0168b3f53772))
* **local:** warn about oci:// not supported too ([\#11794](https://github.com/kubeflow/pipelines/issues/11794)) ([564522c](https://github.com/kubeflow/pipelines/commit/564522c42de9136dec67f1bf29590bdd64bf2333))
* **manifests:** Upgrading metacontroller to v4.11.22 ([\#11656](https://github.com/kubeflow/pipelines/issues/11656)) ([ebaaf75](https://github.com/kubeflow/pipelines/commit/ebaaf756319ac4ac9498aca5f7dfb3978ff36496))
* **metadata-writer:** use mlmd_store.get_context_types() instead of workaround ([\#11753](https://github.com/kubeflow/pipelines/issues/11753)) ([35041ef](https://github.com/kubeflow/pipelines/commit/35041ef2bd4d9b3261f1250f5803786ed9e453fe))
* **sdk:** accelerator type setting in kfp ([\#11373](https://github.com/kubeflow/pipelines/issues/11373)) ([64e3900](https://github.com/kubeflow/pipelines/commit/64e390069d6c60c97ea03e833529a0930398620f))
* **sdk:** Add error handling. Fixes [\#11164](https://github.com/kubeflow/pipelines/issues/11164) ([\#11356](https://github.com/kubeflow/pipelines/issues/11356)) ([4a64fe9](https://github.com/kubeflow/pipelines/commit/4a64fe9532556a48585b9966db8e10c7de0a8d37))
* **sdk:** Add SDK support for setting resource limits on older KFP versions ([\#11839](https://github.com/kubeflow/pipelines/issues/11839)) ([f9d487c](https://github.com/kubeflow/pipelines/commit/f9d487cb605727f357f58783db298d96898b24d1))
* **sdk:** allow google-cloud-storage < 4 ([\#11735](https://github.com/kubeflow/pipelines/issues/11735)) ([bd4fc5c](https://github.com/kubeflow/pipelines/commit/bd4fc5c6677402d5f2d9ac45481ac86f25da4640))
* **sdk:** avoid conflicting component names in DAG when reusing pipelines ([\#11071](https://github.com/kubeflow/pipelines/issues/11071)) ([d1b15ef](https://github.com/kubeflow/pipelines/commit/d1b15ef4da33cbeafa491564318c7e2a68dc431f))
* **sdk:** Backport fixes in kubeflow/pipelines#11075 ([\#11392](https://github.com/kubeflow/pipelines/issues/11392)) ([6ebf4aa](https://github.com/kubeflow/pipelines/commit/6ebf4aae0335424d3bc88175fd06a2b2ba05251f))
* **sdk:** dsl.component docstring typo ([\#11547](https://github.com/kubeflow/pipelines/issues/11547)) ([dbefbb8](https://github.com/kubeflow/pipelines/commit/dbefbb8ee935d8c2e86090121274e5d94dddf84e))
* **tests:** free up space in some test runners ([\#11818](https://github.com/kubeflow/pipelines/issues/11818)) ([478ca08](https://github.com/kubeflow/pipelines/commit/478ca089012e64edd371feff4ece9d0d156d4710))
* Extend env variables in ml-pipeline-ui deployment ([\#11552](https://github.com/kubeflow/pipelines/issues/11552)) ([a469b10](https://github.com/kubeflow/pipelines/commit/a469b10806a02ed01f6d7d08cdd90e8fc44b8a86))
* minio fsgroup for popular clusters ([\#11734](https://github.com/kubeflow/pipelines/issues/11734)) ([8d0ae53](https://github.com/kubeflow/pipelines/commit/8d0ae5381e8366905c90009c56fd0e4807e94f0f))
* Update broken api-connect link ([\#11521](https://github.com/kubeflow/pipelines/issues/11521)) ([a81b513](https://github.com/kubeflow/pipelines/commit/a81b51339c650b8b1fca9eeb7a2932bdfaab409f))
* **tests:** remove redundant integration test wf ([\#11322](https://github.com/kubeflow/pipelines/issues/11322)) ([6a35ee5](https://github.com/kubeflow/pipelines/commit/6a35ee5144fba1c72badc7c52161d8a49f34804e))
* **ui:** Disable GKE Metadata as default Fixes: [\#11247](https://github.com/kubeflow/pipelines/issues/11247), fixes [\#11260](https://github.com/kubeflow/pipelines/issues/11260) ([\#11403](https://github.com/kubeflow/pipelines/issues/11403)) ([23f718d](https://github.com/kubeflow/pipelines/commit/23f718d02e402bad5c9da1a3d76da5c4a97743b3))
* **ui:** Fixes V1 Run detail unnecessary reloading. Fixes [\#10590](https://github.com/kubeflow/pipelines/issues/10590) ([\#11214](https://github.com/kubeflow/pipelines/issues/11214)) ([eee095e](https://github.com/kubeflow/pipelines/commit/eee095e5c8d53c0eae45165f72549afe5a5cb0e3))
* **workflows:** patch reversed launcher / driver in workflow matrix ([\#11238](https://github.com/kubeflow/pipelines/issues/11238)) ([ceeda01](https://github.com/kubeflow/pipelines/commit/ceeda01d0a35bd84b79d8f2e7aa2e029cb1de06b))
### Other Pull Requests
* Fix Integration tests ([0359551](https://github.com/kubeflow/pipelines/commit/0359551b7601165ba8bf7cc24fdc1858224c0d2d))
* add list or dict support for add toleration json ([fb18235](https://github.com/kubeflow/pipelines/commit/fb182355f08e41eff1ac530be1afac0bad69e15d))
* add backend support for toleration lists. ([90909fc](https://github.com/kubeflow/pipelines/commit/90909fc0ef58b71362017a3e48c924b38c389183))
* switch selenium image to ghcr ([7529bbe](https://github.com/kubeflow/pipelines/commit/7529bbeba7f245366ca1cbc280169e20a7100a6a))
* add missing release note updates to sdk main branch ([\#11842](https://github.com/kubeflow/pipelines/issues/11842)) ([611d582](https://github.com/kubeflow/pipelines/commit/611d5820049dc51ddf261d7d1368c4858dad5159))
* fix component retry test ([\#11836](https://github.com/kubeflow/pipelines/issues/11836)) ([598826e](https://github.com/kubeflow/pipelines/commit/598826e1ccfecb5f34716876053a22cdc6605ae4))
* **chore:** add cleanup resources to sdk execution tests ([\#11823](https://github.com/kubeflow/pipelines/issues/11823)) ([eee4986](https://github.com/kubeflow/pipelines/commit/eee4986f180cd4e7469a65a3c5f4ffbf3ec0b46c))
* update driver & launcher image handling ([\#11533](https://github.com/kubeflow/pipelines/issues/11533)) ([38a4653](https://github.com/kubeflow/pipelines/commit/38a46533fcd47aa31e825109e2bf6940d127910a))
* **chore:** add image builds for default branch ([\#11800](https://github.com/kubeflow/pipelines/issues/11800)) ([eacb586](https://github.com/kubeflow/pipelines/commit/eacb586f6225bb277642f4977552f799850e06a1))
* fix setup env for kfp k8s lib tests ([\#11798](https://github.com/kubeflow/pipelines/issues/11798)) ([f10c7bf](https://github.com/kubeflow/pipelines/commit/f10c7bfbbcf01eb25f2fa8a437da62bbf07dc1f5))
* Handle optional pipeline inputs in the driver ([\#11788](https://github.com/kubeflow/pipelines/issues/11788)) ([bb7a108](https://github.com/kubeflow/pipelines/commit/bb7a1082c4c5a3fb308aac2bf37bab476c3c4df6))
* Fix recurring run output when always using latest ([\#11790](https://github.com/kubeflow/pipelines/issues/11790)) ([048f283](https://github.com/kubeflow/pipelines/commit/048f28332b6a0b6684632e76dcb284de2f81d829))
* increase stale action timers ([\#11792](https://github.com/kubeflow/pipelines/issues/11792)) ([ade8a2d](https://github.com/kubeflow/pipelines/commit/ade8a2d072efa9897a5a0173316836236d629238))
* Fix PSS restricted warnings ([\#11751](https://github.com/kubeflow/pipelines/issues/11751)) ([01999b8](https://github.com/kubeflow/pipelines/commit/01999b8fea23db52da0f633e475c457fc06ca531))
* fix(CI) Github action is vulnerable to code execution via `comment body` ([\#11772](https://github.com/kubeflow/pipelines/issues/11772)) ([95c3f2c](https://github.com/kubeflow/pipelines/commit/95c3f2c04d8f19b8b656ddbda046ed9f2c81130a))
* Fix Istio sidecar injection by moving from annotations to labels ([\#11750](https://github.com/kubeflow/pipelines/issues/11750)) ([df4e9c2](https://github.com/kubeflow/pipelines/commit/df4e9c2bf5b645f4a3fa831b073846eae5eaceb7))
* remove unused function ([\#11719](https://github.com/kubeflow/pipelines/issues/11719)) ([89c8bd7](https://github.com/kubeflow/pipelines/commit/89c8bd7274e2d3141a48045427f12faa4e52f029))
* fix(backend) fix execution-level retry on the Argo Workflows backend ([\#11673](https://github.com/kubeflow/pipelines/issues/11673)) ([30210e3](https://github.com/kubeflow/pipelines/commit/30210e33bf257ff06727550d1c59e6bcc7158ab7))
* Ignore empty PULL_NUMBER environment variables in SDK tests ([\#11714](https://github.com/kubeflow/pipelines/issues/11714)) ([a7ec34f](https://github.com/kubeflow/pipelines/commit/a7ec34f571c367e9f1957019992f3823865f4a5c))
* Fix format string in get_kfp_package_path ([\#11712](https://github.com/kubeflow/pipelines/issues/11712)) ([7d8e921](https://github.com/kubeflow/pipelines/commit/7d8e9211f6625d76958023535967bf37b36d9b7a))
* Use the correct SDK version in the SDK execution tests CI ([\#11683](https://github.com/kubeflow/pipelines/issues/11683)) ([355f78c](https://github.com/kubeflow/pipelines/commit/355f78c51b084026b8e01db16a06cb93515ff67a))
* Limit the number of parallel tests in SDK execution tests ([\#11680](https://github.com/kubeflow/pipelines/issues/11680)) ([976fba8](https://github.com/kubeflow/pipelines/commit/976fba871fa2331c44ab9723744791051c8f9732))
* Allow system.Model artifacts in the Modelcar format ([\#11674](https://github.com/kubeflow/pipelines/issues/11674)) ([0afb12d](https://github.com/kubeflow/pipelines/commit/0afb12d6a7fcce6e06a8991a228a0bebf734dabf))
* (test) : Collect and upload logs when test fails for k8s ([\#11618](https://github.com/kubeflow/pipelines/issues/11618)) ([8ca7ec1](https://github.com/kubeflow/pipelines/commit/8ca7ec1768f82f50b3b46606f39632eab11b8fe6))
* fix(backend) fix run retry for argo ([\#11585](https://github.com/kubeflow/pipelines/issues/11585)) ([b131566](https://github.com/kubeflow/pipelines/commit/b1315667be8f03973898113b3204e375d1f015a4))
* Refer to central KEP template ([\#11593](https://github.com/kubeflow/pipelines/issues/11593)) ([7bb0c44](https://github.com/kubeflow/pipelines/commit/7bb0c448cd17953d96e46dcd73972b52b35f5789))
* [chore][backend] Add workflow to validate affected generated files ([\#11539](https://github.com/kubeflow/pipelines/issues/11539)) ([22c3724](https://github.com/kubeflow/pipelines/commit/22c372437d76e5bbaec5a65c884384dbcabe2d55))
* chor(test) : Fix kfp-sdk-test for different python versions ([\#11559](https://github.com/kubeflow/pipelines/issues/11559)) ([926aec5](https://github.com/kubeflow/pipelines/commit/926aec55d491eb9fb3abc3db3b4a903cf9dd22d8))
* chore(frontend) : Fix frontend failing ci test ([\#11575](https://github.com/kubeflow/pipelines/issues/11575)) ([d3a016d](https://github.com/kubeflow/pipelines/commit/d3a016dd645ba828ec375428faa733e0203d278e))
* Fix typo in documentation for contribution and developer guide ([\#11537](https://github.com/kubeflow/pipelines/issues/11537)) ([1234c8d](https://github.com/kubeflow/pipelines/commit/1234c8d6fef914d07ab634a266e1e076c152fd06))
* switch release/api generator images to ghcr ([\#11528](https://github.com/kubeflow/pipelines/issues/11528)) ([83791e7](https://github.com/kubeflow/pipelines/commit/83791e7703f3761b90fcce376caaf70d826cc488))
* add remaining dockerfiles to build workflow ([\#11522](https://github.com/kubeflow/pipelines/issues/11522)) ([682d3ac](https://github.com/kubeflow/pipelines/commit/682d3aca5fb92622fb6a1cd94e5984fea4d90471))
* Fix the failing exit handler SDK execution tests ([\#11519](https://github.com/kubeflow/pipelines/issues/11519)) ([8bce9c4](https://github.com/kubeflow/pipelines/commit/8bce9c4ef6b047d3b71206a97f66ca567e1a7e4f))
* nominate reviewers for backend ([\#11508](https://github.com/kubeflow/pipelines/issues/11508)) ([56e6116](https://github.com/kubeflow/pipelines/commit/56e6116d054898f8dbe73990da3836e10e8b7523))
* nominate approver & reviewer for backend ([\#11507](https://github.com/kubeflow/pipelines/issues/11507)) ([81ebd7f](https://github.com/kubeflow/pipelines/commit/81ebd7ff9b0376c44928f2398f48196e38d92cd3))
* feat[frontend]: implement artifact-repositories configmap support ([\#11354](https://github.com/kubeflow/pipelines/issues/11354)) ([467f30c](https://github.com/kubeflow/pipelines/commit/467f30cf613ecfe181e7bf9c03cb2eef7ae1ea2d))
* Add-Create-Experiment-button-when-selecting-experiement-final ([\#11332](https://github.com/kubeflow/pipelines/issues/11332)) ([c5f162d](https://github.com/kubeflow/pipelines/commit/c5f162d552e5ae405689066736acf730b9147606))
* adding chore as a new template. Fixes [\#11263](https://github.com/kubeflow/pipelines/issues/11263) ([\#11317](https://github.com/kubeflow/pipelines/issues/11317)) ([f256d86](https://github.com/kubeflow/pipelines/commit/f256d86fbb9bfff0388cd6ef9df1120e49e995d8))
* correct lastrun unittest timestamps ([\#11270](https://github.com/kubeflow/pipelines/issues/11270)) ([6f6c8ae](https://github.com/kubeflow/pipelines/commit/6f6c8aeda9d5c219e2958df94dce93ca5a88a6ea))
* replaced deprecated image repos with registry.k8s.io ([\#11152](https://github.com/kubeflow/pipelines/issues/11152)) ([d23b72b](https://github.com/kubeflow/pipelines/commit/d23b72bf12f55f123a16f53eb35d061180ad9ac4))
### [2.4.1](https://github.com/kubeflow/pipelines/compare/2.4.0...2.4.1) (2025-03-01)
### Other Pull Requests
* update driver/launcher images for 2.4.1 ([6e64e4d](https://github.com/kubeflow/pipelines/commit/6e64e4d553ff49a1de4c1840490ab9ca337d08cc))
* Cherry Pick Commits for 2.4.1 ([\#11716](https://github.com/kubeflow/pipelines/issues/11716)) ([78fab71](https://github.com/kubeflow/pipelines/commit/78fab71ef1831ae6659c7834bf78d56daa55623d))
## [2.4.0](https://github.com/kubeflow/pipelines/compare/2.3.0...2.4.0) (2025-01-16)
### ⚠ BREAKING CHANGES
* **sdk:** stop auto-populating metrics as dag output ([\#11362](https://github.com/kubeflow/pipelines/issues/11362))
* **components:** Deprecate preview.custom_job module
* **sdk:** Pin kfp-pipeline-spec==0.4.0, kfp-server-api>=2.1.0,<2.4.0 ([\#11192](https://github.com/kubeflow/pipelines/issues/11192))
### Features
* **sdk/backend:** Add support for placeholders in resource limits ([\#11501](https://github.com/kubeflow/pipelines/issues/11501)) ([7c931ae](https://github.com/kubeflow/pipelines/commit/7c931ae20197b2309d7a8462f6ce099882a8f915))
* Introduce cache_key for cache key customization ([\#11434](https://github.com/kubeflow/pipelines/issues/11434)) ([50b367f](https://github.com/kubeflow/pipelines/commit/50b367f232b2d37b762745c8b4296a29c9d8fd45))
* **api:** add PipelineConfig to api to re-implement pipeline-level config ([\#11333](https://github.com/kubeflow/pipelines/issues/11333)) ([c2f5649](https://github.com/kubeflow/pipelines/commit/c2f56495b9b1e9eda1b44b6106e12d5290a89ed7))
* **backend:** add configurable S3 path style support ([\#11246](https://github.com/kubeflow/pipelines/issues/11246)) ([85fdd73](https://github.com/kubeflow/pipelines/commit/85fdd73ae0bb1c2ce01da6311807b37cfc589710))
* **backend:** Add Parallelism Limit to ParallelFor tasks. Fixes [\#8718](https://github.com/kubeflow/pipelines/issues/8718) ([\#10798](https://github.com/kubeflow/pipelines/issues/10798)) ([b7d8c97](https://github.com/kubeflow/pipelines/commit/b7d8c97d65af575b71efe6755eb67b0bb9126f01))
* **backend:** implement subdag output resolution ([\#11196](https://github.com/kubeflow/pipelines/issues/11196)) ([c5b787a](https://github.com/kubeflow/pipelines/commit/c5b787aacc4fddeeb1ebc526a83159540cd7b311))
* **backend:** Remove PipelineSpec Template storage from ObjStore responsibilies. Fixes [\#10509](https://github.com/kubeflow/pipelines/issues/10509) ([\#10790](https://github.com/kubeflow/pipelines/issues/10790)) ([374b18b](https://github.com/kubeflow/pipelines/commit/374b18bc3366a51f4b92821cdb3a942bc12343a0))
* **cli:** expose existing_token client property ([\#11400](https://github.com/kubeflow/pipelines/issues/11400)) ([35793be](https://github.com/kubeflow/pipelines/commit/35793be4168584b1084169b723bfb216aa4a03b6))
* **component:** Created Snowflake data unload component ([\#11349](https://github.com/kubeflow/pipelines/issues/11349)) ([22e7780](https://github.com/kubeflow/pipelines/commit/22e77805ed41a72837f7cd15a9d679f42169b253))
* **component:** execute in a virtual env ([\#11326](https://github.com/kubeflow/pipelines/issues/11326)) ([df28e89](https://github.com/kubeflow/pipelines/commit/df28e891c4374f7eac98cc6a4892b6e6c35a43f2))
* **components:** Add reservation_affinity support in v1.create_custom_training_job_from_component ([c84241b](https://github.com/kubeflow/pipelines/commit/c84241b7362c0351109bc0ddbc2f697479ff8675))
* **components:** add strategy to v1 GCPC custom job components/utils ([1cdd648](https://github.com/kubeflow/pipelines/commit/1cdd648239ff850bf5baae48e4e7bd1b24330dd5))
* **components:** Deprecate preview.custom_job module ([abbd915](https://github.com/kubeflow/pipelines/commit/abbd915a2ac32b22151efef662b937601602ba9d))
* **frontend/backend:** Allow the ability to sort experiments by last run creation. Fixes [\#10884](https://github.com/kubeflow/pipelines/issues/10884) ([\#11163](https://github.com/kubeflow/pipelines/issues/11163)) ([db8669c](https://github.com/kubeflow/pipelines/commit/db8669c33e60bb8910710359c0638d21ec27ac7c))
* **sdk:** add PipelineConfig to DSL to re-implement pipeline-level config ([\#11112](https://github.com/kubeflow/pipelines/issues/11112)) ([df4d787](https://github.com/kubeflow/pipelines/commit/df4d7878c4ce25c801a916351bcbce1266a9daf1))
* **sdk:** Allow disabling default caching via a CLI flag and env var ([\#11222](https://github.com/kubeflow/pipelines/issues/11222)) ([3f49522](https://github.com/kubeflow/pipelines/commit/3f495229f26ef08360048d050dfe014ca4b57b4f))
* **sdk:** Pin kfp-pipeline-spec==0.4.0, kfp-server-api>=2.1.0,<2.4.0 ([\#11192](https://github.com/kubeflow/pipelines/issues/11192)) ([dfd4cc1](https://github.com/kubeflow/pipelines/commit/dfd4cc1e537523b04b01b6e209b5760bd2a007d5))
* **sdk:** stop auto-populating metrics as dag output ([\#11362](https://github.com/kubeflow/pipelines/issues/11362)) ([8d018af](https://github.com/kubeflow/pipelines/commit/8d018aff6ed14b5bed7b3f90d9f450b3144ae18e))
* **sdk/backend:** enable parameterization of container images ([\#11404](https://github.com/kubeflow/pipelines/issues/11404)) ([22e85de](https://github.com/kubeflow/pipelines/commit/22e85de2bcbd2ff5ed2a099e4f11a39ff27e4190))
* **testing:** use kustomize to patch deployments before deploy ([\#11294](https://github.com/kubeflow/pipelines/issues/11294)) ([be863a8](https://github.com/kubeflow/pipelines/commit/be863a852997718701a1ee548d9db86dca7ffc33))
* add fields in SinglePlatformSpec ([\#11299](https://github.com/kubeflow/pipelines/issues/11299)) ([a0d313e](https://github.com/kubeflow/pipelines/commit/a0d313e095c2b5fc1a32809c38cf96b13e5772b2))
* **sdk:** support dynamic machine type parameters in pipeline task setters ([\#11097](https://github.com/kubeflow/pipelines/issues/11097)) ([70aaf8a](https://github.com/kubeflow/pipelines/commit/70aaf8a9a469607dc6e4aad58d40b39c75363b99))
* **workflows:** use built images in Github workflows ([\#11284](https://github.com/kubeflow/pipelines/issues/11284)) ([1550b36](https://github.com/kubeflow/pipelines/commit/1550b363aed3745b476d2b3798725432329e8cea))
### Bug Fixes
* **backend:** Allow initializing the Kubernetes client with a kubeconfig ([\#11443](https://github.com/kubeflow/pipelines/issues/11443)) ([87bdb7c](https://github.com/kubeflow/pipelines/commit/87bdb7c3b1126ae5e899826be0834c11764edbae))
* **backend:** handle client side HTTP timeouts to fix crashes of metadata-writer. Fixes [\#8200](https://github.com/kubeflow/pipelines/issues/8200) ([\#11361](https://github.com/kubeflow/pipelines/issues/11361)) ([94a21cc](https://github.com/kubeflow/pipelines/commit/94a21cc7e27a3824732e7f4c09a4d8b826dde5b8))
* **backend:** modelToCRDTrigger was not including periodic schedule correctly ([\#11475](https://github.com/kubeflow/pipelines/issues/11475)) ([97acacb](https://github.com/kubeflow/pipelines/commit/97acacbd2a0b72d442398ca04382ac1e6d9aa37f))
* **backend:** randomizing output uri path to avoid overwriting. Fixes [\#10186](https://github.com/kubeflow/pipelines/issues/10186) ([\#11243](https://github.com/kubeflow/pipelines/issues/11243)) ([219725d](https://github.com/kubeflow/pipelines/commit/219725d9f02b690cf0829a21faf092a3e4c65531))
* **backend:** remove unused function argument ([\#11425](https://github.com/kubeflow/pipelines/issues/11425)) ([7f2278f](https://github.com/kubeflow/pipelines/commit/7f2278f25222992bedfcae5b613a7a06430f4542))
* **backend:** return error properly ([\#11424](https://github.com/kubeflow/pipelines/issues/11424)) ([13f83cf](https://github.com/kubeflow/pipelines/commit/13f83cf745eb5628d6ae5b25c1ca979d8c6d92ad))
* **backend:** set default value to true for ForcePathStyle ([\#11281](https://github.com/kubeflow/pipelines/issues/11281)) ([391de8c](https://github.com/kubeflow/pipelines/commit/391de8ca9ec68fe4cd85bba6c82348386fc79842))
* **backend:** stop heartbeat status updates for ScheduledWorkflows. Fixes [\#8757](https://github.com/kubeflow/pipelines/issues/8757) ([\#11363](https://github.com/kubeflow/pipelines/issues/11363)) ([9ccec4c](https://github.com/kubeflow/pipelines/commit/9ccec4c7d1aff4d2bfdb20cf4fd1f9d64b8632f4))
* **backend:** Synced ScheduledWorkflow CRs on apiserver startup ([\#11469](https://github.com/kubeflow/pipelines/issues/11469)) ([d21fca6](https://github.com/kubeflow/pipelines/commit/d21fca650c8152d992ad5f7f590f70b1368bc60b))
* **backend:** upgrade PyYMAL to fix metadata_writer build error ([\#11231](https://github.com/kubeflow/pipelines/issues/11231)) ([a4119a6](https://github.com/kubeflow/pipelines/commit/a4119a6bf1fe220c84aaa5caa7051c423b5f145e))
* **backend:** upgrade various old dependencies ([\#11448](https://github.com/kubeflow/pipelines/issues/11448)) ([803d7a8](https://github.com/kubeflow/pipelines/commit/803d7a8ebb00924107b890de01e2a53af78d9a5e))
* **backend:** Use an Argo Workflow exit lifecycle hook for exit handlers ([\#11470](https://github.com/kubeflow/pipelines/issues/11470)) ([3059f7c](https://github.com/kubeflow/pipelines/commit/3059f7c124dc95f867e6f755f7c0720aaa32d48b))
* **components:** Fix create_custom_training_job_from_component default location ([04d600b](https://github.com/kubeflow/pipelines/commit/04d600b2d36405f34799306c5d24287c75e31595))
* **components:** remove default prediction column names in evaluation regression component to fix issues with bigquery data source ([753a2f1](https://github.com/kubeflow/pipelines/commit/753a2f148ac3f001bc785acc6359295e6fe521fd))
* **frontend:** Detailed information of nodes is not displayed when clicking the node. Fixes [\#11325](https://github.com/kubeflow/pipelines/issues/11325) ([\#11493](https://github.com/kubeflow/pipelines/issues/11493)) ([028d81b](https://github.com/kubeflow/pipelines/commit/028d81b624629d4610ddcdced5b982437ff88d08))
* **frontend:** first time choosing a pipeline definition is VERY slow. Fixes [\#10897](https://github.com/kubeflow/pipelines/issues/10897) ([\#11130](https://github.com/kubeflow/pipelines/issues/11130)) ([cfb3b31](https://github.com/kubeflow/pipelines/commit/cfb3b3149d9ba02daec584af77ef763f936cd727))
* **frontend:** Fix the frontend image build with Node 22 ([\#11524](https://github.com/kubeflow/pipelines/issues/11524)) ([\#11525](https://github.com/kubeflow/pipelines/issues/11525)) ([2e47604](https://github.com/kubeflow/pipelines/commit/2e4760435ff988063dba6e21707e910bf748e5ff))
* **sdk:** accelerator type setting in kfp ([\#11373](https://github.com/kubeflow/pipelines/issues/11373)) ([64e3900](https://github.com/kubeflow/pipelines/commit/64e390069d6c60c97ea03e833529a0930398620f))
* **sdk:** Add error handling. Fixes [\#11164](https://github.com/kubeflow/pipelines/issues/11164) ([\#11356](https://github.com/kubeflow/pipelines/issues/11356)) ([4a64fe9](https://github.com/kubeflow/pipelines/commit/4a64fe9532556a48585b9966db8e10c7de0a8d37))
* **sdk:** Backport fixes in kubeflow/pipelines#11075 ([\#11392](https://github.com/kubeflow/pipelines/issues/11392)) ([6ebf4aa](https://github.com/kubeflow/pipelines/commit/6ebf4aae0335424d3bc88175fd06a2b2ba05251f))
* **tests:** remove redundant integration test wf ([\#11322](https://github.com/kubeflow/pipelines/issues/11322)) ([6a35ee5](https://github.com/kubeflow/pipelines/commit/6a35ee5144fba1c72badc7c52161d8a49f34804e))
* **ui:** Disable GKE Metadata as default Fixes: [\#11247](https://github.com/kubeflow/pipelines/issues/11247), fixes [\#11260](https://github.com/kubeflow/pipelines/issues/11260) ([\#11403](https://github.com/kubeflow/pipelines/issues/11403)) ([23f718d](https://github.com/kubeflow/pipelines/commit/23f718d02e402bad5c9da1a3d76da5c4a97743b3))
* **ui:** Fixes V1 Run detail unnecessary reloading. Fixes [\#10590](https://github.com/kubeflow/pipelines/issues/10590) ([\#11214](https://github.com/kubeflow/pipelines/issues/11214)) ([eee095e](https://github.com/kubeflow/pipelines/commit/eee095e5c8d53c0eae45165f72549afe5a5cb0e3))
* **workflows:** patch reversed launcher / driver in workflow matrix ([\#11238](https://github.com/kubeflow/pipelines/issues/11238)) ([ceeda01](https://github.com/kubeflow/pipelines/commit/ceeda01d0a35bd84b79d8f2e7aa2e029cb1de06b))
### Other Pull Requests
* switch release/api generator images to ghcr ([\#11528](https://github.com/kubeflow/pipelines/issues/11528)) ([\#11530](https://github.com/kubeflow/pipelines/issues/11530)) ([33fca73](https://github.com/kubeflow/pipelines/commit/33fca73fd6f96751db3c7e2c4795acfc7980b649))
* add remaining dockerfiles to build workflow ([\#11522](https://github.com/kubeflow/pipelines/issues/11522)) ([682d3ac](https://github.com/kubeflow/pipelines/commit/682d3aca5fb92622fb6a1cd94e5984fea4d90471))
* Fix the failing exit handler SDK execution tests ([\#11519](https://github.com/kubeflow/pipelines/issues/11519)) ([8bce9c4](https://github.com/kubeflow/pipelines/commit/8bce9c4ef6b047d3b71206a97f66ca567e1a7e4f))
* nominate reviewers for backend ([\#11508](https://github.com/kubeflow/pipelines/issues/11508)) ([56e6116](https://github.com/kubeflow/pipelines/commit/56e6116d054898f8dbe73990da3836e10e8b7523))
* nominate approver & reviewer for backend ([\#11507](https://github.com/kubeflow/pipelines/issues/11507)) ([81ebd7f](https://github.com/kubeflow/pipelines/commit/81ebd7ff9b0376c44928f2398f48196e38d92cd3))
* feat[frontend]: implement artifact-repositories configmap support ([\#11354](https://github.com/kubeflow/pipelines/issues/11354)) ([467f30c](https://github.com/kubeflow/pipelines/commit/467f30cf613ecfe181e7bf9c03cb2eef7ae1ea2d))
* Add-Create-Experiment-button-when-selecting-experiement-final ([\#11332](https://github.com/kubeflow/pipelines/issues/11332)) ([c5f162d](https://github.com/kubeflow/pipelines/commit/c5f162d552e5ae405689066736acf730b9147606))
* adding chore as a new template. Fixes [\#11263](https://github.com/kubeflow/pipelines/issues/11263) ([\#11317](https://github.com/kubeflow/pipelines/issues/11317)) ([f256d86](https://github.com/kubeflow/pipelines/commit/f256d86fbb9bfff0388cd6ef9df1120e49e995d8))
* correct lastrun unittest timestamps ([\#11270](https://github.com/kubeflow/pipelines/issues/11270)) ([6f6c8ae](https://github.com/kubeflow/pipelines/commit/6f6c8aeda9d5c219e2958df94dce93ca5a88a6ea))
* replaced deprecated image repos with registry.k8s.io ([\#11152](https://github.com/kubeflow/pipelines/issues/11152)) ([d23b72b](https://github.com/kubeflow/pipelines/commit/d23b72bf12f55f123a16f53eb35d061180ad9ac4))
## [2.3.0](https://github.com/kubeflow/pipelines/compare/2.2.0...2.3.0) (2024-09-06)
### Features
* **api:** Add new ResourceSpec proto fields to support dynamic values. ([\#11075](https://github.com/kubeflow/pipelines/issues/11075)) ([83dcf1a](https://github.com/kubeflow/pipelines/commit/83dcf1a60919f5bcc0c644c8fdff94ad686cad07))
* **backend:** mount EmptyDir volumes for launcher write locations ([\#10857](https://github.com/kubeflow/pipelines/issues/10857)) ([65839ce](https://github.com/kubeflow/pipelines/commit/65839ced31969affe23ecc483c95872684e7dd0b))
* **backend:** move comp logic to workflow params ([\#10979](https://github.com/kubeflow/pipelines/issues/10979)) ([0e37fd6](https://github.com/kubeflow/pipelines/commit/0e37fd66a4f15bb7ce31ecceec7421ba1bd65fd6))
* **Backend + SDK:** Update kfp backend and kubernetes sdk to support EmptyDir ([\#10913](https://github.com/kubeflow/pipelines/issues/10913)) ([7506a8e](https://github.com/kubeflow/pipelines/commit/7506a8eafae9876a4f1e1a0e86024f5231369e8d))
* **component:** internal ([383cbcd](https://github.com/kubeflow/pipelines/commit/383cbcd0655395582b11f79f29e4816f84d6d91b))
* **component:** internal ([8041ea8](https://github.com/kubeflow/pipelines/commit/8041ea8740371925d76c698c8a94a4859fc2bda7))
* **component:** internal ([c06d9ae](https://github.com/kubeflow/pipelines/commit/c06d9aee96726bbae73e5f7562edfc8330fac61e))
* **component:** internal ([ad03bb6](https://github.com/kubeflow/pipelines/commit/ad03bb6daa03442a7fda19904a97db3745d5044f))
* **components:** Add role_field_name and model_name as input parameters to llm_evaluation_preprocessor component to support gemini model's input and output schema ([de346d5](https://github.com/kubeflow/pipelines/commit/de346d5590b1df94cee528f949a067fb3aae578f))
* **components:** Add Starry Net forecasting pipeline to public preview ([3a0566e](https://github.com/kubeflow/pipelines/commit/3a0566e8dc27d8fbd13174d6a6aed4daddb2405b))
* **components:** create infer preprocessor component ([e9d6876](https://github.com/kubeflow/pipelines/commit/e9d687690bea2d88263ca331d049cb6c68495f02))
* **components:** Create the write_user_defined_error function ([454a654](https://github.com/kubeflow/pipelines/commit/454a65428977a4e470c0d72525a96c3f4a0344f3))
* **components:** create utility class for preprocessors and use it in rlhf preprocessor and infer preprocessor ([cd16a33](https://github.com/kubeflow/pipelines/commit/cd16a33e735b30a85b2e736039f72c2ed6d26507))
* **components:** internal ([e8f0208](https://github.com/kubeflow/pipelines/commit/e8f0208777ad4e9260ff630a37b0d90cda8c4f76))
* **components:** internal ([6f62203](https://github.com/kubeflow/pipelines/commit/6f62203ccfadeaf60d16ce1f65ed25ac4408c649))
* **components:** internal ([2eb9bec](https://github.com/kubeflow/pipelines/commit/2eb9bec1ae8debca6698daa65dd69da91ec3461f))
* **components:** internal ([c6f658b](https://github.com/kubeflow/pipelines/commit/c6f658b0e70d353a1ef0aae4ae05307ef3223eb4))
* **components:** internal ([e128bdb](https://github.com/kubeflow/pipelines/commit/e128bdbaf3b2071926e8a5c23041cc692329bb39))
* **components:** internal ([abe5257](https://github.com/kubeflow/pipelines/commit/abe525737f713e752560ee039553b5cc6d5af89d))
* **components:** internal ([522b593](https://github.com/kubeflow/pipelines/commit/522b5933b00439f4981498ecea3f800fde3a6506))
* **components:** internal ([461d892](https://github.com/kubeflow/pipelines/commit/461d892db80987f5d9a1f5bf9575f667bfb66a76))
* **components:** release LLM Model Evaluation image version v0.7 ([4f36fe3](https://github.com/kubeflow/pipelines/commit/4f36fe3637eb52980e559615595dfab7aa539a87))
* **components:** Retry on batch prediction internal errors in AutoSxS ([5d9f4ab](https://github.com/kubeflow/pipelines/commit/5d9f4ab929747748e4a616c89fac9de37fc81485))
* **components:** Support dynamic machine parameters in preview.custom_job.utils.create_custom_training_job_from_component ([e44dfa7](https://github.com/kubeflow/pipelines/commit/e44dfa7e898a1f4e8c315502719d9c7c709f1b01))
* **components:** Support dynamic machine type paramters in CustomTrainingJobOp ([\#10883](https://github.com/kubeflow/pipelines/issues/10883)) ([b57f9e8](https://github.com/kubeflow/pipelines/commit/b57f9e858880afcbeac51a5d4e978133be6c0d50))
* **components:** Support dynamic values for boot_disk_type, boot_disk_size in preview.custom_job.utils.create_custom_training_job_from_component ([7b7918e](https://github.com/kubeflow/pipelines/commit/7b7918ebf8c30e6ceec99283ef20dbc02fdf6a42))
* **components:** Support parsing Gemini BP outputs in AutoSxS pipeline ([b4f91a3](https://github.com/kubeflow/pipelines/commit/b4f91a3f2cf1d2d8925e698bebd3cb5b9baaaaac))
* **components:** Update Starry Net image tags ([bf5104f](https://github.com/kubeflow/pipelines/commit/bf5104fcff6a6c2db8d8e39522c04eca1bb3fc93))
* **components:** Use GetModel integration test to manually test write_user_defined_error function ([609c637](https://github.com/kubeflow/pipelines/commit/609c637811e46eab2d5c9a915913a1520c979a88))
* **components:** use preprocessor utility methods for the upload model graph ([7908ed6](https://github.com/kubeflow/pipelines/commit/7908ed664653143d335ba3e9227484347e64577d))
* **frontend&backend:** Add UI support for object store customization and prefixes ([\#10787](https://github.com/kubeflow/pipelines/issues/10787)) ([6723d3d](https://github.com/kubeflow/pipelines/commit/6723d3d5a92181b7ee75304671256bbe5ac18582))
* **GH workflow:** migrate periodic functional tests to GH actions ([\#10751](https://github.com/kubeflow/pipelines/issues/10751)) ([c4d7ec3](https://github.com/kubeflow/pipelines/commit/c4d7ec33b409eda9c4076915f4ed1c2db0ee8ef6))
* **internal:** Adding proto field to support regional quota ([c8f08ba](https://github.com/kubeflow/pipelines/commit/c8f08ba49f92f53269d71425666c0bc3a687615d))
* **kubernetes_platform:** Add empty dir mount ([\#10892](https://github.com/kubeflow/pipelines/issues/10892)) ([10aaf43](https://github.com/kubeflow/pipelines/commit/10aaf431367e974bf6c73306acf6a7fd40e36942))
* **kubernetes_platform:** Update kubernetes_platform go package to include EnabledSharedMemory ([\#10703](https://github.com/kubeflow/pipelines/issues/10703)) ([7c63599](https://github.com/kubeflow/pipelines/commit/7c6359984314472bf801ea1ba8b0e8c5d9e2be2c))
### Bug Fixes
* **components:** add check and add log to call out the fallback to the default model checkpoint and remove the model checkpoint check condition in RLHF GCPC ([92c3178](https://github.com/kubeflow/pipelines/commit/92c317824a3697d955cb78cc9a85ecac58a3366c))
* **components:** Add input param `autorater_prompt_parameters` to `online_evaluation_pairwise` component ([cf7450b](https://github.com/kubeflow/pipelines/commit/cf7450b109ba349b50aef2413517c0ec3961adf8))
* **components:** Add staging and temp locations to prophet trainer component ([00440f7](https://github.com/kubeflow/pipelines/commit/00440f7df4abae08823df9ab5b48de703a8a773c))
* **components:** Fix to model batch explanation component for Structured Data pipelines ([289f64f](https://github.com/kubeflow/pipelines/commit/289f64fe948c1aede1886789045aaf1e2ac8f699))
* **components:** Pass moddel name to eval_runner to process batch prediction's output as per the output schema of model used ([0d3e79a](https://github.com/kubeflow/pipelines/commit/0d3e79adc7bade905c112160781fed0feef3f595))
* **components:** Remove unused import function_based from infer pipeline ([e369bd3](https://github.com/kubeflow/pipelines/commit/e369bd3ebd91831465ba346ab271549c549c6745))
* **components:** Use instance.target_field_name format for text-bison models only, use target_field_name for gemini models ([1a07ffa](https://github.com/kubeflow/pipelines/commit/1a07ffa9111ac5ccea6ad527e8950b084aa4fc79))
* **docs:** add note about protoc dependency and version ([\#10895](https://github.com/kubeflow/pipelines/issues/10895)) ([d911c8b](https://github.com/kubeflow/pipelines/commit/d911c8b73b49cd0a4ffda132f494f31d0d48095a))
* **docs:** IR -> Pipeline Spec ([\#11031](https://github.com/kubeflow/pipelines/issues/11031)) ([1e95eb6](https://github.com/kubeflow/pipelines/commit/1e95eb628545baaf691270c4ddb45034ecef8fa4))
* **frontend:** fixes filter pipeline text box shows error when typing anything in it. Fixes [\#10241](https://github.com/kubeflow/pipelines/issues/10241) ([\#11096](https://github.com/kubeflow/pipelines/issues/11096)) ([51d2c92](https://github.com/kubeflow/pipelines/commit/51d2c92b551751b758f544ca32a7ec0f67d09558))
* **frontend:** reduce list run latency ([\#10797](https://github.com/kubeflow/pipelines/issues/10797)) ([768ece4](https://github.com/kubeflow/pipelines/commit/768ece44e69e328400ca437c9ebe2c959b26d8a8))
* **frontend:** retrieve archived logs from correct location ([\#11010](https://github.com/kubeflow/pipelines/issues/11010)) ([2e6e634](https://github.com/kubeflow/pipelines/commit/2e6e634de43c42fee88dfe2abfdb0e4155dc4f95))
* **sdk:** Add required auth scopes to RegistryClient for GCP service accounts credentials ([\#10819](https://github.com/kubeflow/pipelines/issues/10819)) ([04b4cad](https://github.com/kubeflow/pipelines/commit/04b4cad8cdc88810628f5e683cada57a7f42be47))
* **sdk:** Kfp support for pip trusted host ([\#11151](https://github.com/kubeflow/pipelines/issues/11151)) ([3efa029](https://github.com/kubeflow/pipelines/commit/3efa02984c44190ee6ea98af1a6905d67a986af0))
* **ui:** fixes empty string value in pipeline parameters ([\#11175](https://github.com/kubeflow/pipelines/issues/11175)) ([e9c77ec](https://github.com/kubeflow/pipelines/commit/e9c77ec6d5c900be6ca77f513610a603c41ed2ce))
* Basic sample tests - sequential is flaky ([\#11138](https://github.com/kubeflow/pipelines/issues/11138)) ([e1d172b](https://github.com/kubeflow/pipelines/commit/e1d172bb5740f743be45e43f602085baed1c5495))
* Incorrect typing in samples/cores/loop_parallism and fixing loop_parameter examples ([\#11062](https://github.com/kubeflow/pipelines/issues/11062)) ([1612dac](https://github.com/kubeflow/pipelines/commit/1612dac4adacbe1f2a041eb4eacb94663c2ba286))
* re-enable exit hanler test. ([\#11100](https://github.com/kubeflow/pipelines/issues/11100)) ([000ef60](https://github.com/kubeflow/pipelines/commit/000ef60080b6ece6274910057898f9a0f33a9a7a))
* **kubernetes_platform:** fix api-generator docker mount for SELinux ([\#10890](https://github.com/kubeflow/pipelines/issues/10890)) ([e69078b](https://github.com/kubeflow/pipelines/commit/e69078b2b65c0e34fd56499bbe34da882dc6e009))
* **manifests:** Move metacontroller to the top in kustmization.yaml ([\#10669](https://github.com/kubeflow/pipelines/issues/10669)) ([4e9fe75](https://github.com/kubeflow/pipelines/commit/4e9fe75d4564bbcdde7cd358298361e94d4a20be))
* **sdk:** Throw 'exit_task cannot depend on any other tasks.' error when an ExitHandler has a parameter dependent on other task ([\#11005](https://github.com/kubeflow/pipelines/issues/11005)) ([08185e7](https://github.com/kubeflow/pipelines/commit/08185e71717ef628be3cbe2cdeb1fd55b25581d4))
### Other Pull Requests
* **fix:** reduce executor logs ([\#11169](https://github.com/kubeflow/pipelines/issues/11169)) ([d64554b](https://github.com/kubeflow/pipelines/commit/d64554b1a8880c69186776f92a3af75fafd0135d))
* correct artifact preview behavior in UI ([\#11059](https://github.com/kubeflow/pipelines/issues/11059)) ([2c91fb7](https://github.com/kubeflow/pipelines/commit/2c91fb797ed5e95bb51ae80c4daa2c6b9334b51b))
* docs:fixing broken links in readme ([\#11108](https://github.com/kubeflow/pipelines/issues/11108)) ([a3adf94](https://github.com/kubeflow/pipelines/commit/a3adf9471c49f8a529f4389853210212880f9d16))
* Fix view edit cluster roles ([\#11067](https://github.com/kubeflow/pipelines/issues/11067)) ([43cdc20](https://github.com/kubeflow/pipelines/commit/43cdc2081dcb1f0cac87c58188e88a23370fb67e))
* add dev docs for kfp/sdk ([\#11046](https://github.com/kubeflow/pipelines/issues/11046)) ([eea7d48](https://github.com/kubeflow/pipelines/commit/eea7d483793c2b4f8c3aa20b1500535f7fbf50d4))
* No public description ([e3a4980](https://github.com/kubeflow/pipelines/commit/e3a498020a28788b3df71db310dd266a537ef243))
* Upgrade go version to 1.21 ([\#10911](https://github.com/kubeflow/pipelines/issues/10911)) ([bdc3bb1](https://github.com/kubeflow/pipelines/commit/bdc3bb1f0d5850332d4fc0851a2d1730ead62427))
* Expose starry_net yaml to GitHub ([\#10943](https://github.com/kubeflow/pipelines/issues/10943)) ([f1e2314](https://github.com/kubeflow/pipelines/commit/f1e23142b1eabc977d85736dfd4bdbdc019cfcb2))
## [2.2.0](https://github.com/kubeflow/pipelines/compare/2.1.0...2.2.0) (2024-04-30)
@ -6233,9 +6683,9 @@ Detailed PR can be found [here](https://github.com/kubeflow/pipelines/commits)
## [0.1.27](https://github.com/kubeflow/pipelines/tree/0.1.27) (2019-08-22)
[Full Changelog](https://github.com/kubeflow/pipelines/compare/0.1.26...0.1.27)
**Merged pull requests:**
**Merged pull requests:**
- update namespaced-install.yaml [\#1926](https://github.com/kubeflow/pipelines/pull/1926) ([IronPan](https://github.com/IronPan))
- update namespaced-install.yaml [\#1926](https://github.com/kubeflow/pipelines/pull/1926) ([IronPan](https://github.com/IronPan))
- Fix lint related issue [\#1922](https://github.com/kubeflow/pipelines/pull/1922) ([numerology](https://github.com/numerology))
- Cleanup pipeline-lite deployment [\#1921](https://github.com/kubeflow/pipelines/pull/1921) ([IronPan](https://github.com/IronPan))
- Allow visualization kernel timeout to be specifiable via environment variables [\#1920](https://github.com/kubeflow/pipelines/pull/1920) ([ajchili](https://github.com/ajchili))
@ -6465,12 +6915,12 @@ Detailed PR can be found [here](https://github.com/kubeflow/pipelines/commits)
- SDK - Travis configuration for Python 3.5 and 3.7 [\#1467](https://github.com/kubeflow/pipelines/pull/1467) ([kvalev](https://github.com/kvalev))
- Add timeout out in dsl [\#1465](https://github.com/kubeflow/pipelines/pull/1465) ([gaoning777](https://github.com/gaoning777))
## [0.1.22](https://github.com/kubeflow/pipelines/tree/0.1.22) (2019-06-21)
## [0.1.22](https://github.com/kubeflow/pipelines/tree/0.1.22) (2019-06-21)
[Full Changelog](https://github.com/kubeflow/pipelines/compare/0.1.21...0.1.22)
**Merged pull requests:**
**Merged pull requests:**
- increment sdk versions [\#1538](https://github.com/kubeflow/pipelines/pull/1538) ([hongye-sun](https://github.com/hongye-sun))
- increment sdk versions [\#1538](https://github.com/kubeflow/pipelines/pull/1538) ([hongye-sun](https://github.com/hongye-sun))
- SDK/Client - Added support for all APIs [\#1536](https://github.com/kubeflow/pipelines/pull/1536) ([Ark-kun](https://github.com/Ark-kun))
- SDK/Client - Added the upload\_pipeline API [\#1535](https://github.com/kubeflow/pipelines/pull/1535) ([Ark-kun](https://github.com/Ark-kun))
- Update Watson pipeline component source to the latest commit [\#1533](https://github.com/kubeflow/pipelines/pull/1533) ([Tomcli](https://github.com/Tomcli))
@ -6576,12 +7026,12 @@ Detailed PR can be found [here](https://github.com/kubeflow/pipelines/commits)
## [0.1.20](https://github.com/kubeflow/pipelines/tree/0.1.20) (2019-05-14)
[Full Changelog](https://github.com/kubeflow/pipelines/compare/0.1.19...0.1.20)
**Closed issues:**
**Closed issues:**
- Cannot create job for experiment via Pipelines Go CLI [\#1321](https://github.com/kubeflow/pipelines/issues/1321)
- Support a container flow inside one pod [\#1313](https://github.com/kubeflow/pipelines/issues/1313)
- toleration support for ContainerOp [\#1265](https://github.com/kubeflow/pipelines/issues/1265)
- Can only create recurring run from within experiment page [\#1217](https://github.com/kubeflow/pipelines/issues/1217)
- Cannot create job for experiment via Pipelines Go CLI [\#1321](https://github.com/kubeflow/pipelines/issues/1321)
- Support a container flow inside one pod [\#1313](https://github.com/kubeflow/pipelines/issues/1313)
- toleration support for ContainerOp [\#1265](https://github.com/kubeflow/pipelines/issues/1265)
- Can only create recurring run from within experiment page [\#1217](https://github.com/kubeflow/pipelines/issues/1217)
**Merged pull requests:**
@ -6610,25 +7060,25 @@ Detailed PR can be found [here](https://github.com/kubeflow/pipelines/commits)
- changelog for v0.1.19 [\#1296](https://github.com/kubeflow/pipelines/pull/1296) ([hongye-sun](https://github.com/hongye-sun))
- add nuclio components \(to build/deploy, delete, invoke functions\) [\#1295](https://github.com/kubeflow/pipelines/pull/1295) ([yaronha](https://github.com/yaronha))
- SDK - Failing faster in python\_op tests [\#1291](https://github.com/kubeflow/pipelines/pull/1291) ([Ark-kun](https://github.com/Ark-kun))
- SDK - Renamed ModelBase.from\_struct/to\_struct to from\_dict/to\_dict [\#1290](https://github.com/kubeflow/pipelines/pull/1290) ([Ark-kun](https://github.com/Ark-kun))
- SDK - Renamed ModelBase.from\_struct/to\_struct to from\_dict/to\_dict [\#1290](https://github.com/kubeflow/pipelines/pull/1290) ([Ark-kun](https://github.com/Ark-kun))
- Backend - Marking auto-added artifacts as optional [\#1289](https://github.com/kubeflow/pipelines/pull/1289) ([Ark-kun](https://github.com/Ark-kun))
- Update new Watson OpenScale components and pipeline [\#1287](https://github.com/kubeflow/pipelines/pull/1287) ([Tomcli](https://github.com/Tomcli))
- Add AWS EMR and Athena components [\#1286](https://github.com/kubeflow/pipelines/pull/1286) ([Jeffwan](https://github.com/Jeffwan))
- Add AWS EMR and Athena components [\#1286](https://github.com/kubeflow/pipelines/pull/1286) ([Jeffwan](https://github.com/Jeffwan))
- Make confusion\_matrix and roc generic [\#1285](https://github.com/kubeflow/pipelines/pull/1285) ([Jeffwan](https://github.com/Jeffwan))
- Components - Updating component versions in samples during release [\#1283](https://github.com/kubeflow/pipelines/pull/1283) ([Ark-kun](https://github.com/Ark-kun))
- Sets the background color for KFP pages [\#1281](https://github.com/kubeflow/pipelines/pull/1281) ([rileyjbauer](https://github.com/rileyjbauer))
- keep the api image name consistent between the presubmit test and staging [\#1279](https://github.com/kubeflow/pipelines/pull/1279) ([gaoning777](https://github.com/gaoning777))
- Frontend - Add support for artifacts stored in S3 [\#1278](https://github.com/kubeflow/pipelines/pull/1278) ([Jeffwan](https://github.com/Jeffwan))
- Components - Updating component versions in samples during release [\#1283](https://github.com/kubeflow/pipelines/pull/1283) ([Ark-kun](https://github.com/Ark-kun))
- Sets the background color for KFP pages [\#1281](https://github.com/kubeflow/pipelines/pull/1281) ([rileyjbauer](https://github.com/rileyjbauer))
- keep the api image name consistent between the presubmit test and staging [\#1279](https://github.com/kubeflow/pipelines/pull/1279) ([gaoning777](https://github.com/gaoning777))
- Frontend - Add support for artifacts stored in S3 [\#1278](https://github.com/kubeflow/pipelines/pull/1278) ([Jeffwan](https://github.com/Jeffwan))
- Release - Simplified python package building [\#1277](https://github.com/kubeflow/pipelines/pull/1277) ([Ark-kun](https://github.com/Ark-kun))
- Add SageMaker components and example pipeline [\#1276](https://github.com/kubeflow/pipelines/pull/1276) ([Jeffwan](https://github.com/Jeffwan))
- Add SageMaker components and example pipeline [\#1276](https://github.com/kubeflow/pipelines/pull/1276) ([Jeffwan](https://github.com/Jeffwan))
- Tests/Travis - Simplified the Python SDK package installation [\#1275](https://github.com/kubeflow/pipelines/pull/1275) ([Ark-kun](https://github.com/Ark-kun))
- Adds a toggle between one-off and recurring runs to NewRun page [\#1274](https://github.com/kubeflow/pipelines/pull/1274) ([rileyjbauer](https://github.com/rileyjbauer))
- spark components [\#1272](https://github.com/kubeflow/pipelines/pull/1272) ([animeshsingh](https://github.com/animeshsingh))
- Adds a toggle between one-off and recurring runs to NewRun page [\#1274](https://github.com/kubeflow/pipelines/pull/1274) ([rileyjbauer](https://github.com/rileyjbauer))
- spark components [\#1272](https://github.com/kubeflow/pipelines/pull/1272) ([animeshsingh](https://github.com/animeshsingh))
- support tolerations for ContainerOps [\#1269](https://github.com/kubeflow/pipelines/pull/1269) ([hamedhsn](https://github.com/hamedhsn))
- make pending timeout customizable [\#1268](https://github.com/kubeflow/pipelines/pull/1268) ([cheyang](https://github.com/cheyang))
- SDK/Client - Supporting pipeline packages with multiple files [\#1207](https://github.com/kubeflow/pipelines/pull/1207) ([Ark-kun](https://github.com/Ark-kun))
- Retaining the component url, digest or tag when loading [\#1090](https://github.com/kubeflow/pipelines/pull/1090) ([Ark-kun](https://github.com/Ark-kun))
- Allow to specify informers namespace in persistence agent [\#901](https://github.com/kubeflow/pipelines/pull/901) ([ywskycn](https://github.com/ywskycn))
- make pending timeout customizable [\#1268](https://github.com/kubeflow/pipelines/pull/1268) ([cheyang](https://github.com/cheyang))
- SDK/Client - Supporting pipeline packages with multiple files [\#1207](https://github.com/kubeflow/pipelines/pull/1207) ([Ark-kun](https://github.com/Ark-kun))
- Retaining the component url, digest or tag when loading [\#1090](https://github.com/kubeflow/pipelines/pull/1090) ([Ark-kun](https://github.com/Ark-kun))
- Allow to specify informers namespace in persistence agent [\#901](https://github.com/kubeflow/pipelines/pull/901) ([ywskycn](https://github.com/ywskycn))
## [0.1.19](https://github.com/kubeflow/pipelines/tree/0.1.19) (2019-05-03)

View File

@ -181,6 +181,12 @@ usually have different reviewers.
If you are not sure, or the PR doesn't fit into above scopes. You can either
omit the scope because it's optional, or propose an additional scope here.
## Adding Kubernetes Enhancement Proposals (KEPs)
When a change requires a significant change to the underlying system, it should be preceded with an Kubernetes Enhancement Proposal (KEP).
KEPs are found in the `proposals` folder at the root of this repo. Read more about the process [here](proposals/README.md).
## Community Guidelines
This project follows

13
Makefile Normal file
View File

@ -0,0 +1,13 @@
# Check diff for generated files
.PHONY: check-diff
check-diff:
/bin/bash -c 'if [[ -n "$$(git status --porcelain)" ]]; then \
echo "ERROR: Generated files are out of date"; \
echo "Please regenerate using make clean all for api and kubernetes_platform"; \
echo "Changes found in the following files:"; \
git status; \
echo "Diff of changes:"; \
git diff; \
exit 1; \
fi'

13
OWNERS
View File

@ -1,8 +1,15 @@
# When adding a new root level approver (i.e a maintainer), ensure that the following locations are also updated
# https://github.com/kubeflow/internal-acls/blob/master/github-orgs/kubeflow/org.yaml#L1085
# https://github.com/kubeflow/internal-acls/blob/master/github-orgs/kubeflow/org.yaml#L1213
# https://github.com/kubeflow/community/blob/master/wgs.yaml#L354
approvers:
- chensun
- IronPan
- droctothorpe
- HumairAK
- james-jwu
- zijianjoy
- mprahl
- zazulam
reviewers:
- chensun
- zijianjoy
- HumairAK

View File

@ -1,7 +1,11 @@
# Kubeflow Pipelines
[![Coverage Status](https://coveralls.io/repos/github/kubeflow/pipelines/badge.svg?branch=master)](https://coveralls.io/github/kubeflow/pipelines?branch=master)
[![SDK Documentation Status](https://readthedocs.org/projects/kubeflow-pipelines/badge/?version=latest)](https://kubeflow-pipelines.readthedocs.io/en/stable/?badge=latest)
[![SDK Package version](https://img.shields.io/pypi/v/kfp?color=%2334D058&label=pypi%20package)](https://pypi.org/project/kfp)
[![SDK Supported Python versions](https://img.shields.io/pypi/pyversions/kfp.svg?color=%2334D058)](https://pypi.org/project/kfp)
[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/9938/badge)](https://www.bestpractices.dev/projects/9938)
[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/kubeflow/pipelines)
## Overview of the Kubeflow pipelines service
@ -17,46 +21,58 @@ The Kubeflow pipelines service has the following goals:
## Installation
* Install Kubeflow Pipelines from choices described in [Installation Options for Kubeflow Pipelines](https://www.kubeflow.org/docs/pipelines/installation/overview/).
* Kubeflow Pipelines can be installed as part of the [Kubeflow Platform](https://www.kubeflow.org/docs/started/installing-kubeflow/#kubeflow-platform). Alternatively you can deploy [Kubeflow Pipelines](https://www.kubeflow.org/docs/components/pipelines/operator-guides/installation/) as a standalone service.
* The Docker container runtime has been deprecated on Kubernetes 1.20+. Kubeflow Pipelines has switched to use [Emissary Executor](https://www.kubeflow.org/docs/components/pipelines/installation/choose-executor/#emissary-executor) by default from Kubeflow Pipelines 1.8. Emissary executor is Container runtime agnostic, meaning you are able to run Kubeflow Pipelines on Kubernetes cluster with any [Container runtimes](https://kubernetes.io/docs/setup/production-environment/container-runtimes/).
* The Docker container runtime has been deprecated on Kubernetes 1.20+. Kubeflow Pipelines has switched to use [Emissary Executor](https://www.kubeflow.org/docs/components/pipelines/legacy-v1/installation/choose-executor/#emissary-executor) by default from Kubeflow Pipelines 1.8. Emissary executor is Container runtime agnostic, meaning you are able to run Kubeflow Pipelines on Kubernetes cluster with any [Container runtimes](https://kubernetes.io/docs/setup/production-environment/container-runtimes/).
## Documentation
Get started with your first pipeline and read further information in the [Kubeflow Pipelines overview](https://www.kubeflow.org/docs/components/pipelines/introduction/).
Get started with your first pipeline and read further information in the [Kubeflow Pipelines overview](https://www.kubeflow.org/docs/components/pipelines/overview/).
See the various ways you can [use the Kubeflow Pipelines SDK](https://www.kubeflow.org/docs/pipelines/sdk/sdk-overview/).
See the various ways you can [use the Kubeflow Pipelines SDK](https://kubeflow-pipelines.readthedocs.io/en/stable/).
See the Kubeflow [Pipelines API doc](https://www.kubeflow.org/docs/pipelines/reference/api/kubeflow-pipeline-api-spec/) for API specification.
See the Kubeflow [Pipelines API doc](https://www.kubeflow.org/docs/components/pipelines/reference/api/kubeflow-pipeline-api-spec/) for API specification.
Consult the [Python SDK reference docs](https://kubeflow-pipelines.readthedocs.io/en/stable/) when writing pipelines using the Python SDK.
Refer to the [versioning policy](./docs/release/versioning-policy.md) and [feature stages](./docs/release/feature-stages.md) documentation for more information about how we manage versions and feature stages (such as Alpha, Beta, and Stable).
## Deep Wiki
Check out our AI Powered repo documentation on [DeepWiki](https://deepwiki.com/kubeflow/pipelines).
> :warning: Please note, this is AI generated and may not have completely accurate information.
## Contributing to Kubeflow Pipelines
Before you start contributing to Kubeflow Pipelines, read the guidelines in [How to Contribute](./CONTRIBUTING.md). To learn how to build and deploy Kubeflow Pipelines from source code, read the [developer guide](./developer_guide.md).
## Kubeflow Pipelines Community
## Kubeflow Pipelines Community Meeting
### Community Meeting
The meeting is happening every other Wed 10-11AM (PST)
[Calendar Invite](https://calendar.google.com/event?action=TEMPLATE&tmeid=NTdoNG5uMDBtcnJlYmdlOWt1c2lkY25jdmlfMjAxOTExMTNUMTgwMDAwWiBqZXNzaWV6aHVAZ29vZ2xlLmNvbQ&tmsrc=jessiezhu%40google.com&scp=ALL) or [Join Meeting Directly](https://meet.google.com/phd-ixfj-kcr/)
The Kubeflow Pipelines Community Meeting occurs every other Wed 10-11AM (PST).
[Calendar Invite](https://calendar.google.com/event?action=TEMPLATE&tmeid=NTdoNG5uMDBtcnJlYmdlOWt1c2lkY25jdmlfMjAxOTExMTNUMTgwMDAwWiBqZXNzaWV6aHVAZ29vZ2xlLmNvbQ&tmsrc=jessiezhu%40google.com&scp=ALL)
[Direct Meeting Link](https://zoom.us/j/92607298595?pwd%3DVlKLUbiguGkbT9oKbaoDmCxrhbRop7.1&sa=D&source=calendar&ust=1736264977415448&usg=AOvVaw1EIkjFsKy0d4yQPptIJS3x)
[Meeting notes](http://bit.ly/kfp-meeting-notes)
## Kubeflow Pipelines Slack Channel
### Slack
[#kubeflow-pipelines](https://kubeflow.slack.com)
We also have a slack channel (#kubeflow-pipelines) on the Cloud Native Computing Foundation Slack workspace. You can find more details at [https://www.kubeflow.org/docs/about/community/#kubeflow-slack-channels](https://www.kubeflow.org/docs/about/community/#kubeflow-slack-channels)
## Architecture
Details about the KFP Architecture can be found at [Architecture.md](docs/Architecture.md)
## Blog posts
* [From Raw Data to Model Serving: A Blueprint for the AI/ML Lifecycle with Kubeflow](https://blog.kubeflow.org/fraud-detection-e2e/) (By [Helber Belmiro](https://github.com/hbelmiro))
* [Getting started with Kubeflow Pipelines](https://cloud.google.com/blog/products/ai-machine-learning/getting-started-kubeflow-pipelines) (By Amy Unruh)
* How to create and deploy a Kubeflow Machine Learning Pipeline (By Lak Lakshmanan)
* [Part 1: How to create and deploy a Kubeflow Machine Learning Pipeline](https://towardsdatascience.com/how-to-create-and-deploy-a-kubeflow-machine-learning-pipeline-part-1-efea7a4b650f)
* [Part 2: How to deploy Jupyter notebooks as components of a Kubeflow ML pipeline](https://towardsdatascience.com/how-to-deploy-jupyter-notebooks-as-components-of-a-kubeflow-ml-pipeline-part-2-b1df77f4e5b3)
* [Part 1: How to create and deploy a Kubeflow Machine Learning Pipeline](https://medium.com/data-science/how-to-create-and-deploy-a-kubeflow-machine-learning-pipeline-part-1-efea7a4b650f)
* [Part 2: How to deploy Jupyter notebooks as components of a Kubeflow ML pipeline](https://medium.com/data-science/how-to-deploy-jupyter-notebooks-as-components-of-a-kubeflow-ml-pipeline-part-2-b1df77f4e5b3)
* [Part 3: How to carry out CI/CD in Machine Learning (“MLOps”) using Kubeflow ML pipelines](https://medium.com/google-cloud/how-to-carry-out-ci-cd-in-machine-learning-mlops-using-kubeflow-ml-pipelines-part-3-bdaf68082112)
* [Tekton optimizations for Kubeflow Pipelines 2.0](https://developer.ibm.com/blogs/awb-tekton-optimizations-for-kubeflow-pipelines-2-0) (By Tommy Li)
## Acknowledgments
Kubeflow pipelines uses [Argo Workflows](https://github.com/argoproj/argo-workflows) by default under the hood to orchestrate Kubernetes resources. The Argo community has been very supportive and we are very grateful. Additionally there is Tekton backend available as well. To access it, please refer to [Kubeflow Pipelines with Tekton repository](https://github.com/kubeflow/kfp-tekton).
Kubeflow pipelines uses [Argo Workflows](https://github.com/argoproj/argo-workflows) by default under the hood to orchestrate Kubernetes resources. The Argo community has been very supportive and we are very grateful.

View File

@ -1,6 +1,5 @@
# Kubeflow Pipelines Release Process
<!-- This TOC is auto generated by "markdown all in one" VS Code plugin -->
- [Kubeflow Pipelines Release Process](#kubeflow-pipelines-release-process)
- [Schedule](#schedule)
- [Release Tags and Branches](#release-tags-and-branches)
@ -13,11 +12,16 @@
- [Cutting a release branch (Optional)](#cutting-a-release-branch-optional)
- [Before release](#before-release)
- [Releasing from release branch](#releasing-from-release-branch)
- [Release KFP Python Packages](#releasing-kfp-python-packages)
- [Create GitHub Release](#create-github-release)
- [Sync Master Branch with Release](#sync-master-branch-with-latest-release)
- [Release Process Development](#release-process-development)
## Schedule
Kubeflow Pipelines has weekly patch releases and monthly minor releases.
Kubeflow Pipelines has quarterly minor releases. Patch releases occur on a
need basis and don't currently operate on a schedule.
Patch releases only contain bug fixes, while minor releases have new features
additionally.
@ -85,9 +89,7 @@ if you only want to use or contribute to this repo.
- OS: Linux or MacOS
- Permissions needed
- Can create a branch in github.com/kubeflow/pipelines.
- (Before [#4840](https://github.com/kubeflow/pipelines/issues/4840) is resolved) one would need the admin access to kubeflow/pipelines repo.
- Can trigger cloudbuild jobs in `google.com/ml-pipeline-test` GCP project.
- Admin access to kubeflow/pipelines repo.
- Tools that should be in your `$PATH`
- docker
- python3
@ -167,11 +169,11 @@ Do the following things before a release:
console.log(Array.from(document.querySelectorAll('[id^="issue_"][id*="_link"]')).map(el => /issue_(.*)_link/.exec(el.id)[1]).join(' '))
```
1. Verify cloudbuild and postsubmit tests are passing: visit <https://github.com/kubeflow/pipelines/commits/master> for master branch.
1. Verify release branch CI is passing: visit <https://github.com/kubeflow/pipelines/commits/master> for master branch.
![How to very cloudbuild and postsubmit status](release-status-check.png)
![How to verify release commit status](images/release-status-check.png)
If not, contact the KFP team to determine if the failure(s) would block the release. You can also retry the failed job by opening the detail page of prow job, and click the refresh button next ot the job title.
If not, contact the KFP team to determine if the failure(s) would block the release.
### Releasing from release branch
@ -184,7 +186,7 @@ Note, when releasing from master, all the below mentions of "release branch" mea
- `1.0.1`
- `1.1.0`
- ...
Set the version by using `VERSION=<version-value>`. Contact @chensun if you are not sure what next version should be.
Set the version by using `VERSION=<version-value>`. Contact @chensun or @HumairAK if you are not sure what next version should be.
1. Update all version refs in release branch by
@ -195,39 +197,17 @@ Note, when releasing from master, all the below mentions of "release branch" mea
It will prompt you whether to push it to release branch. Press `y` and hit `Enter`.
Note, the script will clone kubeflow/pipelines repo into a temporary location on your computer, make those changes and attempt to push to upstream, so that it won't interfere with your current git repo.
> [!Note]
> If you see error "docker.sock: connect: permission error", you need to [allow managing docker as a non-root user](https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user).
If you see error "docker.sock: connect: permission error", you need to [allow managing docker as a non-root user](https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user).
1. Build the release images by using the [Build images from sources](https://github.com/kubeflow/pipelines/actions/workflows/image-builds.yml).
1. View related cloudbuild jobs' statuses by clicking the latest commit's status icon
in the release branch. Refer to the screenshot below to find the page.
The target tag should be `$VERSION`.
1. Wait and make sure the `build-each-commit` cloudbuild job that builds all images
in gcr.io/ml-pipeline-test succeeded. If it fails, please click "View more details
on Google Cloud Build" and then "Retry".
![Build Images From Sources](images/build-images.png))
NOTE: you can find your latest release commit in <https://github.com/kubeflow/pipelines/commits/master> and select your release branch.
![How to very cloudbuild and postsubmit status](release-status-check.png)
1. Select the `release-on-tag` cloudbuild job that copies built images and artifacts to
public image registry and gcs bucket. This job should have already failed because
artifacts haven't been built. Now, please click "View more details on Google Cloud Build"
and then "Retry", because after waiting for previous step, artifacts are now ready.
NOTE: **DO NOT** click the "Re-run" button from GitHub Actions status page.
It will create a build with "Branch: $BRANCH" instead of "TAG: $VERSION".
Open "View more details on Google Cloud Build", and rerun from there.
![Retry release-on-tag from the Google Cloud Build details page](retry-release-on-tag.png)
![Verify that you're retrying the right build](verify-retry-the-right-build.png)
TODO: we should have an automation KFP cluster, and the waiting and submiting
`release-on-tag` cloudbuild task should happen automatically.
NOTE: postsubmit tests will most likely fail for the release commit, this is expected, postsubmit
tests start right after the commit is in GitHub repo, but some artifacts they depend on are still
being built by the processes in these two steps.
1. Search "PyPI" in Google internal release doc for getting password of kubeflow-pipelines user.
### Releasing KFP Python Packages
1. Release `kfp-server-api` python packages to PyPI.
@ -241,15 +221,42 @@ and then "Retry", because after waiting for previous step, artifacts are now rea
```
1. Release `kfp` python packages to PyPI. (Note: Please skip this step for backend release, this step will be handled by SDK release.)
Update the SDK version in `version.py` and `readthedocs` `versions.json`, example PR [here](https://github.com/kubeflow/pipelines/pull/11715/files).
```bash
pip3 install twine --user
gsutil cp gs://ml-pipeline/release/$VERSION/kfp.tar.gz kfp-$VERSION.tar.gz
cd sdk/python
./build.sh kfp-$VERSION.tar.gz
python3 -m twine upload kfp-$VERSION.tar.gz
```
!!! The file name must contain the version. See <https://github.com/kubeflow/pipelines/issues/1292>
1. Release `kfp-kubernetes` python packages to PyPI. (Note: Please skip this step for backend release, this step will be handled by SDK release.)
Update the KFP Kubernetes SDK version in `__init__.py` and `readthedocs` `versions.json`, example PR [here](https://github.com/kubeflow/pipelines/pull/11380).
```bash
export KFP_KUBERNETES_VERSION=
pip3 install twine --user
cd kubernetes_platform/python
./create_release_branch.sh
```
Follow the output push instructions to **commit and push the branch to KFP**, then do the following:
```bash
# set this to the appropriate version that matches what was set in __init__.py earlier
export KFP_KUBERNETES_VERSION=
cd kubernetes_platform/python
./release.sh
```
Note that this script will build the package, test install, and push to PyPi.
### Create GitHub Release
1. Create a GitHub release using `$VERSION` git tag and title `Version $VERSION`,
fill in the description. Detailed steps:
@ -260,9 +267,9 @@ fill in the description. Detailed steps:
1. Use this template for public releases and replace the `$VERSION` with real values.
<pre>
To deploy Kubeflow Pipelines in an existing cluster, follow the instruction in [here](https://www.kubeflow.org/docs/pipelines/standalone-deployment-gcp/) or via UI [here](https://console.cloud.google.com/ai-platform/pipelines)
To deploy Kubeflow Pipelines in an existing cluster, follow the instruction in [here](https://www.kubeflow.org/docs/components/pipelines/operator-guides/installation/)
Install python SDK (python 3.7 above) by running:
Install python SDK (python 3.9 above) by running:
```bash
python3 -m pip install kfp kfp-server-api --upgrade
@ -275,9 +282,9 @@ fill in the description. Detailed steps:
***This is a prerelease*** checkbox in the GitHub release UI.
<pre>
To deploy Kubeflow Pipelines in an existing cluster, follow the instruction in [here](https://www.kubeflow.org/docs/pipelines/standalone-deployment-gcp/).
To deploy Kubeflow Pipelines in an existing cluster, follow the instruction in [here](https://www.kubeflow.org/docs/components/pipelines/operator-guides/installation/).
Install kfp-server-api package (python 3.7 above) by running:
Install kfp-server-api package (python 3.9 above) by running:
```bash
python3 -m pip install kfp-server-api==$VERSION --upgrade
@ -289,6 +296,8 @@ fill in the description. Detailed steps:
NOTE, kfp python SDK is **NOT** included and released separately.
</pre>
### Sync Master Branch with latest release
1. **(Do this step only when releasing from a NON-master release branch)**
Update master branch to the same version and include latest changelog:
@ -321,8 +330,32 @@ Update master branch to the same version and include latest changelog:
and create a PR to update the version, e.g. <https://github.com/kubeflow/website/pull/1942>.
1. Follow [Upgrade KFP](https://github.com/kubeflow/testing/tree/master/test-infra/kfp) instruction to upgrade KFP manifests in test-infra.
## Release Process Development
Please refer to [./test/release](./test/release).
## Versioning Policy in KFP
Starting from version **2.14**, all major and minor versions (X.Y) of the Kubeflow Pipelines (KFP) components are aligned. The following components are included in this alignment:
* **KFP Backend / UI**
* **KFP Python SDK**
* **KFP Python Kubernetes Platform SDK**
* **KFP Python Pipeline Specification**
* **KFP Server API**
### Versioning and Compatibility Policy
* **API Compatibility:**
All KFP components sharing the same major and minor version (X.Y) are guaranteed to be API-compatible.
* **Backward Compatibility:**
The KFP project will make a *best effort* to maintain backward compatibility within a given **major version** for all Python SDK packages.
Specifically:
* Newer versions of the KFP Python SDK within the same major release (e.g., 2.x) should continue to function with older versions of the KFP backend.
* However, newly introduced features in a later SDK minor version may require a matching or newer backend version to function correctly. For example:
* A feature introduced in `kfp==2.15` is not guaranteed to be supported by a `2.14` backend. In such cases, upgrading the backend to version `2.15` or later is necessary.
* **Patch Releases:**
Patch versions (X.Y.Z) may include bug fixes, maintenance updates, and minor feature enhancements. These changes must not break API compatibility or violate the support guarantees outlined above.

View File

@ -1,5 +1,64 @@
# Private Security Vulnerability Reporting
# Security Policy
When reporting a vulnerability, please include a description of the issue, the steps you took to create the issue, affected versions, and, if known, mitigations for the issue. If the issue is confirmed as a vulnerability, we will open a Security Advisory. This project follows a 90 day disclosure timeline.
## Supported Versions
To report a security issue, follow [these instructions](https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability).
Kubeflow Pipelines versions are expressed as `X.Y.Z`, where X is the major version,
Y is the minor version, and Z is the patch version, following the
[Semantic Versioning](https://semver.org/) terminology.
The Kubeflow Pipelines project maintains release branches for the most recent two minor releases.
Applicable fixes, including security fixes, may be backported to those two release branches,
depending on severity and feasibility.
Users are encouraged to stay updated with the latest releases to benefit from security patches and
improvements.
## Reporting a Vulnerability
We're extremely grateful for security researchers and users that report vulnerabilities to the
Kubeflow Open Source Community. All reports are thoroughly investigated by Kubeflow projects owners.
You can use the following ways to report security vulnerabilities privately:
- Using the Kubeflow Pipelines repository [GitHub Security Advisory](https://github.com/kubeflow/pipelines/security/advisories/new).
- Using our private Kubeflow Steering Committee mailing list: ksc@kubeflow.org.
Please provide detailed information to help us understand and address the issue promptly.
## Disclosure Process
**Acknowledgment**: We will acknowledge receipt of your report within 10 business days.
**Assessment**: The Kubeflow projects owners will investigate the reported issue to determine its
validity and severity.
**Resolution**: If the issue is confirmed, we will work on a fix and prepare a release.
**Notification**: Once a fix is available, we will notify the reporter and coordinate a public
disclosure.
**Public Disclosure**: Details of the vulnerability and the fix will be published in the project's
release notes and communicated through appropriate channels.
## Prevention Mechanisms
Kubeflow Pipelines employs several measures to prevent security issues:
**Code Reviews**: All code changes are reviewed by maintainers to ensure code quality and security.
**Dependency Management**: Regular updates and monitoring of dependencies (e.g. Dependabot) to
address known vulnerabilities.
**Continuous Integration**: Automated testing and security checks are integrated into the CI/CD pipeline.
**Image Scanning**: Container images are scanned for vulnerabilities.
## Communication Channels
For the general questions please join the following resources:
- Kubeflow [Slack channels](https://www.kubeflow.org/docs/about/community/#kubeflow-slack-channels).
- Kubeflow discuss [mailing list](https://www.kubeflow.org/docs/about/community/#kubeflow-mailing-list).
Please **do not report** security vulnerabilities through public channels.

View File

@ -1 +1 @@
2.2.0
2.14.0

View File

@ -12,8 +12,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
# Contact one of Bobgy, capri-xiyue or zijianjoy if this remote image needs an update.
PREBUILT_REMOTE_IMAGE=gcr.io/ml-pipeline-test/api-generator:latest
# Contact one of chensun, HumairAK if this remote image needs an update.
PREBUILT_REMOTE_IMAGE=ghcr.io/kubeflow/kfp-api-generator:1.2
.PHONY: all
all: golang python
@ -36,10 +36,23 @@ clean-go:
rm -rf v2alpha1/go
rm -f v2alpha1/google/rpc/status.proto
# Generate Python package.
# Build Python package using pre-built image
.PHONY: python
python: v2alpha1/pipeline_spec.proto v2alpha1/google/rpc/status.proto
python3 v2alpha1/python/generate_proto.py && cd v2alpha1/python && python3 setup.py bdist_wheel
python: python fetch-protos
docker run --interactive --rm \
--user $$(id -u):$$(id -g) \
-e HOME=/tmp \
-v "$$(pwd)/..":"/go/src/github.com/kubeflow/pipelines":z \
$(PREBUILT_REMOTE_IMAGE) \
sh -c 'cd /go/src/github.com/kubeflow/pipelines/api/v2alpha1/python && \
python3 -m pip install --user --break-system-packages -r requirements.txt && \
python3 generate_proto.py && \
python3 setup.py sdist bdist_wheel --dist-dir ./dist'
# Build and locally install Python package using editable mode for development.
.PHONY: python-dev
python-dev: v2alpha1/pipeline_spec.proto fetch-protos
python3 v2alpha1/python/generate_proto.py && cd v2alpha1/python && pip install -e .
# Delete all generated Python packages
.PHONY: clean-python
@ -47,12 +60,13 @@ clean-python:
rm -rf v2alpha1/python/build
rm -rf v2alpha1/python/dist
rm -rf v2alpha1/python/kfp_pipeline_spec.egg-info
rm -rf v2alpha1/google
rm -f v2alpha1/python/kfp/pipeline_spec/pipeline_spec_pb2.py
rm -f v2alpha1/google/rpc/status.proto
##########################
###########################################
# The following are IMPLEMENTATION DETAILS.
##########################
###########################################
# Generates proto packages locally, this should only be called:
# * during development
@ -60,7 +74,7 @@ clean-python:
.PHONY: generate
generate: go_pipelinespec go_cachekey
go_pipelinespec: v2alpha1/pipeline_spec.proto v2alpha1/google/rpc/status.proto
go_pipelinespec: v2alpha1/pipeline_spec.proto fetch-protos
mkdir -p v2alpha1/go/pipelinespec
cd v2alpha1 && protoc -I=. \
--go_out=go/pipelinespec \
@ -74,12 +88,32 @@ go_cachekey: v2alpha1/pipeline_spec.proto v2alpha1/cache_key.proto
--go_opt=paths=source_relative \
cache_key.proto
# Fetch dependency proto
v2alpha1/google/rpc/status.proto:
mkdir -p v2alpha1/google/rpc
wget -O v2alpha1/google/rpc/status.proto https://raw.githubusercontent.com/googleapis/googleapis/047d3a8ac7f75383855df0166144f891d7af08d9/google/rpc/status.proto
#########################################
# The following are dependencies
# Required for compiling the proto files
#########################################
GOOGLEAPIS_COMMIT ?= fecd7d35f46753b45bf4519f6342495a181740c9
PROTOBUF_TAG ?= v26.0
PROTO_DST_DIR := v2alpha1/google
TMP_PROTOBUF_DIR := /tmp/protobuf-src
.PHONY: fetch-protos fetch-googleapis fetch-protobuf protoc-gen-go clean-protobuf-tmp
fetch-protos: fetch-googleapis fetch-protobuf
fetch-googleapis:
@echo "Downloading google/rpc/status.proto from googleapis@$(GOOGLEAPIS_COMMIT)..."
mkdir -p $(PROTO_DST_DIR)/rpc
wget -qO $(PROTO_DST_DIR)/rpc/status.proto https://raw.githubusercontent.com/googleapis/googleapis/$(GOOGLEAPIS_COMMIT)/google/rpc/status.proto
fetch-protobuf: clean-protobuf-tmp
@git clone --depth 1 --branch $(PROTOBUF_TAG) https://github.com/protocolbuffers/protobuf.git $(TMP_PROTOBUF_DIR)
@mkdir -p $(PROTO_DST_DIR)/protobuf
@cp $(TMP_PROTOBUF_DIR)/src/google/protobuf/*.proto $(PROTO_DST_DIR)/protobuf/
clean-protobuf-tmp:
@rm -rf $(TMP_PROTOBUF_DIR)
# protoc-gen-go is already installed in api-generator image
.PHONY: protoc-gen-go
protoc-gen-go:
go install google.golang.org/protobuf/cmd/protoc-gen-go

View File

@ -1,7 +1,9 @@
approvers:
- chensun
- connor-mccarthy
- neuromage
reviewers:
- chensun
- connor-mccarthy
- droctothorpe
- zazulam
- mprahl

View File

@ -1,6 +1,6 @@
module github.com/kubeflow/pipelines/api
go 1.16
go 1.23
require (
google.golang.org/genproto v0.0.0-20211026145609-4688e4c4e024

View File

@ -14,8 +14,8 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.26.0
// protoc v3.17.3
// protoc-gen-go v1.36.6
// protoc v6.31.1
// source: cache_key.proto
package cachekey
@ -27,6 +27,7 @@ import (
structpb "google.golang.org/protobuf/types/known/structpb"
reflect "reflect"
sync "sync"
unsafe "unsafe"
)
const (
@ -37,26 +38,23 @@ const (
)
type CacheKey struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
InputArtifactNames map[string]*ArtifactNameList `protobuf:"bytes,1,rep,name=inputArtifactNames,proto3" json:"inputArtifactNames,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
// Deprecated: Do not use.
InputParameters map[string]*pipelinespec.Value `protobuf:"bytes,2,rep,name=inputParameters,proto3" json:"inputParameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
OutputArtifactsSpec map[string]*pipelinespec.RuntimeArtifact `protobuf:"bytes,3,rep,name=outputArtifactsSpec,proto3" json:"outputArtifactsSpec,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
OutputParametersSpec map[string]string `protobuf:"bytes,4,rep,name=outputParametersSpec,proto3" json:"outputParametersSpec,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
state protoimpl.MessageState `protogen:"open.v1"`
InputArtifactNames map[string]*ArtifactNameList `protobuf:"bytes,1,rep,name=inputArtifactNames,proto3" json:"inputArtifactNames,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
// Deprecated: Marked as deprecated in cache_key.proto.
InputParameters map[string]*pipelinespec.Value `protobuf:"bytes,2,rep,name=inputParameters,proto3" json:"inputParameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
OutputArtifactsSpec map[string]*pipelinespec.RuntimeArtifact `protobuf:"bytes,3,rep,name=outputArtifactsSpec,proto3" json:"outputArtifactsSpec,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
OutputParametersSpec map[string]string `protobuf:"bytes,4,rep,name=outputParametersSpec,proto3" json:"outputParametersSpec,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
ContainerSpec *ContainerSpec `protobuf:"bytes,5,opt,name=containerSpec,proto3" json:"containerSpec,omitempty"`
InputParameterValues map[string]*structpb.Value `protobuf:"bytes,6,rep,name=input_parameter_values,json=inputParameterValues,proto3" json:"input_parameter_values,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
InputParameterValues map[string]*structpb.Value `protobuf:"bytes,6,rep,name=input_parameter_values,json=inputParameterValues,proto3" json:"input_parameter_values,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *CacheKey) Reset() {
*x = CacheKey{}
if protoimpl.UnsafeEnabled {
mi := &file_cache_key_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_cache_key_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *CacheKey) String() string {
@ -67,7 +65,7 @@ func (*CacheKey) ProtoMessage() {}
func (x *CacheKey) ProtoReflect() protoreflect.Message {
mi := &file_cache_key_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -89,7 +87,7 @@ func (x *CacheKey) GetInputArtifactNames() map[string]*ArtifactNameList {
return nil
}
// Deprecated: Do not use.
// Deprecated: Marked as deprecated in cache_key.proto.
func (x *CacheKey) GetInputParameters() map[string]*pipelinespec.Value {
if x != nil {
return x.InputParameters
@ -126,21 +124,18 @@ func (x *CacheKey) GetInputParameterValues() map[string]*structpb.Value {
}
type ContainerSpec struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
state protoimpl.MessageState `protogen:"open.v1"`
Image string `protobuf:"bytes,1,opt,name=image,proto3" json:"image,omitempty"`
CmdArgs []string `protobuf:"bytes,2,rep,name=cmdArgs,proto3" json:"cmdArgs,omitempty"`
unknownFields protoimpl.UnknownFields
Image string `protobuf:"bytes,1,opt,name=image,proto3" json:"image,omitempty"`
CmdArgs []string `protobuf:"bytes,2,rep,name=cmdArgs,proto3" json:"cmdArgs,omitempty"`
sizeCache protoimpl.SizeCache
}
func (x *ContainerSpec) Reset() {
*x = ContainerSpec{}
if protoimpl.UnsafeEnabled {
mi := &file_cache_key_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_cache_key_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ContainerSpec) String() string {
@ -151,7 +146,7 @@ func (*ContainerSpec) ProtoMessage() {}
func (x *ContainerSpec) ProtoReflect() protoreflect.Message {
mi := &file_cache_key_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -181,20 +176,17 @@ func (x *ContainerSpec) GetCmdArgs() []string {
}
type ArtifactNameList struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
state protoimpl.MessageState `protogen:"open.v1"`
ArtifactNames []string `protobuf:"bytes,1,rep,name=artifactNames,proto3" json:"artifactNames,omitempty"`
unknownFields protoimpl.UnknownFields
ArtifactNames []string `protobuf:"bytes,1,rep,name=artifactNames,proto3" json:"artifactNames,omitempty"`
sizeCache protoimpl.SizeCache
}
func (x *ArtifactNameList) Reset() {
*x = ArtifactNameList{}
if protoimpl.UnsafeEnabled {
mi := &file_cache_key_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
mi := &file_cache_key_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ArtifactNameList) String() string {
@ -205,7 +197,7 @@ func (*ArtifactNameList) ProtoMessage() {}
func (x *ArtifactNameList) ProtoReflect() protoreflect.Message {
mi := &file_cache_key_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
@ -229,105 +221,51 @@ func (x *ArtifactNameList) GetArtifactNames() []string {
var File_cache_key_proto protoreflect.FileDescriptor
var file_cache_key_proto_rawDesc = []byte{
0x0a, 0x0f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x12, 0x0c, 0x6d, 0x6c, 0x5f, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x1a,
0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x13, 0x70,
0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x22, 0x8a, 0x08, 0x0a, 0x08, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4b, 0x65, 0x79, 0x12,
0x5e, 0x0a, 0x12, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74,
0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6d, 0x6c,
0x5f, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65,
0x4b, 0x65, 0x79, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63,
0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x12, 0x69, 0x6e, 0x70,
0x75, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12,
0x59, 0x0a, 0x0f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65,
0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6d, 0x6c, 0x5f, 0x70, 0x69,
0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4b, 0x65, 0x79,
0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x69, 0x6e, 0x70, 0x75, 0x74,
0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x61, 0x0a, 0x13, 0x6f, 0x75,
0x74, 0x70, 0x75, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x53, 0x70, 0x65,
0x63, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6d, 0x6c, 0x5f, 0x70, 0x69, 0x70,
0x65, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4b, 0x65, 0x79, 0x2e,
0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x53,
0x70, 0x65, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74,
0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x64, 0x0a,
0x14, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72,
0x73, 0x53, 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6d, 0x6c,
0x5f, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65,
0x4b, 0x65, 0x79, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65,
0x74, 0x65, 0x72, 0x73, 0x53, 0x70, 0x65, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x6f,
0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x53,
0x70, 0x65, 0x63, 0x12, 0x41, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
0x53, 0x70, 0x65, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x6c, 0x5f,
0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69,
0x6e, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x66, 0x0a, 0x16, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f,
0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73,
0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6d, 0x6c, 0x5f, 0x70, 0x69, 0x70, 0x65,
0x6c, 0x69, 0x6e, 0x65, 0x73, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4b, 0x65, 0x79, 0x2e, 0x49,
0x6e, 0x70, 0x75, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x56, 0x61, 0x6c,
0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x50,
0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x65,
0x0a, 0x17, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x4e,
0x61, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x34, 0x0a, 0x05, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x6c, 0x5f,
0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61,
0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x57, 0x0a, 0x14, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x50, 0x61,
0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13,
0x2e, 0x6d, 0x6c, 0x5f, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x2e, 0x56, 0x61,
0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x65,
0x0a, 0x18, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74,
0x73, 0x53, 0x70, 0x65, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x33, 0x0a, 0x05,
0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x6c,
0x5f, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69,
0x6d, 0x65, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x47, 0x0a, 0x19, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50,
0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x53, 0x70, 0x65, 0x63, 0x45, 0x6e, 0x74,
0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5f,
0x0a, 0x19, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72,
0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56,
0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
0x3f, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63,
0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6d, 0x64, 0x41, 0x72, 0x67,
0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6d, 0x64, 0x41, 0x72, 0x67, 0x73,
0x22, 0x38, 0x0a, 0x10, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65,
0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74,
0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x72, 0x74,
0x69, 0x66, 0x61, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x42, 0x38, 0x5a, 0x36, 0x67, 0x69,
0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6b, 0x75, 0x62, 0x65, 0x66, 0x6c, 0x6f,
0x77, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f,
0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x61, 0x63, 0x68,
0x65, 0x6b, 0x65, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
const file_cache_key_proto_rawDesc = "" +
"\n" +
"\x0fcache_key.proto\x12\fml_pipelines\x1a\x1cgoogle/protobuf/struct.proto\x1a\x13pipeline_spec.proto\"\x8a\b\n" +
"\bCacheKey\x12^\n" +
"\x12inputArtifactNames\x18\x01 \x03(\v2..ml_pipelines.CacheKey.InputArtifactNamesEntryR\x12inputArtifactNames\x12Y\n" +
"\x0finputParameters\x18\x02 \x03(\v2+.ml_pipelines.CacheKey.InputParametersEntryB\x02\x18\x01R\x0finputParameters\x12a\n" +
"\x13outputArtifactsSpec\x18\x03 \x03(\v2/.ml_pipelines.CacheKey.OutputArtifactsSpecEntryR\x13outputArtifactsSpec\x12d\n" +
"\x14outputParametersSpec\x18\x04 \x03(\v20.ml_pipelines.CacheKey.OutputParametersSpecEntryR\x14outputParametersSpec\x12A\n" +
"\rcontainerSpec\x18\x05 \x01(\v2\x1b.ml_pipelines.ContainerSpecR\rcontainerSpec\x12f\n" +
"\x16input_parameter_values\x18\x06 \x03(\v20.ml_pipelines.CacheKey.InputParameterValuesEntryR\x14inputParameterValues\x1ae\n" +
"\x17InputArtifactNamesEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x124\n" +
"\x05value\x18\x02 \x01(\v2\x1e.ml_pipelines.ArtifactNameListR\x05value:\x028\x01\x1aW\n" +
"\x14InputParametersEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x12)\n" +
"\x05value\x18\x02 \x01(\v2\x13.ml_pipelines.ValueR\x05value:\x028\x01\x1ae\n" +
"\x18OutputArtifactsSpecEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x123\n" +
"\x05value\x18\x02 \x01(\v2\x1d.ml_pipelines.RuntimeArtifactR\x05value:\x028\x01\x1aG\n" +
"\x19OutputParametersSpecEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a_\n" +
"\x19InputParameterValuesEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x12,\n" +
"\x05value\x18\x02 \x01(\v2\x16.google.protobuf.ValueR\x05value:\x028\x01\"?\n" +
"\rContainerSpec\x12\x14\n" +
"\x05image\x18\x01 \x01(\tR\x05image\x12\x18\n" +
"\acmdArgs\x18\x02 \x03(\tR\acmdArgs\"8\n" +
"\x10ArtifactNameList\x12$\n" +
"\rartifactNames\x18\x01 \x03(\tR\rartifactNamesB8Z6github.com/kubeflow/pipelines/api/v2alpha1/go/cachekeyb\x06proto3"
var (
file_cache_key_proto_rawDescOnce sync.Once
file_cache_key_proto_rawDescData = file_cache_key_proto_rawDesc
file_cache_key_proto_rawDescData []byte
)
func file_cache_key_proto_rawDescGZIP() []byte {
file_cache_key_proto_rawDescOnce.Do(func() {
file_cache_key_proto_rawDescData = protoimpl.X.CompressGZIP(file_cache_key_proto_rawDescData)
file_cache_key_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cache_key_proto_rawDesc), len(file_cache_key_proto_rawDesc)))
})
return file_cache_key_proto_rawDescData
}
var file_cache_key_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
var file_cache_key_proto_goTypes = []interface{}{
var file_cache_key_proto_goTypes = []any{
(*CacheKey)(nil), // 0: ml_pipelines.CacheKey
(*ContainerSpec)(nil), // 1: ml_pipelines.ContainerSpec
(*ArtifactNameList)(nil), // 2: ml_pipelines.ArtifactNameList
@ -363,49 +301,11 @@ func file_cache_key_proto_init() {
if File_cache_key_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_cache_key_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CacheKey); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_cache_key_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ContainerSpec); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_cache_key_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ArtifactNameList); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_cache_key_proto_rawDesc,
RawDescriptor: unsafe.Slice(unsafe.StringData(file_cache_key_proto_rawDesc), len(file_cache_key_proto_rawDesc)),
NumEnums: 0,
NumMessages: 8,
NumExtensions: 0,
@ -416,7 +316,6 @@ func file_cache_key_proto_init() {
MessageInfos: file_cache_key_proto_msgTypes,
}.Build()
File_cache_key_proto = out.File
file_cache_key_proto_rawDesc = nil
file_cache_key_proto_goTypes = nil
file_cache_key_proto_depIdxs = nil
}

File diff suppressed because it is too large Load Diff

View File

@ -93,6 +93,8 @@ message ComponentSpec {
DagSpec dag = 3;
string executor_label = 4;
}
// Supports platform-specific component features.
repeated SinglePlatformSpec single_platform_specs = 5;
}
// A DAG contains multiple tasks.
@ -290,7 +292,7 @@ message TaskInputsSpec {
// Represents an input parameter. The value can be taken from an upstream
// task's output parameter (if specifying `producer_task` and
// `output_parameter_key`, or it can be a runtime value, which can either be
// `output_parameter_key`), or it can be a runtime value, which can either be
// determined at compile-time, or from a pipeline parameter.
message InputParameterSpec {
// Represents an upstream task's output parameter.
@ -305,9 +307,9 @@ message TaskInputsSpec {
// Represents an upstream task's final status. The field can only be set if
// the schema version is `2.0.0`. The resolved input parameter will be a
// json payload in string type.
// JSON payload in string type.
message TaskFinalStatus {
// The name of the upsteram task where the final status is coming from.
// The name of the upstream task where the final status is coming from.
string producer_task = 1;
}
@ -318,7 +320,7 @@ message TaskInputsSpec {
ValueOrRuntimeParameter runtime_value = 2;
// Pass the input parameter from parent component input parameter.
string component_input_parameter = 3;
// The final status of an uptream task.
// The final status of an upstream task.
TaskFinalStatus task_final_status = 5;
}
@ -459,6 +461,9 @@ message PipelineTaskSpec {
message CachingOptions {
// Whether or not to enable cache for this task. Defaults to false.
bool enable_cache = 1;
// Customized cache key for this task. If set, the cache_key will be used
// as the key for the task's cache.
string cache_key = 2;
}
CachingOptions caching_options = 6;
@ -522,7 +527,7 @@ message PipelineTaskSpec {
// t2.outputs.parameters = { 'p': 'v2' }
// t2.outputs.artifacts = { 'a': [a2] }
// parent_task.outputs.parameters = { 'p': '["v1", "v2"]' }
// parent_task.outputs.aritfacts = { 'a': [a1, a2] }
// parent_task.outputs.artifacts = { 'a': [a1, a2] }
oneof iterator {
// Iterator to iterate over an artifact input.
ArtifactIteratorSpec artifact_iterator = 9;
@ -586,7 +591,7 @@ message ArtifactIteratorSpec {
// The spec of a parameter iterator. It supports fan-out a workflow from a
// string parameter which contains a JSON array.
message ParameterIteratorSpec {
// Specifies the spec to decribe the parameter items to iterate.
// Specifies the spec to describe the parameter items to iterate.
message ItemsSpec {
// Specifies where to get the collection of items to iterate. The iterator
// will create a sub-task for each item of the collection and pass the item
@ -618,7 +623,7 @@ message PipelineInfo {
// Required field. The name of the pipeline.
// The name will be used to create or find pipeline context in MLMD.
string name = 1;
// Optional fields. The readable display name for the pipeline template.
// Should not exceed 1024 characters.
string display_name = 2;
@ -722,29 +727,66 @@ message PipelineDeploymentConfig {
message ResourceSpec {
// The limit of the number of vCPU cores. This container execution needs
// at most cpu_limit vCPU to run.
double cpu_limit = 1;
// Deprecated. Use [ResourceSpec.resource_cpu_limit] instead.
double cpu_limit = 1 [deprecated = true];
// The memory limit in GB. This container execution needs at most
// memory_limit RAM to run.
double memory_limit = 2;
// Deprecated. Use [ResourceSpec.resource_memory_limit] instead.
double memory_limit = 2 [deprecated = true];
// The request of the number of vCPU cores. This container execution
// needs at least cpu_request vCPU to run.
double cpu_request = 5;
// Deprecated. Use [ResourceSpec.resource_cpu_request] instead.
double cpu_request = 5 [deprecated = true];
// The memory request in GB. This container execution needs at least
// memory_request RAM to run.
double memory_request = 6;
// Deprecated. Use [ResourceSpec.resource_memory_request] instead.
double memory_request = 6 [deprecated = true];
// The limit of the number of vCPU cores. This container execution needs
// at most resource_cpu_limit vCPU to run. Handles static values and
// placeholders.
string resource_cpu_limit = 7;
// The memory limit in GB. This container execution needs
// at most resource_memory_limit RAM to run. Handles static values and
// placeholders.
string resource_memory_limit = 8;
// The request of the number of vCPU cores. This container
// execution needs at least resource_cpu_request vCPU to run. Handles
// static values and placeholders.
string resource_cpu_request = 9;
// The memory request in GB. This container execution
// needs at least resource_memory_request RAM to run. Handles static
// values and placeholders.
string resource_memory_request = 10;
// The specification on the accelerators being attached to this container.
message AcceleratorConfig {
// The type of accelerators.
string type = 1;
// Deprecated. Use [ResourceSpec.AcceleratorConfig.resource_type]
// instead.
string type = 1 [deprecated = true];
// The number of accelerators.
int64 count = 2;
// Deprecated. Use [ResourceSpec.AcceleratorConfig.resource_count]
// instead.
int64 count = 2 [deprecated = true];
// The type of accelerators. Handles static values and
// placeholders.
string resource_type = 3;
// The number of accelerators. Handles static values and
// placeholders.
string resource_count = 4;
}
AcceleratorConfig accelerator = 3;
reserved 4;
}
ResourceSpec resources = 5;
@ -1045,11 +1087,55 @@ message PlatformSpec {
message SinglePlatformSpec {
// Mirrors PipelineSpec.deployment_spec structure
PlatformDeploymentConfig deployment_spec = 1;
}
// Name of the platform. For example, "google_cloud"
string platform = 2;
// Arbitrary configuration, which will be defined by the platform
// protos/libraries.
google.protobuf.Struct config = 3;
PipelineConfig pipelineConfig = 4;
}
message PlatformDeploymentConfig {
// Map of executor label to executor-level config
// Mirrors PipelineSpec.deployment_spec.executors structure
map<string, google.protobuf.Struct> executors = 1;
}
message WorkspaceConfig {
// Size of the workspace
// Example: "250Gi"
// See https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/ for valid quantity formats
string size = 1;
// Kubernetes specific configuration for the workspace
optional KubernetesWorkspaceConfig kubernetes = 2;
}
message KubernetesWorkspaceConfig {
// Patch of a PersistentVolumeClaim (PVC) spec to override defaults set on the API server for the workspace PVC
// Example: {
// "storageClassName": "super-fast-storage",
// "accessModes": ["ReadWriteMany"]
// }
optional google.protobuf.Struct pvc_spec_patch = 1;
}
// Spec for pipeline-level config options. See PipelineConfig DSL class.
message PipelineConfig {
// Name of the semaphore key to control pipeline concurrency
string semaphore_key = 1;
// Name of the mutex to ensure mutual exclusion
string mutex_name = 2;
// Time to live configuration after the pipeline run is completed for
// ephemeral resources created by the pipeline run.
int32 resource_ttl = 3;
// Configuration for a shared storage workspace that persists for the duration of the pipeline run.
// The workspace can be configured with size and Kubernetes-specific settings to override default PVC configurations.
optional WorkspaceConfig workspace = 4;
}

View File

@ -0,0 +1,8 @@
# Typically we can't support multiple major versions of protobuf
# The runtime protobuf package MUST be aligned with the protobuf
# libraries used to generate the code (protoc, protoc-gen-go, etc.)
# For example protobuf 5.x aligns with protoc 26.x-29.x but
# 6.x aligns with 30.x+.
# See for support tiers:
# https://protobuf.dev/support/version-support/#python
protobuf==6.31.1,<7.0

View File

@ -13,9 +13,21 @@
# limitations under the License.
import setuptools
import os
from typing import List
NAME = 'kfp-pipeline-spec'
VERSION = '0.3.0'
VERSION = '2.14.0'
def get_requirements(requirements_file: str) -> List[str]:
"""Read requirements from requirements.in."""
file_path = os.path.join(os.path.dirname(__file__), requirements_file)
with open(file_path, 'r') as f:
lines = f.readlines()
lines = [line.strip() for line in lines]
lines = [line for line in lines if not line.startswith('#') and line]
return lines
setuptools.setup(
name=NAME,
@ -25,8 +37,8 @@ setuptools.setup(
author_email='kubeflow-pipelines@google.com',
url='https://github.com/kubeflow/pipelines',
packages=setuptools.find_namespace_packages(include=['kfp.*']),
python_requires='>=3.7.0,<3.13.0',
install_requires=['protobuf>=4.21.1,<5'],
python_requires='>=3.9.0',
install_requires=get_requirements('requirements.txt'),
include_package_data=True,
license='Apache 2.0',
)

View File

@ -13,28 +13,29 @@
# limitations under the License.
# 1. Build api server application
FROM golang:1.21.7-bookworm as builder
FROM golang:1.24-bookworm AS builder
RUN apt-get update && apt-get install -y cmake clang musl-dev openssl
WORKDIR /go/src/github.com/kubeflow/pipelines
COPY ./go.mod ./
COPY ./go.sum ./
COPY ./kubernetes_platform/go.mod ./kubernetes_platform/go.mod
COPY ./api/go.mod ./api/go.mod
RUN GO111MODULE=on go mod download
COPY . .
RUN GO111MODULE=on go build -o /bin/apiserver backend/src/apiserver/*.go
# Check licenses and comply with license terms.
RUN ./hack/install-go-licenses.sh
# First, make sure there's no forbidden license.
RUN go-licenses check ./backend/src/apiserver
RUN go-licenses csv ./backend/src/apiserver > /tmp/licenses.csv && \
diff /tmp/licenses.csv backend/third_party_licenses/apiserver.csv && \
go-licenses save ./backend/src/apiserver --save_path /tmp/NOTICES
# 2. Compile preloaded pipeline samples
FROM python:3.8 as compiler
FROM python:3.9 AS compiler
RUN apt-get update -y && apt-get install --no-install-recommends -y -q default-jdk python3-setuptools python3-dev jq
RUN wget https://bootstrap.pypa.io/get-pip.py && python3 get-pip.py
COPY backend/requirements.txt .
RUN python3 -m pip install -r requirements.txt --no-cache-dir
# Downloading Argo CLI so that the samples are validated
ENV ARGO_VERSION v3.4.16
ENV ARGO_VERSION=v3.6.7
RUN curl -sLO https://github.com/argoproj/argo-workflows/releases/download/${ARGO_VERSION}/argo-linux-amd64.gz && \
gunzip argo-linux-amd64.gz && \
chmod +x argo-linux-amd64 && \
@ -47,9 +48,9 @@ COPY backend/src/apiserver/config/sample_config.json /samples/
# Compiling the preloaded samples.
# The default image is replaced with the GCR-hosted python image.
RUN set -e; \
< /samples/sample_config.json jq .[].file --raw-output | while read pipeline_yaml; do \
< /samples/sample_config.json jq ".pipelines[].file" --raw-output | while read pipeline_yaml; do \
pipeline_py="${pipeline_yaml%.yaml}"; \
python3 "$pipeline_py"; \
echo "Compiling: \"$pipeline_py\"" && python3 "$pipeline_py" && echo -n "Output: " && ls "$pipeline_py.yaml"; \
done
# 3. Start api web server
@ -59,22 +60,19 @@ ARG COMMIT_SHA=unknown
ENV COMMIT_SHA=${COMMIT_SHA}
ARG TAG_NAME=unknown
ENV TAG_NAME=${TAG_NAME}
ENV LOG_LEVEL info
ENV LOG_LEVEL=info
WORKDIR /bin
# Adding CA certificate so API server can download pipeline through URL and wget is used for liveness/readiness probe command
RUN apt-get update && apt-get install -y ca-certificates wget
COPY backend/src/apiserver/config/ /config
COPY --from=builder /bin/apiserver /bin/apiserver
# Copy licenses and notices.
COPY --from=builder /tmp/licenses.csv /third_party/licenses.csv
COPY --from=builder /tmp/NOTICES /third_party/NOTICES
COPY --from=compiler /samples/ /samples/
RUN chmod +x /bin/apiserver
# Adding CA certificate so API server can download pipeline through URL and wget is used for liveness/readiness probe command
RUN apt-get update && apt-get install -y ca-certificates wget
# Pin sample doc links to the commit that built the backend image
RUN sed -E "s#/(blob|tree)/master/#/\1/${COMMIT_SHA}/#g" -i /config/sample_config.json && \
sed -E "s/%252Fmaster/%252F${COMMIT_SHA}/#g" -i /config/sample_config.json

View File

@ -13,25 +13,25 @@
# limitations under the License.
# Dockerfile for building the source code of cache_server
FROM golang:1.21.7-alpine3.19 as builder
FROM golang:1.24-alpine as builder
RUN apk update && apk upgrade && \
apk add --no-cache bash git openssh gcc musl-dev
WORKDIR /go/src/github.com/kubeflow/pipelines
COPY ./go.mod ./
COPY ./go.sum ./
COPY ./kubernetes_platform/go.mod ./kubernetes_platform/go.mod
COPY ./api/go.mod ./api/go.mod
RUN GO111MODULE=on go mod download
COPY . .
RUN GO111MODULE=on go build -o /bin/cache_server backend/src/cache/*.go
# Check licenses and comply with license terms.
RUN ./hack/install-go-licenses.sh
# First, make sure there's no forbidden license.
RUN go-licenses check ./backend/src/cache
RUN go-licenses csv ./backend/src/cache > /tmp/licenses.csv && \
diff /tmp/licenses.csv backend/third_party_licenses/cache_server.csv && \
go-licenses save ./backend/src/cache --save_path /tmp/NOTICES
FROM alpine:3.19
FROM alpine
RUN adduser -S appuser
USER appuser
@ -39,8 +39,5 @@ USER appuser
WORKDIR /bin
COPY --from=builder /bin/cache_server /bin/cache_server
# Copy licenses and notices.
COPY --from=builder /tmp/licenses.csv /third_party/licenses.csv
COPY --from=builder /tmp/NOTICES /third_party/NOTICES
ENTRYPOINT [ "/bin/cache_server" ]

View File

@ -13,12 +13,18 @@
# limitations under the License.
# Dockerfile for building the source code of conformance tests
FROM golang:1.21.7-alpine3.19 as builder
FROM golang:1.24-alpine as builder
RUN apk update && apk upgrade && \
apk add --no-cache bash git openssh gcc musl-dev
WORKDIR /go/src/github.com/kubeflow/pipelines
COPY ./go.mod ./
COPY ./go.sum ./
RUN GO111MODULE=on go mod download
COPY . .
# Compile the test
@ -34,7 +40,7 @@ RUN chmod +x /test/integration/run.sh
RUN tar -czvf /test.tar.gz /test
FROM alpine:3.8
FROM alpine:3.9
COPY --from=builder /test.tar.gz /
RUN tar -xzvf /test.tar.gz

View File

@ -12,20 +12,22 @@
# See the License for the specific language governing permissions and
# limitations under the License.
FROM golang:1.21.7-alpine3.19 as builder
FROM golang:1.24-alpine AS builder
ARG GCFLAGS=""
WORKDIR /go/src/github.com/kubeflow/pipelines
COPY ./go.mod ./
COPY ./go.sum ./
COPY ./kubernetes_platform/go.mod ./kubernetes_platform/go.mod
COPY ./api/go.mod ./api/go.mod
RUN GO111MODULE=on go mod download
COPY . .
RUN GO111MODULE=on CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -tags netgo -ldflags '-extldflags "-static"' -o /bin/driver ./backend/src/v2/cmd/driver/*.go
# Check licenses and comply with license terms.
RUN ./hack/install-go-licenses.sh
# First, make sure there's no forbidden license.
RUN go-licenses check ./backend/src/v2/cmd/driver
RUN go-licenses csv ./backend/src/v2/cmd/driver > /tmp/licenses.csv && \
diff /tmp/licenses.csv backend/third_party_licenses/driver.csv && \
go-licenses save ./backend/src/v2/cmd/driver --save_path /tmp/NOTICES
RUN GO111MODULE=on CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -tags netgo -gcflags="${GCFLAGS}" -ldflags '-extldflags "-static"' -o /bin/driver ./backend/src/v2/cmd/driver/*.go
FROM alpine:3.19
@ -35,8 +37,5 @@ USER appuser
WORKDIR /bin
COPY --from=builder /bin/driver /bin/driver
# Copy licenses and notices.
COPY --from=builder /tmp/licenses.csv /third_party/licenses.csv
COPY --from=builder /tmp/NOTICES /third_party/NOTICES
ENTRYPOINT [ "/bin/driver" ]
ENTRYPOINT [ "/bin/driver" ]

View File

@ -12,21 +12,21 @@
# See the License for the specific language governing permissions and
# limitations under the License.
FROM golang:1.21.7-alpine3.19 as builder
FROM golang:1.24-alpine AS builder
WORKDIR /go/src/github.com/kubeflow/pipelines
COPY ./go.mod ./
COPY ./go.sum ./
COPY ./kubernetes_platform/go.mod ./kubernetes_platform/go.mod
COPY ./api/go.mod ./api/go.mod
RUN GO111MODULE=on go mod download
COPY . .
RUN GO111MODULE=on CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -tags netgo -ldflags '-extldflags "-static"' -o /bin/launcher-v2 ./backend/src/v2/cmd/launcher-v2/*.go
# Check licenses and comply with license terms.
RUN ./hack/install-go-licenses.sh
# First, make sure there's no forbidden license.
RUN go-licenses check ./backend/src/v2/cmd/launcher-v2
RUN go-licenses csv ./backend/src/v2/cmd/launcher-v2 > /tmp/licenses.csv && \
diff /tmp/licenses.csv backend/third_party_licenses/launcher.csv && \
go-licenses save ./backend/src/v2/cmd/launcher-v2 --save_path /tmp/NOTICES
FROM alpine:3.19
RUN adduser -S appuser
@ -35,8 +35,5 @@ USER appuser
WORKDIR /bin
COPY --from=builder /bin/launcher-v2 /bin/launcher-v2
# Copy licenses and notices.
COPY --from=builder /tmp/licenses.csv /third_party/licenses.csv
COPY --from=builder /tmp/NOTICES /third_party/NOTICES
ENTRYPOINT [ "/bin/launcher-v2" ]
ENTRYPOINT [ "/bin/launcher-v2" ]

View File

@ -12,23 +12,24 @@
# See the License for the specific language governing permissions and
# limitations under the License.
FROM golang:1.21.7-alpine3.19 as builder
WORKDIR /go/src/github.com/kubeflow/pipelines
COPY . .
FROM golang:1.24-alpine AS builder
# Needed musl-dev for github.com/mattn/go-sqlite3
RUN apk update && apk upgrade && \
apk add --no-cache bash git openssh gcc musl-dev
WORKDIR /go/src/github.com/kubeflow/pipelines
COPY ./go.mod ./
COPY ./go.sum ./
COPY ./kubernetes_platform/go.mod ./kubernetes_platform/go.mod
COPY ./api/go.mod ./api/go.mod
RUN GO111MODULE=on go mod download
COPY . .
RUN GO111MODULE=on go build -o /bin/persistence_agent backend/src/agent/persistence/*.go
# Check licenses and comply with license terms.
RUN ./hack/install-go-licenses.sh
# First, make sure there's no forbidden license.
RUN go-licenses check ./backend/src/agent/persistence
RUN go-licenses csv ./backend/src/agent/persistence > /tmp/licenses.csv && \
diff /tmp/licenses.csv backend/third_party_licenses/persistence_agent.csv && \
go-licenses save ./backend/src/agent/persistence --save_path /tmp/NOTICES
FROM alpine:3.19
@ -38,19 +39,15 @@ USER appuser
WORKDIR /bin
COPY --from=builder /bin/persistence_agent /bin/persistence_agent
# Copy licenses and notices.
COPY --from=builder /tmp/licenses.csv /third_party/licenses.csv
COPY --from=builder /tmp/NOTICES /third_party/NOTICES
ENV NAMESPACE ""
ENV NAMESPACE=""
# Set Workflow TTL to 1 day. The way to use a different value for a particular Kubeflow Pipelines deployment is demonstrated in manifests/kustomize/base/pipeline/ml-pipeline-persistenceagent-deployment.yaml
ENV TTL_SECONDS_AFTER_WORKFLOW_FINISH 86400
ENV TTL_SECONDS_AFTER_WORKFLOW_FINISH=86400
# NUM_WORKERS indicates now many worker goroutines
ENV NUM_WORKERS 2
ENV LOG_LEVEL info
ENV NUM_WORKERS=2
ENV LOG_LEVEL=info
ENV EXECUTIONTYPE Workflow
ENV EXECUTIONTYPE=Workflow
CMD persistence_agent --logtostderr=true --namespace=${NAMESPACE} --ttlSecondsAfterWorkflowFinish=${TTL_SECONDS_AFTER_WORKFLOW_FINISH} --numWorker ${NUM_WORKERS} --executionType ${EXECUTIONTYPE} --logLevel=${LOG_LEVEL}
CMD persistence_agent --logtostderr=true --namespace=${NAMESPACE} --ttlSecondsAfterWorkflowFinish=${TTL_SECONDS_AFTER_WORKFLOW_FINISH} --numWorker ${NUM_WORKERS} --executionType ${EXECUTIONTYPE} --logLevel=${LOG_LEVEL}

View File

@ -12,23 +12,24 @@
# See the License for the specific language governing permissions and
# limitations under the License.
FROM golang:1.21.7-alpine3.19 as builder
WORKDIR /go/src/github.com/kubeflow/pipelines
COPY . .
FROM golang:1.24-alpine AS builder
# Needed musl-dev for github.com/mattn/go-sqlite3
RUN apk update && apk upgrade && \
apk add --no-cache bash git openssh gcc musl-dev
WORKDIR /go/src/github.com/kubeflow/pipelines
COPY ./go.mod ./
COPY ./go.sum ./
COPY ./kubernetes_platform/go.mod ./kubernetes_platform/go.mod
COPY ./api/go.mod ./api/go.mod
RUN GO111MODULE=on go mod download
COPY . .
RUN GO111MODULE=on go build -o /bin/controller backend/src/crd/controller/scheduledworkflow/*.go
# Check licenses and comply with license terms.
RUN ./hack/install-go-licenses.sh
# First, make sure there's no forbidden license.
RUN go-licenses check ./backend/src/crd/controller/scheduledworkflow
RUN go-licenses csv ./backend/src/crd/controller/scheduledworkflow > /tmp/licenses.csv && \
diff /tmp/licenses.csv backend/third_party_licenses/swf.csv && \
go-licenses save ./backend/src/crd/controller/scheduledworkflow --save_path /tmp/NOTICES
FROM alpine:3.19
@ -40,11 +41,7 @@ USER appuser
WORKDIR /bin
COPY --from=builder /bin/controller /bin/controller
# Copy licenses and notices.
COPY --from=builder /tmp/licenses.csv /third_party/licenses.csv
COPY --from=builder /tmp/NOTICES /third_party/NOTICES
ENV NAMESPACE ""
ENV LOG_LEVEL info
ENV NAMESPACE=""
ENV LOG_LEVEL=info
CMD /bin/controller --logtostderr=true --namespace=${NAMESPACE} --logLevel=${LOG_LEVEL}

View File

@ -12,22 +12,23 @@
# See the License for the specific language governing permissions and
# limitations under the License.
FROM golang:1.21.7-alpine3.19 as builder
FROM golang:1.24-alpine as builder
RUN apk update && apk upgrade
RUN apk add --no-cache git gcc musl-dev
WORKDIR /src/github.com/kubeflow/pipelines
COPY ./go.mod ./
COPY ./go.sum ./
COPY ./kubernetes_platform/go.mod ./kubernetes_platform/go.mod
COPY ./api/go.mod ./api/go.mod
RUN GO111MODULE=on go mod download
COPY . .
RUN GO111MODULE=on go build -o /bin/controller backend/src/crd/controller/viewer/*.go
# Check licenses and comply with license terms.
RUN ./hack/install-go-licenses.sh
# First, make sure there's no forbidden license.
RUN go-licenses check ./backend/src/crd/controller/viewer
RUN go-licenses csv ./backend/src/crd/controller/viewer > /tmp/licenses.csv && \
diff /tmp/licenses.csv backend/third_party_licenses/viewer.csv && \
go-licenses save ./backend/src/crd/controller/viewer --save_path /tmp/NOTICES
FROM alpine
WORKDIR /bin
@ -35,9 +36,6 @@ WORKDIR /bin
COPY --from=builder /bin/controller /bin/controller
RUN chmod +x /bin/controller
# Copy licenses and notices.
COPY --from=builder /tmp/licenses.csv /third_party/licenses.csv
COPY --from=builder /tmp/NOTICES /third_party/NOTICES
ENV MAX_NUM_VIEWERS "50"
ENV NAMESPACE "kubeflow"

View File

@ -21,12 +21,12 @@
FROM tensorflow/tensorflow:2.10.1
RUN apt-get update \
&& apt-get install -y wget curl tar openssl
&& apt-get install -y wget curl tar openssl \
&& curl https://dl.google.com/dl/cloudsdk/release/google-cloud-sdk.tar.gz > /tmp/google-cloud-sdk.tar.gz \
&& mkdir -p /usr/local/gcloud \
&& tar -C /usr/local/gcloud -xf /tmp/google-cloud-sdk.tar.gz \
&& /usr/local/gcloud/google-cloud-sdk/install.sh
RUN curl https://dl.google.com/dl/cloudsdk/release/google-cloud-sdk.tar.gz > /tmp/google-cloud-sdk.tar.gz
RUN mkdir -p /usr/local/gcloud
RUN tar -C /usr/local/gcloud -xf /tmp/google-cloud-sdk.tar.gz
RUN /usr/local/gcloud/google-cloud-sdk/install.sh
ENV PATH $PATH:/usr/local/gcloud/google-cloud-sdk/bin
WORKDIR /src

View File

@ -1,82 +1,139 @@
BUILD=build
MOD_ROOT=..
CSV_PATH=backend/third_party_licenses
KIND_NAME ?= dev-pipelines-api
CERT_MANAGER_VERSION ?= v1.16.2
# Container Build Params
CONTAINER_ENGINE ?= docker
CONTAINER_ENGINE ?= $(shell \
if command -v docker >/dev/null 2>&1; then \
echo docker; \
elif command -v podman >/dev/null 2>&1; then \
echo podman; \
fi \
)
# IMG_REGISTRY can be used to automatically prepend registry details. e.g. "quay.io/kubeflow/"
IMG_REGISTRY ?=
IMG_TAG_APISERVER ?= apiserver
IMG_TAG_PERSISTENCEAGENT ?= persistence-agent
IMG_TAG_CACHESERVER ?= cache-server
IMG_TAG_SCHEDULEDWORKFLOW ?= scheduledworkflow
IMG_TAG_VIEWERCONTROLLER ?= viewercontroller
IMG_TAG_VISUALIZATION ?= visualization
IMG_TAG_DRIVER ?= kfp-driver
IMG_TAG_LAUNCHER ?= kfp-launcher
IMG_TAG_WEBHOOK_PROXY ?= domain.local/kfp/webhook-proxy:latest
# Whenever build command for any of the binaries change, we should update them both here and in backend/Dockerfiles.
.PHONY: all
all: license_apiserver license_persistence_agent license_cache_server license_swf license_viewer license_driver license_launcher
all: image_all
.PHONY: clean
clean:
rm -rf $(BUILD)
$(BUILD)/apiserver:
GO111MODULE=on go build -o $(BUILD)/apiserver github.com/kubeflow/pipelines/backend/src/apiserver
$(BUILD)/persistence_agent:
GO111MODULE=on go build -o $(BUILD)/persistence_agent github.com/kubeflow/pipelines/backend/src/agent/persistence
$(BUILD)/cache_server:
GO111MODULE=on go build -o $(BUILD)/cache_server github.com/kubeflow/pipelines/backend/src/cache
$(BUILD)/swf:
GO111MODULE=on go build -o $(BUILD)/swf github.com/kubeflow/pipelines/backend/src/crd/controller/scheduledworkflow
$(BUILD)/viewer:
GO111MODULE=on go build -o $(BUILD)/viewer github.com/kubeflow/pipelines/backend/src/crd/controller/viewer
$(BUILD)/driver:
GO111MODULE=on go build -o $(BUILD)/driver github.com/kubeflow/pipelines/backend/src/v2/cmd/driver
$(BUILD)/launcher:
GO111MODULE=on go build -o $(BUILD)/launcher github.com/kubeflow/pipelines/backend/src/v2/cmd/launcher-v2
# Update licenses info after dependencies changed.
# See README.md#updating-licenses-info section for more details.
.PHONY: license_apiserver
license_apiserver: $(BUILD)/apiserver
cd $(MOD_ROOT) && go-licenses csv ./backend/src/apiserver > $(CSV_PATH)/apiserver.csv
.PHONY: license_persistence_agent
license_persistence_agent: $(BUILD)/persistence_agent
cd $(MOD_ROOT) && go-licenses csv ./backend/src/agent/persistence > $(CSV_PATH)/persistence_agent.csv
.PHONY: license_cache_server
license_cache_server: $(BUILD)/cache_server
cd $(MOD_ROOT) && go-licenses csv ./backend/src/cache > $(CSV_PATH)/cache_server.csv
.PHONY: license_swf
license_swf: $(BUILD)/swf
cd $(MOD_ROOT) && go-licenses csv ./backend/src/crd/controller/scheduledworkflow > $(CSV_PATH)/swf.csv
.PHONY: license_viewer
license_viewer: $(BUILD)/viewer
cd $(MOD_ROOT) && go-licenses csv ./backend/src/crd/controller/viewer > $(CSV_PATH)/viewer.csv
.PHONY: license_driver
license_driver: $(BUILD)/driver
cd $(MOD_ROOT) && go-licenses csv ./backend/src/v2/cmd/driver > $(CSV_PATH)/driver.csv
.PHONY: license_launcher
license_launcher: $(BUILD)/launcher
cd $(MOD_ROOT) && go-licenses csv ./backend/src/v2/cmd/launcher-v2 > $(CSV_PATH)/launcher.csv
.PHONY: image_all
image_all: image_apiserver image_persistence_agent image_cache image_swf image_viewer image_visualization
image_all: image_apiserver image_persistence_agent image_cache image_swf image_viewer image_visualization image_driver image_launcher
.PHONY: image_apiserver
image_apiserver:
cd $(MOD_ROOT) && ${CONTAINER_ENGINE} build -t ${IMG_TAG_APISERVER} -f backend/Dockerfile .
cd $(MOD_ROOT) && ${CONTAINER_ENGINE} build --platform linux/amd64 -t ${IMG_REGISTRY}${IMG_TAG_APISERVER} -f backend/Dockerfile .
.PHONY: image_persistence_agent
image_persistence_agent:
cd $(MOD_ROOT) && ${CONTAINER_ENGINE} build -t ${IMG_TAG_PERSISTENCEAGENT} -f backend/Dockerfile.persistenceagent .
cd $(MOD_ROOT) && ${CONTAINER_ENGINE} build --platform linux/amd64 -t ${IMG_REGISTRY}${IMG_TAG_PERSISTENCEAGENT} -f backend/Dockerfile.persistenceagent .
.PHONY: image_cache
image_cache:
cd $(MOD_ROOT) && ${CONTAINER_ENGINE} build -t ${IMG_TAG_CACHESERVER} -f backend/Dockerfile.cacheserver .
cd $(MOD_ROOT) && ${CONTAINER_ENGINE} build --platform linux/amd64 -t ${IMG_REGISTRY}${IMG_TAG_CACHESERVER} -f backend/Dockerfile.cacheserver .
.PHONY: image_swf
image_swf:
cd $(MOD_ROOT) && ${CONTAINER_ENGINE} build -t ${IMG_TAG_SCHEDULEDWORKFLOW} -f backend/Dockerfile.scheduledworkflow .
cd $(MOD_ROOT) && ${CONTAINER_ENGINE} build --platform linux/amd64 -t ${IMG_REGISTRY}${IMG_TAG_SCHEDULEDWORKFLOW} -f backend/Dockerfile.scheduledworkflow .
.PHONY: image_viewer
image_viewer:
cd $(MOD_ROOT) && ${CONTAINER_ENGINE} build -t ${IMG_TAG_VIEWERCONTROLLER} -f backend/Dockerfile.viewercontroller .
cd $(MOD_ROOT) && ${CONTAINER_ENGINE} build --platform linux/amd64 -t ${IMG_REGISTRY}${IMG_TAG_VIEWERCONTROLLER} -f backend/Dockerfile.viewercontroller .
.PHONY: image_visualization
image_visualization:
cd $(MOD_ROOT) && ${CONTAINER_ENGINE} build -t ${IMG_TAG_VISUALIZATION} -f backend/Dockerfile.visualization .
cd $(MOD_ROOT) && ${CONTAINER_ENGINE} build --platform linux/amd64 -t ${IMG_REGISTRY}${IMG_TAG_VISUALIZATION} -f backend/Dockerfile.visualization .
.PHONY: image_driver
image_driver:
cd $(MOD_ROOT) && ${CONTAINER_ENGINE} build --platform linux/amd64 -t ${IMG_REGISTRY}${IMG_TAG_DRIVER} -f backend/Dockerfile.driver .
.PHONY: image_driver_debug
image_driver_debug:
cd $(MOD_ROOT) && sed -e '/RUN .*go mod download/a\
RUN go install github.com/go-delve/delve/cmd/dlv@latest' \
-e '/COPY .*\/bin\/driver \/bin\/driver/a\
COPY . \/go\/src\/github.com\/kubeflow\/pipelines\
COPY --from=builder /go/bin/dlv /bin/dlv\
EXPOSE 2345' \
backend/Dockerfile.driver > backend/Dockerfile.driver-debug
cd $(MOD_ROOT) && ${CONTAINER_ENGINE} build --platform linux/amd64 --build-arg GCFLAGS="all=-N -l" -t ${IMG_REGISTRY}${IMG_TAG_DRIVER}:debug -f backend/Dockerfile.driver-debug .
.PHONY: image_launcher
image_launcher:
cd $(MOD_ROOT) && ${CONTAINER_ENGINE} build --platform linux/amd64 -t ${IMG_REGISTRY}${IMG_TAG_LAUNCHER} -f backend/Dockerfile.launcher .
.PHONY: install-cert-manager
install-cert-manager:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/$(CERT_MANAGER_VERSION)/cert-manager.yaml
kubectl wait deployment -n cert-manager cert-manager --for condition=Available=True --timeout=180s
kubectl wait --for=condition=Ready pod -l app.kubernetes.io/instance=cert-manager -n cert-manager --timeout=180s
# Creates a Kind cluster and Deploys a standalone KFP instance
# In the Kubeflow namespace.
.PHONY: kind-cluster-agnostic
kind-cluster-agnostic:
# Deploy Kind Cluster
kind create cluster --name $(KIND_NAME)
kubectl config use-context kind-$(KIND_NAME)
kind get kubeconfig --name $(KIND_NAME) > $(CURDIR)/../kubeconfig_$(KIND_NAME)
# Deploy cluster resources required by KFP
kubectl apply -k $(CURDIR)/../manifests/kustomize/cluster-scoped-resources
kubectl wait --for condition=established --timeout=1m crd/applications.app.k8s.io
# Deploy KFP
kubectl apply -k $(CURDIR)/../manifests/kustomize/env/platform-agnostic
kubectl -n kubeflow wait --for condition=Available --timeout=10m deployment/mysql
kubectl -n kubeflow wait --for condition=Available --timeout=3m deployment/metadata-grpc-deployment
kubectl -n kubeflow wait --for condition=Available --timeout=3m deployment/ml-pipeline
# Switch to Kubeflow namespace context
kubectl config set-context --current --namespace=kubeflow
.PHONY: dev-kind-cluster
dev-kind-cluster:
${CONTAINER_ENGINE} build -t ${IMG_TAG_WEBHOOK_PROXY} -f $(CURDIR)/../tools/kind/Dockerfile.webhook-proxy $(CURDIR)/../tools/kind
-kind create cluster --name $(KIND_NAME) --config $(CURDIR)/../tools/kind/kind-config.yaml
kubectl config use-context kind-$(KIND_NAME)
kind get kubeconfig --name $(KIND_NAME) > $(CURDIR)/../kubeconfig_$(KIND_NAME)
@if [ "${CONTAINER_ENGINE}" = "docker" ]; then \
kind --name ${KIND_NAME} load docker-image ${IMG_TAG_WEBHOOK_PROXY}; \
else \
bash -c "kind load --name ${KIND_NAME} image-archive <( ${CONTAINER_ENGINE} save ${IMG_TAG_WEBHOOK_PROXY})"; \
fi
$(MAKE) install-cert-manager
kubectl apply -k $(CURDIR)/../manifests/kustomize/cluster-scoped-resources
kubectl wait --for condition=established --timeout=1m crd/applications.app.k8s.io
kubectl apply -k $(CURDIR)/../manifests/kustomize/env/dev-kind
kubectl apply -f $(CURDIR)/../tools/kind/webhook-proxy.yaml
kubectl -n kubeflow wait --for condition=Available --timeout=10m deployment/mysql
kubectl -n kubeflow wait --for condition=Available --timeout=3m deployment/metadata-grpc-deployment
.PHONY: kind-load-driver-debug
kind-load-driver-debug:
@if [ "${CONTAINER_ENGINE}" = "docker" ]; then \
kind --name ${KIND_NAME} load docker-image ${IMG_TAG_DRIVER}:debug
else \
bash -c "kind load --name ${KIND_NAME} image-archive <( ${CONTAINER_ENGINE} save ${IMG_TAG_DRIVER})"; \
fi
.PHONY: kind-build-and-load-driver-debug
kind-build-and-load-driver-debug: image_driver_debug kind-load-driver-debug
.PHONY: lint-and-format
lint-and-format: lint format
.PHONY: lint
lint:
golangci-lint run --new-from-rev HEAD --fix
.PHONY: format
format:
golangci-lint fmt

View File

@ -1,8 +1,14 @@
approvers:
- chensun
- Tomcli
- rimolive
- hbelmiro
- mprahl
reviewers:
- chensun
- Tomcli
- hbelmiro
- HumairAK
- rimolive
- mprahl
- gmfrasca
- droctothorpe
- zazulam

View File

@ -1,7 +1,20 @@
# Kubeflow Pipelines Backend
## Overview
This directory contains code for the components that comprise the Kubeflow
Pipelines backend.
## Building & Testing
This README will help you set up your coding environment in order to build and run the Kubeflow Pipelines backend. The KFP backend powers the core functionality of the KFP platform, handling API requests, workflow management, and data persistence.
## Prerequisites
Before you begin, ensure you have:
- [Go installed](https://go.dev/doc/install)
- Docker or Podman installed (for building container images)
Note that you may need to restart your shell after installing these resources in order for the changes to take effect.
## Testing
To run all unittests for backend:
@ -9,72 +22,335 @@ To run all unittests for backend:
go test -v -cover ./backend/...
```
If running a [local API server](#run-the-kfp-backend-locally-with-a-kind-cluster), you can run the integration tests
with:
```bash
LOCAL_API_SERVER=true go test -v ./backend/test/v2/integration/... -namespace kubeflow -args -runIntegrationTests=true
```
To run a specific test, you can use the `-run` flag. For example, to run the `TestCacheSingleRun` test in the
`TestCache` suite, you can use the `-run 'TestCache/TestCacheSingleRun'` flag to the above command.
## Build
The API server itself can be built using:
```
go build -o /tmp/apiserver backend/src/apiserver/*.go
```
## Code Style
The API server image can be built from the root folder of the repo using:
```
export API_SERVER_IMAGE=api_server
docker build -f backend/Dockerfile . --tag $API_SERVER_IMAGE
```
### Deploying the APIServer (from the image you built) on Kubernetes
First, push your image to a registry that is accessible from your Kubernetes cluster.
Then, run:
```
kubectl edit deployment.v1.apps/ml-pipeline -n kubeflow
```
You'll see the field reference the api server container image (`spec.containers[0].image: gcr.io/ml-pipeline/api-server:<image-version>`).
Change it to point to your own build, after saving and closing the file, apiserver will restart with your change.
### Building client library and swagger files
After making changes to proto files, the Go client libraries, Python client libraries and swagger files
need to be regenerated and checked-in. Refer to [backend/api](./api/README.md) for details.
### Updating python dependencies
[pip-tools](https://github.com/jazzband/pip-tools) is used to manage python
dependencies. To update dependencies, edit [requirements.in](requirements.in)
and run `./update_requirements.sh` to update and pin the transitive
dependencies.
### Building conformance tests (WIP)
Run
```
docker build . -f backend/Dockerfile.conformance -t <tag>
```
## API Server Development
### Run the KFP Backend Locally With a Kind Cluster
This deploys a local Kubernetes cluster leveraging [kind](https://kind.sigs.k8s.io/), with all the components required
to run the Kubeflow Pipelines API server. Note that the `ml-pipeline` `Deployment` (API server) has its replicas set to
0 so that the API server can be run locally for debugging and faster development. The local API server is available by
pods on the cluster using the `ml-pipeline` `Service`.
#### Prerequisites
* The [kind CLI](https://kind.sigs.k8s.io/docs/user/quick-start/#installation) is installed.
* The following ports are available on your localhost: 3000, 3306, 8080, 9000, and 8889. If these are unavailable,
modify [kind-config.yaml](../tools/kind/kind-config.yaml) and configure the API server with alternative ports when
running locally.
* If using a Mac, you will need to modify the
[Endpoints](../manifests/kustomize/env/dev-kind/forward-local-api-endpoint.yaml) manifest to leverage the bridge
network interface through Docker/Podman Desktop. See
[kind #1200](https://github.com/kubernetes-sigs/kind/issues/1200#issuecomment-1304855791) for an example manifest.
* Optional: VSCode is installed to leverage a sample `launch.json` file.
* This relies on dlv: (go install -v github.com/go-delve/delve/cmd/dlv@latest)
#### Provisioning the Cluster
To provision the kind cluster, run the following from the Git repository's root directory:
```bash
make -C backend dev-kind-cluster
```
This may take several minutes since there are many pods. Note that many pods will be in "CrashLoopBackOff" status until
all the pods have started.
> [!NOTE]
> The config in the `make` command above sets the `ml-pipeline` `Deployment` (api server) to have 0 replicas. The intent is to replace it with a locally running API server for debugging and faster development. See the following steps to run the API server locally, and connect it to the KFP backend on your Kind cluster. Note that other backend components (for example, the persistence agent) may show errors until the API server is brought up and connected to the cluster.
#### Launching the API Server With VSCode
After the cluster is provisioned, you may leverage the following sample `.vscode/launch.json` file to run the API
server locally:
```json
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch API Server (Kind)",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "${workspaceFolder}/backend/src/apiserver",
"env": {
"POD_NAMESPACE": "kubeflow",
"DBCONFIG_MYSQLCONFIG_HOST": "localhost",
"MINIO_SERVICE_SERVICE_HOST": "localhost",
"MINIO_SERVICE_SERVICE_PORT": "9000",
"METADATA_GRPC_SERVICE_SERVICE_HOST": "localhost",
"METADATA_GRPC_SERVICE_SERVICE_PORT": "8080",
"ML_PIPELINE_VISUALIZATIONSERVER_SERVICE_HOST": "localhost",
"ML_PIPELINE_VISUALIZATIONSERVER_SERVICE_PORT": "8888",
"V2_LAUNCHER_IMAGE": "ghcr.io/kubeflow/kfp-launcher:master",
"V2_DRIVER_IMAGE": "ghcr.io/kubeflow/kfp-driver:master"
},
"args": [
"--config",
"${workspaceFolder}/backend/src/apiserver/config",
"-logtostderr=true"
]
}
]
}
```
#### Using the Environment
Once the cluster is provisioned and the API server is running, you can access the API server at
[http://localhost:8888](http://localhost:8888)
(e.g. [http://localhost:8888/apis/v2beta1/pipelines](http://localhost:8888/apis/v2beta1/pipelines)).
You can also access the Kubeflow Pipelines web interface at [http://localhost:3000](http://localhost:3000).
You can also directly connect to the MariaDB database server with:
```bash
mysql -h 127.0.0.1 -u root
```
### Scheduled Workflow Development
If you also want to run the Scheduled Workflow controller locally, stop the controller on the cluster with:
```bash
kubectl -n kubeflow scale deployment ml-pipeline-scheduledworkflow --replicas=0
```
Then you may leverage the following sample `.vscode/launch.json` file to run the Scheduled Workflow controller locally:
```json
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch Scheduled Workflow controller (Kind)",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "${workspaceFolder}/backend/src/crd/controller/scheduledworkflow",
"env": {
"CRON_SCHEDULE_TIMEZONE": "UTC"
},
"args": [
"-namespace=kubeflow",
"-kubeconfig=${workspaceFolder}/kubeconfig_dev-pipelines-api",
"-mlPipelineAPIServerName=localhost"
]
}
]
}
```
### Remote Debug the Driver
These instructions assume you are leveraging the Kind cluster in the
[Run Locally With a Kind Cluster](#run-locally-with-a-kind-cluster) section.
#### Build the Driver Image With Debug Prerequisites
Run the following to create the `backend/Dockerfile.driver-debug` file and build the container image
tagged as `kfp-driver:debug`. This container image is based on `backend/Dockerfile.driver` but installs
[Delve](https://github.com/go-delve/delve), builds the binary without compiler optimizations so the binary matches the
source code (via `GCFLAGS="all=-N -l"`), and copies the source code to the destination container for the debugger.
Any changes to the Driver code will require rebuilding this container image.
```bash
make -C backend image_driver_debug
```
Then load the container image in the Kind cluster.
```bash
make -C backend kind-load-driver-debug
```
Alternatively, you can use this Make target that does both.
```bash
make -C kind-build-and-load-driver-debug
```
#### Run the API Server With Debug Configuration
You may use the following VS Code `launch.json` file to run the API server which overrides the Driver
command to use Delve and the Driver image to use debug image built previously.
VSCode configuration:
```json
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch API server (Kind) (Debug Driver)",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "${workspaceFolder}/backend/src/apiserver",
"env": {
"POD_NAMESPACE": "kubeflow",
"DBCONFIG_MYSQLCONFIG_HOST": "localhost",
"MINIO_SERVICE_SERVICE_HOST": "localhost",
"MINIO_SERVICE_SERVICE_PORT": "9000",
"METADATA_GRPC_SERVICE_SERVICE_HOST": "localhost",
"METADATA_GRPC_SERVICE_SERVICE_PORT": "8080",
"ML_PIPELINE_VISUALIZATIONSERVER_SERVICE_HOST": "localhost",
"ML_PIPELINE_VISUALIZATIONSERVER_SERVICE_PORT": "8888",
"V2_LAUNCHER_IMAGE": "ghcr.io/kubeflow/kfp-launcher:master",
"V2_DRIVER_IMAGE": "kfp-driver:debug",
"V2_DRIVER_COMMAND": "dlv exec --listen=:2345 --headless=true --api-version=2 --log /bin/driver --"
}
}
]
}
```
GoLand configuration:
1. Create a new Go Build configuration
2. Set **Run Kind** to Directory and set **Directory** to /backend/src/apiserver absolute path
3. Set the following environment variables
| Argument | Value |
|----------------------------------------------|-----------|
| POD_NAMESPACE | kubeflow |
| DBCONFIG_MYSQLCONFIG_HOST | localhost |
| MINIO_SERVICE_SERVICE_HOST | localhost |
| MINIO_SERVICE_SERVICE_PORT | 9000 |
| METADATA_GRPC_SERVICE_SERVICE_HOST | localhost |
| METADATA_GRPC_SERVICE_SERVICE_PORT | 8080 |
| ML_PIPELINE_VISUALIZATIONSERVER_SERVICE_HOST | localhost |
| ML_PIPELINE_VISUALIZATIONSERVER_SERVICE_PORT | 8888 |
| V2_LAUNCHER_IMAGE | localhost |
| V2_DRIVER_IMAGE | localhost |
| V2_DRIVER_COMMAND | dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient exec /bin/driver -- |
4. Set the following program arguments: --config ./backend/src/apiserver/config -logtostderr=true --sampleconfig ./backend/src/apiserver/config/test_sample_config.json
#### Starting a Remote Debug Session
Start by launching a pipeline. This will eventually create a Driver pod that is waiting for a remote debug connection.
You can see the pods with the following command.
```bash
kubectl -n kubeflow get pods -w
```
Once you see a pod with `-driver` in the name such as `hello-world-clph9-system-dag-driver-10974850`, port forward
the Delve port in the pod to your localhost (replace `<driver pod name>` with the actual name).
```bash
kubectl -n kubeflow port-forward <driver pod name> 2345:2345
```
Set a breakpoint on the Driver code in VS Code. Then remotely connect to the Delve debug session with the following VS
Code `launch.json` file:
VSCode configuration:
```json
{
"version": "0.2.0",
"configurations": [
{
"name": "Connect to remote driver",
"type": "go",
"request": "attach",
"mode": "remote",
"remotePath": "/go/src/github.com/kubeflow/pipelines",
"port": 2345,
"host": "127.0.0.1",
}
]
}
```
GoLand configuration:
1. Create a new Go Remote configuration and title it "Delve debug session"
2. Set **Host** to localhost
3. Set **Port** to 2345
Once the Driver pod succeeds, the remote debug session will close. Then repeat the process of forwarding the port
of subsequent Driver pods and starting remote debug sessions in VS Code until the pipeline completes.
For debugging a specific Driver pod, you'll need to continuously port forward and connect to the remote debug session
without a breakpoint so that Delve will continue execution until the Driver pod you are interested in starts up. At that
point, you can set a break point, port forward, and connect to the remote debug session to debug that specific Driver
pod.
### Using a Webhook Proxy for Local Development in a Kind Cluster
The Kubeflow Pipelines API server typically runs over HTTPS when deployed in a Kubernetes cluster. However, during local development, it operates over HTTP, which Kubernetes admission webhooks do not support (they require HTTPS). This incompatibility prevents webhooks from functioning correctly in a local Kind cluster.
To resolve this, a webhook proxy acts as a bridge, allowing webhooks to communicate with the API server even when it runs over HTTP.
This is used by default when using the `dev-kind-cluster` Make target.
### Deleting the Kind Cluster
Run the following to delete the cluster (once you are finished):
```bash
kind delete clusters dev-pipelines-api
```
## Contributing
### Code Style
Backend codebase follows the [Google's Go Style Guide](https://google.github.io/styleguide/go/). Please, take time to get familiar with the [best practices](https://google.github.io/styleguide/go/best-practices). It is not intended to be exhaustive, but it often helps minimizing guesswork among developers and keep codebase uniform and consistent.
We use [golangci-lint](https://golangci-lint.run/) tool that can catch common mistakes locally (see detailed configuration [here](https://github.com/kubeflow/pipelines/blob/master/.golangci.yaml)). It can be [conveniently integrated](https://golangci-lint.run/usage/integrations/) with multiple popular IDEs such as VS Code or Vim.
Finally, it is advised to install [pre-commit](https://pre-commit.com/) in order to automate linter checks (see configuration [here](https://github.com/kubeflow/pipelines/blob/master/.pre-commit-config.yaml))
## Building APIServer image locally
The API server image can be built from the root folder of the repo using:
```
export API_SERVER_IMAGE=api_server
docker build -f backend/Dockerfile . --tag $API_SERVER_IMAGE
```
## Deploy APIServer with the image you own build
Run
```
kubectl edit deployment.v1.apps/ml-pipeline -n kubeflow
```
You'll see the field reference the api server docker image.
Change it to point to your own build, after saving and closing the file, apiserver will restart with your change.
## Building client library and swagger files
After making changes to proto files, the Go client libraries, Python client libraries and swagger files
need to be regenerated and checked-in. Refer to [backend/api](./api/README.md) for details.
## Updating licenses info
1. [Install go-licenses tool](../hack/install-go-licenses.sh) and refer to [its documentation](https://github.com/google/go-licenses) for how to use it.
2. Run the tool to update all licenses:
```bash
make all
```
## Updating python dependencies
[pip-tools](https://github.com/jazzband/pip-tools) is used to manage python
dependencies. To update dependencies, edit [requirements.in](requirements.in)
and run `./update_requirements.sh` to update and pin the transitive
dependencies.
# Visualization Server Instructions
## Updating python dependencies
[pip-tools](https://github.com/jazzband/pip-tools) is used to manage python
dependencies. To update dependencies, edit [requirements.in](requirements.in)
and run `./update_requirements.sh` to update and pin the transitive
dependencies.
## Building conformance tests (WIP)
Run
```
docker build . -f backend/Dockerfile.conformance -t <tag>
```

View File

@ -13,42 +13,71 @@
# limitations under the License.
# Generate client code (go & json) from API protocol buffers
FROM golang:1.20 as generator
ENV GRPC_GATEWAY_VERSION v1.9.6
ENV GO_SWAGGER_VERSION v0.18.0
ENV GOLANG_PROTOBUF_VERSION v1.5.1
ENV GRPC_VERSION v1.23.0
ENV PROTOC_VERSION 3.17.3
FROM golang:1.24 as generator
ENV GRPC_GATEWAY_VERSION v2.27.1
ENV GO_SWAGGER_VERSION v0.32.3
ENV GRPC_VERSION v1.73.0
ENV PROTOC_VERSION 31.1
ENV GOBIN=/go/bin
# The googleapis repo doesn't use GitHub releases or version tags,
# so we pin a specific commit to make the clone reproducible.
ENV GOOGLEAPIS_COMMIT 68d5196a529174df97c28c70622ffc1c3721815f
# **Note** that protoc-gen-go-grpc is packaged with grpc-go but is versioned
# separately. You can find the releases for protoc-gen-go-grpc here:
# https://github.com/grpc/grpc-go/releases
# **Note** that these also include releases for grpc-go which is the grpc Go
# runtime package. protoc-gen-go-grpc is the package used for generating
# Go GRPC code from .proto files.
# to list recent protoc-gen-go-grpc versions you can also do:
# go list -m -versions google.golang.org/grpc/cmd/protoc-gen-go-grpc
# PROTOC_GEN_GO_GRPC & PROTOBUF_GO versions should match reasonably close to each other.
# You can check the protobuf in the go.mod for protoc-gen-go-grpc, like here:
# https://github.com/grpc/grpc-go/blob/cmd/protoc-gen-go-grpc/v1.5.1/cmd/protoc-gen-go-grpc/go.mod#L7
# **Note** That BOTH PROTOC_GEN_GO_GRPC & PROTOBUF_GO here are used for
# Generating GO Code. These versions should be identical to the
# runtime Go packages (in the project go.mod)
ENV PROTOC_GEN_GO_GRPC v1.5.1
ENV PROTOBUF_GO=v1.36.6
# Install protoc.
RUN apt-get update -y && apt-get install -y jq sed unzip
RUN curl -L -o protoc.zip https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-linux-x86_64.zip
RUN unzip -o protoc.zip -d /usr/ bin/protoc
RUN unzip -o protoc.zip -d /usr/ 'include/*'
RUN unzip -o protoc.zip -d /tmp/protoc && \
mv /tmp/protoc/bin/protoc /usr/bin/protoc && \
chmod +x /usr/bin/protoc
RUN unzip -o protoc.zip 'include/*' -d /tmp/protoc && \
mv /tmp/protoc/include/* /usr/include
RUN rm -f protoc.zip
ENV PROTOCCOMPILER /usr/bin/protoc
ENV PROTOCINCLUDE /usr/include/google/protobuf
# Need grpc-gateway source code for -I in protoc command.
WORKDIR /go/src/github.com
RUN mkdir grpc-ecosystem && cd grpc-ecosystem && git clone --depth 1 --branch $GRPC_GATEWAY_VERSION https://github.com/grpc-ecosystem/grpc-gateway.git
RUN mkdir grpc && git clone --depth 1 --branch $GRPC_VERSION https://github.com/grpc/grpc-go
# Install protoc-gen-rpc-gateway && protoc-gen-swagger.
RUN cd grpc-ecosystem/grpc-gateway && GO111MODULE=on go mod vendor
RUN go install github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway@latest
RUN go install github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger@latest
RUN go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@${GRPC_GATEWAY_VERSION}
RUN go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@${GRPC_GATEWAY_VERSION}
# Need to explicitly provide the googleapis protos and the OpenAPI options that were previously present in the grpc-gateway repo.
RUN git init /googleapis && \
cd /googleapis && \
git remote add origin https://github.com/googleapis/googleapis.git && \
git fetch --depth 1 origin ${GOOGLEAPIS_COMMIT} && \
git checkout FETCH_HEAD
RUN mkdir -p /protoc-gen-openapiv2 && \
cp -r /go/pkg/mod/github.com/grpc-ecosystem/grpc-gateway/v2@${GRPC_GATEWAY_VERSION}/protoc-gen-openapiv2/options /protoc-gen-openapiv2/options
# Download go-swagger binary.
RUN curl -LO "https://github.com/go-swagger/go-swagger/releases/download/${GO_SWAGGER_VERSION}/swagger_linux_amd64"
RUN chmod +x swagger_linux_amd64 && mv swagger_linux_amd64 /usr/bin/swagger
# Need protobuf source code for -I in protoc command.
RUN mkdir golang && cd golang && git clone --depth 1 --branch $GOLANG_PROTOBUF_VERSION https://github.com/golang/protobuf.git
# Install protoc-gen-go.
RUN cd golang/protobuf && GO111MODULE=on go mod vendor
RUN go install github.com/golang/protobuf/protoc-gen-go@latest
RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@${PROTOBUF_GO}
RUN go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@${PROTOC_GEN_GO_GRPC}
# Needed for buildling python packages requiring protoc
RUN apt-get update && apt-get install -y python3-pip
RUN pip3 install --upgrade pip setuptools wheel --break-system-packages
# WORKAROUND: https://github.com/docker-library/golang/issues/225#issuecomment-403170792
ENV XDG_CACHE_HOME /tmp/.cache

View File

@ -15,12 +15,14 @@
# Makefile to generate KFP api clients from proto.
IMAGE_TAG=kfp-api-generator
# Contact chensun or zijianjoy if this remote image needs an update.
REMOTE_IMAGE=gcr.io/ml-pipeline-test/api-generator
# Image generated by https://github.com/kubeflow/pipelines/pull/10580
# Keep in sync with the version used in test/release/Dockerfile.release
PREBUILT_REMOTE_IMAGE=gcr.io/ml-pipeline-test/api-generator@sha256:41fd3e60ba40430a4c3d87e03be817c5f63b2dfed23059ec9d6bca62ce0cc39c
# Contact chensun or HumairAK if this remote image needs an update.
REMOTE_IMAGE=ghcr.io/kubeflow/kfp-api-generator
# Assume the latest API version by default.
API_VERSION ?= v2beta1
# Keep in sync with the version used in test/release/Dockerfile.release
PREBUILT_REMOTE_IMAGE=ghcr.io/kubeflow/kfp-api-generator:1.2
RELEASE_IMAGE=ghcr.io/kubeflow/kfp-release:1.2.1
CONTAINER_ENGINE ?= docker
# Generate clients using a pre-built api-generator image.
@ -32,11 +34,21 @@ generate: fetch-dependencies hack/generator.sh $(API_VERSION)/*.proto
--mount type=bind,source="$$(pwd)/../..",target=/go/src/github.com/kubeflow/pipelines \
$(PREBUILT_REMOTE_IMAGE) /go/src/github.com/kubeflow/pipelines/backend/api/hack/generator.sh
# Use the release image since it has some additional dependencies
# required by kfp-pipeline-ser generation
.PHONY: generate-kfp-server-api-package
generate-kfp-server-api-package:
${CONTAINER_ENGINE} run --interactive --rm \
-e API_VERSION=$(API_VERSION) \
--user $$(id -u):$$(id -g) \
--mount type=bind,source="$$(pwd)/../..",target=/go/src/github.com/kubeflow/pipelines \
$(RELEASE_IMAGE) /go/src/github.com/kubeflow/pipelines/backend/api/build_kfp_server_api_python_package.sh
# Fetch dependency proto
.PHONY: fetch-dependencies
fetch-dependencies: v2beta1/google/rpc/status.proto
# TODO(gkcalat): add this as a submodule?
v2beta1/google/rpc/status.proto:
mkdir -p v2beta1/google/rpc
wget -O v2beta1/google/rpc/status.proto https://raw.githubusercontent.com/googleapis/googleapis/047d3a8ac7f75383855df0166144f891d7af08d9/google/rpc/status.proto

View File

@ -12,7 +12,7 @@ Tools needed:
Set the environment variable `API_VERSION` to the version that you want to generate. We use `v1beta1` as example here.
```bash
export API_VERSION="v1beta1"
export API_VERSION="v2beta1"
```
## Compiling `.proto` files to Go client and swagger definitions
@ -81,7 +81,9 @@ API definitions in this folder are used to generate [`v1beta1`](https://www.kube
API generator image is defined in [Dockerfile](`./Dockerfile`). If you need to update the container, follow these steps:
1. Update the [Dockerfile](`./Dockerfile`) and build the image by running `docker build -t gcr.io/ml-pipeline-test/api-generator:latest .`
1. Push the new container by running `docker push gcr.io/ml-pipeline-test/api-generator:latest` (requires to be [authenticated](https://cloud.google.com/container-registry/docs/advanced-authentication)).
1. Login to GHCR container registry: `echo "<PAT>" | docker login ghcr.io -u <USERNAME> --password-stdin`
* Replace `<PAT>` with a GitHub Personal Access Token (PAT) with the write:packages and `read:packages` scopes, as well as `delete:packages` if needed.
1. Update the [Dockerfile](`./Dockerfile`) and build the image by running `docker build -t ghcr.io/kubeflow/kfp-api-generator:$VERSION .`
1. Push the new container by running `docker push ghcr.io/kubeflow/kfp-api-generator:$VERSION`.
1. Update the `PREBUILT_REMOTE_IMAGE` variable in the [Makefile](./Makefile) to point to your new image.
1. Similarly, push a new version of the release tools image to `gcr.io/ml-pipeline-test/release:latest` and run `make push` in [test/release/Makefile](../../test/release/Makefile).
1. Similarly, push a new version of the release tools image to `ghcr.io/kubeflow/kfp-release:$VERSION` and run `make push` in [test/release/Makefile](../../test/release/Makefile).

View File

@ -58,6 +58,10 @@ java -jar "$codegen_file" generate -g python -t "$CURRENT_DIR/$API_VERSION/pytho
"packageUrl": "https://github.com/kubeflow/pipelines"
}')
echo "Removing unnecessary GitLab and TravisCI generated files"
rm $CURRENT_DIR/$API_VERSION/python_http_client/.gitlab-ci.yml
rm $CURRENT_DIR/$API_VERSION/python_http_client/.travis.yml
echo "Copying LICENSE to $DIR"
cp "$CURRENT_DIR/../../LICENSE" "$DIR"

Some files were not shown because too many files have changed in this diff Show More