---
title: Create custom jobs
description: How to create custom jobs in the jobs workshop to define tests for your models and deployments.
section_name: NextGen Registry
maturity: public-preview

---

# Create custom jobs {: #create-custom-jobs }

When you create a custom job, you must assemble the required execution environment and files before running the job. Only the execution environment and an _entry point_ file (typically `run.sh`) are required; however, you can designate any file as the entry point. If you add other files to create the job, the entry point file should reference those files. In addition, to configure runtime parameters, create or upload a `metadata.yaml` file containing the runtime parameter configuration for the job.

To register and assemble a new custom job in the Registry:

1. Click **Registry > Jobs**, and then click **+ Add job** (or the <span style="color:#297cb9">:material-plus-box:{.lg}</span> button when the custom job panel is open).

    ![](images/nxt-jobs-workshop-add.png)

    The custom job opens to the **Assemble** tab.

2. On the **Assemble** tab for the new job, click the edit icon (:material-pencil:{.lg }) to update the job name:

    ![](images/nxt-jobs-workshop-name.png)

3. In the **Environment** section, select a **Base environment** for the job.

4. In the **Files** section, assemble the custom job. Drag files into the box, or use the options in this section to create or upload the files required to assemble a custom job:

    ![](images/nxt-jobs-workshop-add-content.png)

    Option                        | Description
    ------------------------------|------------
    Choose from source / Upload   | Upload existing custom job files (`run.sh`, `metadata.yaml`, etc.) as **Local Files** or a **Local Folder**.
    Create                        | Create a new file, empty or containing a template, and save it to the custom job: <ul><li>**Create run.sh**: Creates a basic, editable example of an entry point file.</li><li>**Create metadata.yaml**: Creates a basic, editable example of a runtime parameters file.</li><li>**Create README.md**: Creates a basic, editable README file.</li><li>**Create blank file**: Creates an empty file. Click the edit icon (:material-pencil:{.lg }) next to **Untitled** to provide a file name and extension, then add your custom contents. In the next step, it is possible to identify files created this way, with a custom name and content, as the entry point</li></ul>

    After you configure the new file, click **Save**.

    !!! important "File replacement"
        If you add a new file with the same name as an existing file, when you click **Save**, the old file is replaced in the **Files** section.

5. In the **Settings** section, define the **Entry point** shell (`.sh`) file. If you've added a `run.sh` file, that file is the entry point; otherwise, you must select the entry point shell file from the drop-down list. The entry point file allows you to orchestrate multiple job files.

    ![](images/nxt-jobs-workshop-entrypoint.png)

6. (Optional) In the **Settings** section, if you uploaded a `metadata.yaml` file, define the **Runtime parameters**, clicking the edit icon (:material-pencil:{.lg }) for each key-value row you want to configure.

    ![](images/nxt-jobs-workshop-runtime-parameters.png)



