Project
This guide outlines the steps to create an Ascend Project.
Before you begin​
New to Ascend? We recommend starting with:
- Quickstart guides to build your first data pipeline
- Otto's Expeditions for a guided sample project experience with your preferred Git provider
If you're already set up with Ascend and just want to create a new Project, you've come to the right place.
Prerequisites​
- Ascend Instance with Instance Store (see quickstarts for details)
- Ascend Environment
Set up a Git repository​
Ascend Projects require a Git repository to store your code. Choose one of the following options to set up your repository and connect it to your Ascend Instance.
- Use sample project repository
- Use existing repository
1. Create a new repository on GitHub
- Navigate to GitHub's New Repository page
- Set Owner to your personal GitHub account or organization
tip
If you have permissions to your company's GitHub Organization, create the repository there. Otherwise, create it under your personal account.
- Set Repository name to
ascend-quickstart-bigquery
(or your preferred name) - Set Description to
Ascend Quickstart BigQuery
- Set visibility to Private
- Click Create repository
2. Clone the Ascend Community Repository and push it to your new repository
# Set the variables
GITHUB_ORG="<your-github-org>" # Use your GitHub username or organization name
GITHUB_REPO="ascend-quickstart-bigquery"
# Clone the Ascend Community Repository
git clone git@github.com:ascend-io/ascend-community.git ${GITHUB_REPO}
cd ${GITHUB_REPO}
# Set the remote URL to your new repository
git remote set-url origin git@github.com:${GITHUB_ORG}/${GITHUB_REPO}.git
# Push the code to your new repository
git push -u origin main
If you encounter this error: git@github.com: Permission denied (publickey)
, follow the SSH steps outlined below before creating your repository.
For more detailed setup instructions for using Otto's Expeditions on your preferred GitHub provider, refer to our how-to guides for GitHub, GitLab, and Bitbucket.
Ensure your repository follows the Ascend project structure. Your repository should include:
Required:
ascend_project.yaml
andpyproject.toml
configuration files (empty placeholders are acceptable initially)profiles
folder with template profiles for parameter managementconnections
folder for data source configurationsflows
folder containing your data Flows, each withcomponents
andtests
subfolders
Optional (add as needed):
src
andtemplates
folders for Applicationsautomations
folder for Automationsdata
folder for local files
Store all secrets securely in your Ascend Vault, not in your repository.
Your repository file structure should look like this:
├── ascend_project.yaml
├── pyproject.toml
├── automations
│ ├── example_automation.yaml
├── connections
│ ├── example_connection.yaml
├── data
│ ├── example_local_data.csv
├── flows
│ ├── example_flow
│ ├── components
│ │ ├── example_python_component.py
│ │ ├── example_sql_component.sql
│ ├── tests
│ │ ├── example_test.py
│ └── example_flow.yaml
├── profiles
│ └── workspace_template.yaml
├── README.md
├── src
│ └── application_code.py
└── templates
└── flows
└── example_flow
├── example_template.sql
Connect Ascend to your Git repository​
Create the SSH key pair​
- Linux
- Mac
- Windows
-
On your local machine, open a terminal and run the following command:
mkdir -p ~/.ssh && ssh-keygen -t ed25519 -f ~/.ssh/ascend_quickstart_repo_key -q -N ""
-
This command will generate a new SSH key pair in the
~/.ssh
directory. -
The public key will be saved in
~/.ssh/ascend_quickstart_repo_key.pub
-
The private key will be saved in
~/.ssh/ascend_quickstart_repo_key
.tipYou can copy the contents of a file (eg: the public key) to your clipboard by running:
cat ~/.ssh/ascend_quickstart_repo_key.pub | xclip -selection clipboard
Or if xclip is not installed:
cat ~/.ssh/ascend_quickstart_repo_key.pub
and manually copy the output.
- On your local machine, open a terminal and run the following command:
mkdir -p ~/.ssh && ssh-keygen -t ed25519 -f ~/.ssh/ascend_quickstart_repo_key -q -N ""
- This command will generate a new SSH key pair in the
~/.ssh
directory. - The public key will be saved in
~/.ssh/ascend_quickstart_repo_key.pub
- The private key will be saved in
~/.ssh/ascend_quickstart_repo_key
.tipYou can copy the contents of the public key to your clipboard by running:
cat ~/.ssh/ascend_quickstart_repo_key.pub | pbcopy
- On your local machine, open PowerShell and run the following commands:
# Create .ssh directory if it doesn't exist
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.ssh"
# Generate SSH key
ssh-keygen -t ed25519 -f "$env:USERPROFILE\.ssh\ascend_quickstart_repo_key" -N '""' - This command will generate a new SSH key pair in the
.ssh
directory within your user profile folder. - The public key will be saved in
%USERPROFILE%\.ssh\ascend_quickstart_repo_key.pub
- The private key will be saved in
%USERPROFILE%\.ssh\ascend_quickstart_repo_key
.tipYou can copy the contents of the public key to your clipboard by running:
Get-Content "$env:USERPROFILE\.ssh\ascend_quickstart_repo_key.pub" | Set-Clipboard
Add the public key to your repository​
- Bitbucket
- GitHub
- GitLab
To allow for Ascend to have write access to your Bitbucket repository, you will need to add your public key to a Bitbucket account with write access, not to the repository itself.
Please follow the instructions under Provide Bitbucket Cloud with your public key to add the public ssh key to a Bit Bucket user.
Please follow the instructions here to setup the public ssh key in your Github repository. You will need to allow write access.
Please follow the instructions here to setup the public ssh key in your Gitlab repository. You will to need to grant write permissions to the key.
Add the private key to Ascend​
- In the Ascend UI, navigate to the instance settings by clicking on the button in the top right with your instance name and your user icon.
- Click on the Repositories settings tab.
- Click the Add Repository button.
- Set the Repository URI in this format:
git@github.com:<github-org>/<github-repo>.git
. - Set SSH Private Key to the private key you generated in the previous step.
Make sure to copy the entire private key, including the lines that indicate the beginning and end of the key.
- Click Check and Create.
Create an Ascend Project​
After connecting your Git repository, create your Ascend Project:
- In the Ascend UI, click the Instance settings button (top right, showing your Instance name and user icon)
- Navigate to the Projects tab
- Click Add Project
- Enter a Title for your Project
- Select your Repository from the dropdown
- Set Project Root to the folder path containing your project code
- Click Save
Configure your Project​
Ascend Projects use a dual configuration approach:
ascend_project.yaml
- defines Data Plane settings and default Flow specificationspyproject.toml
- manages Python package dependencies
The examples below show ascend_project.yaml
configurations for different Data Planes, based on the Otto's Expeditions project. See this guide for pyproject.toml
setup.
- BigQuery
- Snowflake
- Databricks
project:
# only alphanumeric characters, dashes, and underscores are allowed for the Project name
name: ottos-expeditions
# in Ascend, Parameters are a core concept.
# Think of parameters as a key:value mapping (dictionary, map, etc.) of variables
# you can use in your Flows. The hierarchy of parameters is:
# Project > Profile > Flow > Flow Run.
# The Parameters below are the top-level variables -- you can think of them as a default
# -- for all Flows in this project. Profiles are typically used to override Parameters
parameters:
data_planes:
gcp:
project_id: <your-gcp-project-id>
bigquery:
dataset: OTTOS_EXPEDITIONS_DEVELOPMENT
location: US
# defaults are typically used to specify the default Data Plane Connection
# used for Flows, specified by a regex pattern on the Flow name
defaults:
- kind: Flow
name:
regex: .*
spec:
data_plane:
connection_name: data_plane_bigquery
project:
# only alphanumeric characters, dashes, and underscores are allowed for the Project name
name: ottos-expeditions
# in Ascend, Parameters are a core concept.
# Think of parameters as a key:value mapping (dictionary, map, etc.) of variables
# you can use in your Flows. The hierarchy of parameters is:
# Project > Profile > Flow > Flow Run.
# The Parameters below are the top-level variables -- you can think of them as a default
# -- for all Flows in this project. Profiles are typically used to override Parameters
parameters:
data_planes:
snowflake:
account: <your-snowflake-account>
user: <your-snowflake-user>
role: <your-snowflake-role>
warehouse: <your-snowflake-warehouse>
database: OTTOS_EXPEDITIONS_DEVELOPMENT
schema: DEFAULT
max_concurrent_queries: 20
# defaults are typically used to specify the default Data Plane Connection
# used for Flows, specified by a regex pattern on the Flow name
defaults:
- kind: Flow
name:
regex: .*
spec:
data_plane:
connection_name: data_plane_snowflake
project:
# only alphanumeric characters, dashes, and underscores are allowed for the Project name
name: ottos-expeditions
# additional packages to install from PyPI
# https://pypi.org/project/ottos-expeditions/
# you can use a Flow bootstrap command to install private packages
# in Ascend, Parameters are a core concept.
# Think of parameters as a key:value mapping (dictionary, map, etc.) of variables
# you can use in your Flows. The hierarchy of parameters is:
# Project > Profile > Flow > Flow Run.
# The Parameters below are the top-level variables -- you can think of them as a default
# -- for all Flows in this project. Profiles are typically used to override Parameters
parameters:
data_planes:
databricks:
workspace_url: "<your-databricks-workspace-url>"
client_id: <your-databricks-client-id>
cluster_id: <your-databricks-cluster-id>
cluster_http_path: <your-databricks-cluster-http-path>
warehouse_http_path: <your-databricks-warehouse-http-path>
catalog: OTTOS_EXPEDITIONS_DEVELOPMENT
schema: DEFAULT
# defaults are typically used to specify the default Data Plane Connection
# used for Flows, specified by a regex pattern on the Flow name
defaults:
- kind: Flow
name:
regex: .*
spec:
data_plane:
connection_name: data_plane_databricks
Next steps​
- Set up your Workspace to start developing in Ascend