Pipelines
The CI/CD overview, the Pipelines list, native OpsNexus pipelines and pipelines imported from other tools, triggers and parameters.
On this page
OpsNexus shows pipelines from two sources in one place:
- OpsNexus pipelines (native): you define them in OpsNexus and they run on your own build agents.
- Pipelines from external tools: Jenkins, GitLab CI, GitHub Actions, Azure DevOps and Argo CD. OpsNexus imports them through integrations and can run or cancel them if you allow it.
Everything lives under Build & deploy → CI/CD in the sidebar:
| Page | What it shows |
|---|---|
| Overview | All pipelines from every source, with build numbers for the last 14 days. |
| Pipelines | Native OpsNexus pipelines: create, configure and build them. |
| Builds | Every build from every source, newest first. See Builds and approvals. |
| Deployments | Argo CD application syncs. |
| Integrations | Connections to external CI/CD tools. |
| Pipeline syntax | The YAML reference and a validator. See Pipeline syntax. |
All of these pages need at least read access to CI/CD pipelines (Integrations needs read access to Integrations). Creating and building needs modify access. See Access control.
CI/CD overview
The CI/CD overview page combines every pipeline in the current project.
- Tiles at the top: number of pipelines, builds in the last 14 days with the success rate, succeeded builds with the average duration, and failed builds with the running, queued and cancelled counts.
- Filter by platform (All, OpsNexus, Jenkins, Azure DevOps, GitLab CI, Argo CD, GitHub Actions) or search by name.
- The table shows each pipeline's platform, project, last result and last run.
- Builds opens the Builds page filtered to that pipeline.
- Run starts the pipeline. A native pipeline opens its new build. An external pipeline is started in its own tool and appears in Builds after the next sync.
- Builds per day · last 14 days charts succeeded and failed builds.
- New pipeline and Connect platform are in the page header. The report button creates the pipeline PDF report.
Run on an external pipeline works only when Allow running and cancelling builds is on for its integration. Without it, OpsNexus answers that write actions are turned off.
Pipeline types
Native pipelines come in four types, the same as in Jenkins:
| Type | Use it for |
|---|---|
| Freestyle project | Simple jobs set up entirely in forms: source code, triggers, build environment, shell steps and post-build steps. |
| Pipeline | Stages and steps from a YAML pipeline file kept in your repository, or pasted into OpsNexus. Supports approvals, conditions and parameters. |
| Multibranch pipeline | A GitHub or GitLab repository. Every branch that has the pipeline file gets its own pipeline, created and removed automatically. |
| Organization folder | A GitHub organization (or user) or a GitLab group. Every repository with the pipeline file becomes a multibranch pipeline. |
A Freestyle project builds the same kind of definition as a pipeline file, with one stage called Build.
The Pipelines list
CI/CD → Pipelines lists the native pipelines and folders at the top level of the current project.
- Tiles: Pipelines, Running now, Last build passed and Last build failed.
- Build queue lists builds waiting for an agent and the reason each one waits.
- Build executors shows each build agent, its executors and what each executor is running.
- The table shows each pipeline's type, Health (how many of the last 5 finished builds passed), last build, duration and the next scheduled build or scan.
- ▶ Build starts a build. If the pipeline has parameters, the Build dialog opens first.
- Folders have Scan now instead.
- The search box searches every pipeline, branch and folder.
If no agent can run pipelines, a banner says so. Builds then wait in the queue until an agent with free executors is online.
Create a pipeline
To create a pipeline from a YAML file in Git:
- Open CI/CD → Pipelines and select New pipeline.
- Enter a Name. Use letters, digits,
.,_and-, without spaces, up to 100 characters. The name is used in URLs, notifications and theJOB_NAMEvariable. - Choose Pipeline and select Continue.
- On the Pipeline tab, keep Pipeline file from source control.
- Set Pipeline file (default
.opsnexus.yml). - Choose the source: Git (any server), GitHub or GitLab. Enter the repository URL or
owner/name, the Branch (defaultmain) and a credential. For GitHub Enterprise or self-managed GitLab, also set the server URL. - Select Verify connection. OpsNexus checks the credential, that the repository is visible, that the branch exists and that the pipeline file is there.
- Review the other tabs if needed, then select Save.
To write the YAML in OpsNexus instead, choose Pipeline script in step 4. Pick a template from Start from a template…, edit it and select Validate. You can still check out source code under Check out source code too (optional).
To copy an existing pipeline, choose one under Copy settings from (optional) in step 3 and select Create copy.
Credentials for checkout are a Git access token, Username with password or SSH username with private key credential from Secrets and variables. SSH needs a git@… URL.
Configure tabs
A pipeline's Configure tab has one section at a time:
| Section | Settings |
|---|---|
| General | Description, Keep builds (1 to 1000, default 30), Run builds in parallel (off: a new build waits for the running one), Parameters. |
| Source code / Pipeline / Branch source / Repositories | Where the code and the pipeline file come from. Which one you see depends on the type. |
| Build triggers (folders: Scans & triggers) | Webhook, schedule, polling, scan interval. See Triggers. |
| Build environment | Variables environment, Timeout (minutes) (1 to 1440, default 60), Agent pool, Agent labels, Delete the workspace before each build. Freestyle projects also have Credential bindings and Environment variables. |
| Build steps (Freestyle) | Shell steps and plugin steps, run in order. |
| Post-build (Freestyle) | Always, On success and On failure steps, and Archive artifacts. |
Builds older than the Keep builds number are deleted with their logs and artifacts.
Multibranch pipelines and organization folders
A multibranch pipeline needs a GitHub or GitLab repository. A plain Git URL cannot list branches.
- Branches to include and Branches to exclude take wildcards, separated by spaces or commas, for example
main release/* feature/*. - Branches without the pipeline file are skipped and noted in the Scan log.
- When a branch disappears: Remove its pipeline and builds, or Keep it, disabled.
- Build new branches right away and Build when a scan finds new commits are on by default.
- Scan every (minutes): default 60; 0 means only on webhook or Scan now.
An organization folder takes the Organization or user (GitHub) or Group (with subgroups) (GitLab), a credential that can list repositories, and Repositories to include / Repositories to exclude. Archived repositories are skipped. A scan looks at up to 200 repositories and 300 branches per repository.
Pipelines created by a scan inherit the folder's settings. Change settings on the folder, not on the generated pipeline.
Triggers
A native pipeline can start in these ways:
| Trigger | How to set it up |
|---|---|
| Manual | ▶ Build in the list, or ▶ Build now / ▶ Build with parameters on the pipeline page. |
| Push webhook | Build when a change is pushed (webhook) is on by default. Copy the URL from the pipeline's Webhook tab into GitHub or GitLab. |
| Remote trigger | POST to the same webhook URL with JSON. |
| Build periodically | A cron schedule. |
| Poll source control | A cron schedule that builds only when the branch has a new commit. Needs a GitHub or GitLab repository. |
| Branch scan | Multibranch pipelines and organization folders build new branches and new commits found by a scan. |
Webhooks
The webhook URL looks like https://opsnexus.example.com/api/ci/hooks/onx_hook_…. Treat it like a password: anyone with the URL can start builds. New URL on the Webhook tab replaces it, and the old URL stops working at once.
To add it to GitHub: repository (or organization) → Settings → Webhooks → Add webhook. Set the payload URL, content type application/json, and Just the push event.
To add it to GitLab: project (or group) → Settings → Webhooks → Add new webhook. Set the URL and select Push events.
How OpsNexus handles webhook calls:
- GitHub
pushand GitLabPush Hook/System Hookevents start a build. GitHub'spingis answered withpong. Other events are ignored. - Tag pushes are ignored.
- For a Pipeline or Freestyle project, a push to a branch other than the configured Branch is ignored.
- For a multibranch pipeline or organization folder, a push to a known branch builds that branch. Otherwise OpsNexus scans the folder.
- The webhook URL is built from
PUBLIC_URL. If it sayslocalhost, GitHub and GitLab cannot reach it. See Configuration.
Remote trigger
For a Pipeline or Freestyle project, any script can start a build:
curl -X POST 'https://opsnexus.example.com/api/ci/hooks/onx_hook_xxxxxxxx' \
-H 'Content-Type: application/json' \
-d '{"branch": "main", "params": {"DEPLOY_ENV": "staging"}}'The body can contain branch, commit and params. All are optional.
Schedules
Build periodically and Poll source control use Jenkins cron syntax with five fields: minute, hour, day of month, month, day of week.
Hspreads the load: it picks a fixed value per pipeline.H/15 * * * *runs every 15 minutes at an offset that differs per pipeline.H(0-2)picks a value in a range.- Aliases:
@yearly,@annually,@monthly,@weekly,@daily,@midnight,@hourly. - Write one schedule line. Text after
#is a comment. - Schedule time zone sets the time zone, for example
UTC,Asia/KolkataorEurope/London. The default isUTC. - The form shows the next times the schedule fires.
H 2 * * 1-5 # once between 02:00 and 02:59, Monday to Friday
H/15 * * * * # every 15 minutes
@daily # once a day at a time chosen per pipelineThe scheduler checks every 30 seconds.
Running a build
To start a build by hand:
- Open CI/CD → Pipelines.
- Select ▶ Build next to the pipeline.
- If the pipeline has parameters, fill in the Build dialog and select Build.
The build page opens. The build waits in the queue until a matching agent with a free executor takes it. See Builds and approvals.
A disabled pipeline cannot be built. Folders are not built directly: build a branch inside them, or scan the folder.
Parameters
Parameters let people pass values to a build.
- Define them on Configure → General → Parameters, or under
parameters:in the pipeline file. If both define the same name, the file wins. - Types:
string,text(multi-line),choice,booleanandpassword. - Each value is an environment variable with the parameter's name in every step, and is available as
${{ params.NAME }}. passwordvalues are masked in the console output and stored encrypted.- Scheduled and polled builds use the default values.
- A remote trigger passes values in
params.
Parameters declared in a pipeline file kept in Git are known to OpsNexus after a build has read the file. Until then, the Build dialog shows only the parameters set on the Configure tab.
See Pipeline syntax for the full rules.
Pipelines from external tools
Pipelines from Jenkins, GitLab CI, GitHub Actions, Azure DevOps and Argo CD appear on the CI/CD overview and their builds on Builds after the integration syncs. You configure them in their own tool. In OpsNexus you can:
- see the pipelines and their last 20 builds,
- open the build in the original tool (Logs),
- run a pipeline and cancel a running build, if the integration allows write actions.
See Integrations.