docs/v3/get-started/github-quickstart.mdx
Using the prefect-cloud CLI, you can deploy any Python script that's available in a GitHub repository and run it on a schedule in the cloud for free in a few simple steps.
You'll need the following to get started with Prefect Cloud:
Next, open a terminal and execute the commands in the following steps to deploy and run your script in Prefect Cloud.
<Steps> <Step title="Log in to Prefect Cloud"> ```bash uvx prefect-cloud login ``` </Step> <Step title="Connect to GitHub"> ```bash uvx prefect-cloud github setup ``` </Step> <Step title="Deploy your workflow"> Select a function in your script as the **entrypoint** for your workflow, and provide the path to it from the root of your repository. Your entrypoint should be the "main" function of your script — the function that's called first when you run your script locally.```bash
uvx prefect-cloud deploy <path/to/script.py:entrypoint_function_name> \
--from <github-account>/<repo-name> \
--name <deployment_name>
```
`prefect-cloud deploy` has a few helpful options, like adding Python dependencies to your deployment and setting the default parameter values for your entrypoint function.
<AccordionGroup>
<Accordion title="Add dependencies">
Add individual Python dependencies by including their package name.
```bash
uvx prefect-cloud deploy ... --with pandas --with numpy
```
Include dependencies from a requirements file by providing the path to the file from the root of your repository.
```
uvx prefect-cloud deploy ... --with-requirements </path/to/requirements.txt>
```
</Accordion>
<Accordion title="Set parameter defaults">
If your entrypoint function has parameters, you can assign the default values used by your deployment.
```python
def hello(name: str, company: str):
print(f"Hello {name}, welcome to {company}!")
```
```bash
uvx prefect-cloud deploy ... --parameter name=Kevin --parameter company=Prefect
```
</Accordion>
<Accordion title="Include environment variables">
Include key-value pairs that will be available as environment variables when your deployment runs.
```bash
uvx prefect-cloud deploy ... --env KEY=VALUE --env KEY2=VALUE2
```
</Accordion>
<Accordion title="Include secrets">
Store secrets in Secret Prefect [blocks](/v3/concepts/blocks) that will be loaded as environment variables by name reference when your deployment runs.
Blocks are encrypted, helping avoid storing secret values as plaintext properties on your deployment.
```bash
uvx prefect-cloud deploy ... --secret API_KEY=actual-secret-value --secret DB_PASSWORD=another-secret-value
```
Reference existing Secret blocks by name.
```bash
uvx prefect-cloud deploy ... --secret API_KEY="{existing-api-key-block}" --secret DB_PASSWORD="{my-database-password}"
```
</Accordion>
<Accordion title="Select Python version">
Select the version of Python to run your script on.
Supported Python versions include `3.9`, `3.10`, `3.11`, and `3.12`.
```bash
uvx prefect-cloud deploy ... --with-python 3.12
```
</Accordion>
</AccordionGroup>
If you don't have a script to deploy, you can use this example:
```bash
uvx prefect-cloud deploy examples/hello.py:hello_world \
--from PrefectHQ/prefect-cloud \
--name github_quickstart
```
```python
def hello(name: str, company: str):
print(f"Hello {name}, welcome to {company}!")
```
```bash
uvx prefect-cloud run ... --parameter name=Kevin --parameter company=Prefect
```
</Accordion>
<Accordion title="Follow run output in your terminal">
Tail your run's state changes and log outputs directly in your terminal.
```bash
uvx prefect-cloud run ... --follow
```
</Accordion>
</AccordionGroup>
If using the example script, run:
```bash
uvx prefect-cloud run hello_world/github_quickstart
```
<AccordionGroup>
<Accordion title="Set per-schedule parameter defaults">
Prefect deployments can have multiple schedules, each with their own default parameter values.
```python
def check_restaurant_reservations(restaurant: str):
opentable_api_tables_checker(restaurant)
```
```bash
# Hawksmoor reservations update at 12pm
uvx prefect-cloud schedule ... "0 12 * * *" --parameter restaurant="Hawksmoor"
```
```bash
# Carbone reservations update at 4pm
uvx prefect-cloud schedule ... "0 16 * * *" --parameter restaurant="Carbone"
```
</Accordion>
</AccordionGroup>
If using the example script, run the following command to schedule your deployment to run hourly:
```bash
uvx prefect-cloud schedule hello_world/github_quickstart "0 * * * *"
```
To remove schedules from your deployment, run:
uvx prefect-cloud unschedule <flow_name>/<deployment_name>
To delete a deployment, run:
uvx prefect-cloud delete <flow_name>/<deployment_name>
Prefect offers much more than simple code deployment and scheduling.
Install the prefect Python package in your development environment, and explore the following topics:
.submit() and .map().