Skip to content

Mlflow Release Pipeline #44

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 8 commits into
base: main
Choose a base branch
from

Conversation

diamonwiggins
Copy link
Member

@diamonwiggins diamonwiggins commented Apr 8, 2025

  • Adds release pipeline using GH Actions
  • Adds Taskfile for dev/test/release tasks
  • Adds tests for Mlflow
  • Adds docs for the Helm Chart

fix app slug

fix helm setup action

fix helm version

add ct.yaml

bump upload-artifact version

fix kubeconfig retrieval

bump chart testing version

fix typo

ci improvements and adding kots install

remove conditional from create release

pass license file as content

pass license as content

modify app slug for unstable channel

fix slug

move some steps to make targets

add replicated helm install to pipeline

fix chart testing setup

fix makefile

debug ci

debug ci

fix ci

fix ci

use jq to parse customer json

debug ci

try getting oci working with chart testing

fix ct install kubeconfig

offset channel name by run number in case of re-runs

add more distros

revert adding distros

cleanup

add test for mlflow

fix mlflow test domain

fix chart file path

fix helm install

stop using chart-testing

fix helm install

enable application tests

debug

remove make

make sure helm dependencies get updated

fix helm install

bump timeout on test script and increase cluster size

use kubectl port forward to access app

fix port forward

wait before port-forward

fix authentication in test script

fix test

add application testing for kots install

improve wait for mlfow service before starting test

moving to taskfile

moving to taskfile

commit taskfile

fix taskfile

remove check deps

fix get licenseid

fix get licenseid

fix get licenseid

fix get licenseid

fix get licenseid

fix port forward

fix port forward

add missing dependency for tests

refactor taskfile

polish readme
@diamonwiggins diamonwiggins force-pushed the diamonwiggins/release-pipeline branch from 8304186 to fcd8d87 Compare April 14, 2025 14:23
Copy link
Member

@chris-sanders chris-sanders left a comment

Choose a reason for hiding this comment

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

A few comments

Comment on lines +21 to +22
task add:repos:helm
task update:deps:helm
Copy link
Member

Choose a reason for hiding this comment

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

Interesting is this the actual command? So rather than helm-add-repos or helm-update-deps the command had ":" in it? Is that because of how the tasks are organized/imported or just an intentional naming decision?

I don't know that I have any particular opinion on the right way but this at least looked different enough to me to stand out.

Copy link
Member Author

Choose a reason for hiding this comment

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

The LLM chose this naming scheme, and since this is my first time using Taskfile, i thought this was idiomatic to Taskfile in some way 😆

- task: forward:port

# Port forwarding task
forward:port:
Copy link
Member

Choose a reason for hiding this comment

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

This is a really big task.
I wonder if you would be better served to split of the status checking into a utility task. Something that you could re-use in other tasks as well if you're just 'waiting for deploy' or something.

- echo "Running application tests against MLflow on localhost:{{.PORT}}..."
- |
echo "Installing Python dependencies for tests..."
pip3 install setuptools mlflow==2.11.0 pandas>=2.0.0 scikit-learn>=1.3.0 requests>=2.31.0 urllib3>=2.0.0
Copy link
Member

Choose a reason for hiding this comment

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

Ouch this doesn't look like how I would want to manage my test dependencies :)

pyproject.toml or at least a requirements file that get's installed would be a lot easier to maintain and update. There is tooling that can process those where as this is going to always require manual updates.

Copy link
Member Author

@diamonwiggins diamonwiggins Apr 14, 2025

Choose a reason for hiding this comment

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

yeah, for sure. wouldn't leave it this way, but have plans to give some more thought to the tests part of this in a follow up PR.

Copy link
Member

Choose a reason for hiding this comment

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

I'm fine with test tasks being follow on from here, maybe leave a note in a comment to make that clear to future travelers.

@@ -0,0 +1,267 @@
#!/usr/bin/env python3
Copy link
Member

Choose a reason for hiding this comment

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

If you're going to use python for testing, wouldn't using pytest clean things up some? It would handle printing test results, provide a modular system to define tests, and you can just lean into the other python tooling for dependencies and environments.

Copy link
Member Author

@diamonwiggins diamonwiggins Apr 14, 2025

Choose a reason for hiding this comment

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

yeah, agreed. there's a mlflow_example.py in the repo and I basically had it(the robots) convert that into a "test", but wasn't too prescriptive on that part yet. This is in my notes to create a follow up story to make this better.

Copy link
Member

Choose a reason for hiding this comment

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

As above, I'm fine with testing being a follow up task with a note somewhere that it's still under development.

sh: helm show chart ./charts/infra | grep '^version:' | cut -d ' ' -f 2

# Release configuration
APP_NAME: diamon-mlflow
Copy link
Member

Choose a reason for hiding this comment

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

It is hardcode. Should we change to APP_NAME: '{{.APP_NAME | default "diamon-mlflow"}}'?
or APP_NAME: '{{.APP_NAME | default ""}}' and add check afterward

Copy link
Member

Choose a reason for hiding this comment

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

I'll also point out that Ash made a change that I merged into wg_easy branch to move from APP_NAME to whatever it is the replicated cli is using. REPLICATED_APP or something like that? Check the latest wg-easy branch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants