docs(core): enterprise custom dte (#22143)

This commit is contained in:
Isaac Mann 2024-03-05 12:14:21 -05:00 committed by GitHub
parent acf4787ab4
commit 62e89f68c7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
73 changed files with 1662 additions and 384 deletions

View File

@ -201,7 +201,7 @@
"name": "Set up Nx Cloud On-Premise",
"description": "Set up Nx Cloud on machines that you control",
"mediaImage": "",
"file": "nx-cloud/private/nx-enterprise-on-prem",
"file": "nx-cloud/features/nx-enterprise-on-prem",
"itemList": [],
"isExternal": false,
"path": "/ci/features/on-premise",
@ -283,7 +283,7 @@
"name": "Set up Nx Cloud On-Premise",
"description": "Set up Nx Cloud on machines that you control",
"mediaImage": "",
"file": "nx-cloud/private/nx-enterprise-on-prem",
"file": "nx-cloud/features/nx-enterprise-on-prem",
"itemList": [],
"isExternal": false,
"path": "/ci/features/on-premise",
@ -575,6 +575,13 @@
"path": "/ci/recipes/source-control-integration",
"tags": []
},
{
"id": "enterprise",
"name": "Enterprise",
"description": "Recipes for enterprise accounts",
"mediaImage": "",
"file": "",
"itemList": [
{
"id": "on-premise",
"name": "On-Premise",
@ -587,10 +594,10 @@
"name": "Authenticate with a Single Admin",
"description": "",
"mediaImage": "",
"file": "nx-cloud/private/auth-single-admin",
"file": "nx-cloud/enterprise/on-premise/auth-single-admin",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/on-premise/auth-single-admin",
"path": "/ci/recipes/enterprise/on-premise/auth-single-admin",
"tags": []
},
{
@ -598,10 +605,10 @@
"name": "Authenticate with GitHub",
"description": "",
"mediaImage": "",
"file": "nx-cloud/private/auth-github",
"file": "nx-cloud/enterprise/on-premise/auth-github",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/on-premise/auth-github",
"path": "/ci/recipes/enterprise/on-premise/auth-github",
"tags": []
},
{
@ -609,10 +616,10 @@
"name": "On-Prem VM Setup",
"description": "",
"mediaImage": "",
"file": "nx-cloud/private/ami-setup",
"file": "nx-cloud/enterprise/on-premise/ami-setup",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/on-premise/ami-setup",
"path": "/ci/recipes/enterprise/on-premise/ami-setup",
"tags": []
},
{
@ -620,10 +627,10 @@
"name": "Authenticate with GitLab",
"description": "",
"mediaImage": "",
"file": "nx-cloud/private/auth-gitlab",
"file": "nx-cloud/enterprise/on-premise/auth-gitlab",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/on-premise/auth-gitlab",
"path": "/ci/recipes/enterprise/on-premise/auth-gitlab",
"tags": []
},
{
@ -631,10 +638,10 @@
"name": "Authenticate with BitBucket",
"description": "",
"mediaImage": "",
"file": "nx-cloud/private/auth-bitbucket",
"file": "nx-cloud/enterprise/on-premise/auth-bitbucket",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/on-premise/auth-bitbucket",
"path": "/ci/recipes/enterprise/on-premise/auth-bitbucket",
"tags": []
},
{
@ -642,10 +649,10 @@
"name": "Authenticate via SAML",
"description": "",
"mediaImage": "",
"file": "nx-cloud/private/auth-saml",
"file": "nx-cloud/enterprise/on-premise/auth-saml",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/on-premise/auth-saml",
"path": "/ci/recipes/enterprise/on-premise/auth-saml",
"tags": []
},
{
@ -653,10 +660,10 @@
"name": "Authenticate via SAML on Managed Version",
"description": "",
"mediaImage": "",
"file": "nx-cloud/private/auth-saml-managed",
"file": "nx-cloud/enterprise/on-premise/auth-saml-managed",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/on-premise/auth-saml-managed",
"path": "/ci/recipes/enterprise/on-premise/auth-saml-managed",
"tags": []
},
{
@ -664,15 +671,98 @@
"name": "Advanced Configuration",
"description": "",
"mediaImage": "",
"file": "nx-cloud/private/advanced-config",
"file": "nx-cloud/enterprise/on-premise/advanced-config",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/on-premise/advanced-config",
"path": "/ci/recipes/enterprise/on-premise/advanced-config",
"tags": []
}
],
"isExternal": false,
"path": "/ci/recipes/on-premise",
"path": "/ci/recipes/enterprise/on-premise",
"tags": []
},
{
"id": "dte",
"name": "Custom Distributed Task Execution",
"description": "Custom DTE on your own CI provider",
"mediaImage": "",
"file": "",
"itemList": [
{
"id": "github-dte",
"name": "GitHub Actions Custom DTE",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/dte/github-dte",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/dte/github-dte",
"tags": []
},
{
"id": "circle-ci-dte",
"name": "Circle CI Custom DTE",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/dte/circle-ci-dte",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/dte/circle-ci-dte",
"tags": []
},
{
"id": "azure-dte",
"name": "Azure Pipelines Custom DTE",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/dte/azure-dte",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/dte/azure-dte",
"tags": []
},
{
"id": "bitbucket-dte",
"name": "Bitbucket Pipelines Custom DTE",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/dte/bitbucket-dte",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/dte/bitbucket-dte",
"tags": []
},
{
"id": "gitlab-dte",
"name": "GitLab Custom DTE",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/dte/gitlab-dte",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/dte/gitlab-dte",
"tags": []
},
{
"id": "jenkins-dte",
"name": "Jenkins Custom DTE",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/dte/jenkins-dte",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/dte/jenkins-dte",
"tags": []
}
],
"isExternal": false,
"path": "/ci/recipes/enterprise/dte",
"tags": []
}
],
"isExternal": false,
"path": "/ci/recipes/enterprise",
"tags": []
},
{
@ -1059,7 +1149,14 @@
"path": "/ci/recipes/source-control-integration/gitlab",
"tags": []
},
"/ci/recipes/on-premise": {
"/ci/recipes/enterprise": {
"id": "enterprise",
"name": "Enterprise",
"description": "Recipes for enterprise accounts",
"mediaImage": "",
"file": "",
"itemList": [
{
"id": "on-premise",
"name": "On-Premise",
"description": "Manage an on-premise installation of Nx Cloud",
@ -1071,10 +1168,10 @@
"name": "Authenticate with a Single Admin",
"description": "",
"mediaImage": "",
"file": "nx-cloud/private/auth-single-admin",
"file": "nx-cloud/enterprise/on-premise/auth-single-admin",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/on-premise/auth-single-admin",
"path": "/ci/recipes/enterprise/on-premise/auth-single-admin",
"tags": []
},
{
@ -1082,10 +1179,10 @@
"name": "Authenticate with GitHub",
"description": "",
"mediaImage": "",
"file": "nx-cloud/private/auth-github",
"file": "nx-cloud/enterprise/on-premise/auth-github",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/on-premise/auth-github",
"path": "/ci/recipes/enterprise/on-premise/auth-github",
"tags": []
},
{
@ -1093,10 +1190,10 @@
"name": "On-Prem VM Setup",
"description": "",
"mediaImage": "",
"file": "nx-cloud/private/ami-setup",
"file": "nx-cloud/enterprise/on-premise/ami-setup",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/on-premise/ami-setup",
"path": "/ci/recipes/enterprise/on-premise/ami-setup",
"tags": []
},
{
@ -1104,10 +1201,10 @@
"name": "Authenticate with GitLab",
"description": "",
"mediaImage": "",
"file": "nx-cloud/private/auth-gitlab",
"file": "nx-cloud/enterprise/on-premise/auth-gitlab",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/on-premise/auth-gitlab",
"path": "/ci/recipes/enterprise/on-premise/auth-gitlab",
"tags": []
},
{
@ -1115,10 +1212,10 @@
"name": "Authenticate with BitBucket",
"description": "",
"mediaImage": "",
"file": "nx-cloud/private/auth-bitbucket",
"file": "nx-cloud/enterprise/on-premise/auth-bitbucket",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/on-premise/auth-bitbucket",
"path": "/ci/recipes/enterprise/on-premise/auth-bitbucket",
"tags": []
},
{
@ -1126,10 +1223,10 @@
"name": "Authenticate via SAML",
"description": "",
"mediaImage": "",
"file": "nx-cloud/private/auth-saml",
"file": "nx-cloud/enterprise/on-premise/auth-saml",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/on-premise/auth-saml",
"path": "/ci/recipes/enterprise/on-premise/auth-saml",
"tags": []
},
{
@ -1137,10 +1234,10 @@
"name": "Authenticate via SAML on Managed Version",
"description": "",
"mediaImage": "",
"file": "nx-cloud/private/auth-saml-managed",
"file": "nx-cloud/enterprise/on-premise/auth-saml-managed",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/on-premise/auth-saml-managed",
"path": "/ci/recipes/enterprise/on-premise/auth-saml-managed",
"tags": []
},
{
@ -1148,103 +1245,430 @@
"name": "Advanced Configuration",
"description": "",
"mediaImage": "",
"file": "nx-cloud/private/advanced-config",
"file": "nx-cloud/enterprise/on-premise/advanced-config",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/on-premise/advanced-config",
"path": "/ci/recipes/enterprise/on-premise/advanced-config",
"tags": []
}
],
"isExternal": false,
"path": "/ci/recipes/on-premise",
"path": "/ci/recipes/enterprise/on-premise",
"tags": []
},
"/ci/recipes/on-premise/auth-single-admin": {
{
"id": "dte",
"name": "Custom Distributed Task Execution",
"description": "Custom DTE on your own CI provider",
"mediaImage": "",
"file": "",
"itemList": [
{
"id": "github-dte",
"name": "GitHub Actions Custom DTE",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/dte/github-dte",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/dte/github-dte",
"tags": []
},
{
"id": "circle-ci-dte",
"name": "Circle CI Custom DTE",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/dte/circle-ci-dte",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/dte/circle-ci-dte",
"tags": []
},
{
"id": "azure-dte",
"name": "Azure Pipelines Custom DTE",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/dte/azure-dte",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/dte/azure-dte",
"tags": []
},
{
"id": "bitbucket-dte",
"name": "Bitbucket Pipelines Custom DTE",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/dte/bitbucket-dte",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/dte/bitbucket-dte",
"tags": []
},
{
"id": "gitlab-dte",
"name": "GitLab Custom DTE",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/dte/gitlab-dte",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/dte/gitlab-dte",
"tags": []
},
{
"id": "jenkins-dte",
"name": "Jenkins Custom DTE",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/dte/jenkins-dte",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/dte/jenkins-dte",
"tags": []
}
],
"isExternal": false,
"path": "/ci/recipes/enterprise/dte",
"tags": []
}
],
"isExternal": false,
"path": "/ci/recipes/enterprise",
"tags": []
},
"/ci/recipes/enterprise/on-premise": {
"id": "on-premise",
"name": "On-Premise",
"description": "Manage an on-premise installation of Nx Cloud",
"mediaImage": "",
"file": "",
"itemList": [
{
"id": "auth-single-admin",
"name": "Authenticate with a Single Admin",
"description": "",
"mediaImage": "",
"file": "nx-cloud/private/auth-single-admin",
"file": "nx-cloud/enterprise/on-premise/auth-single-admin",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/on-premise/auth-single-admin",
"path": "/ci/recipes/enterprise/on-premise/auth-single-admin",
"tags": []
},
"/ci/recipes/on-premise/auth-github": {
{
"id": "auth-github",
"name": "Authenticate with GitHub",
"description": "",
"mediaImage": "",
"file": "nx-cloud/private/auth-github",
"file": "nx-cloud/enterprise/on-premise/auth-github",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/on-premise/auth-github",
"path": "/ci/recipes/enterprise/on-premise/auth-github",
"tags": []
},
"/ci/recipes/on-premise/ami-setup": {
{
"id": "ami-setup",
"name": "On-Prem VM Setup",
"description": "",
"mediaImage": "",
"file": "nx-cloud/private/ami-setup",
"file": "nx-cloud/enterprise/on-premise/ami-setup",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/on-premise/ami-setup",
"path": "/ci/recipes/enterprise/on-premise/ami-setup",
"tags": []
},
"/ci/recipes/on-premise/auth-gitlab": {
{
"id": "auth-gitlab",
"name": "Authenticate with GitLab",
"description": "",
"mediaImage": "",
"file": "nx-cloud/private/auth-gitlab",
"file": "nx-cloud/enterprise/on-premise/auth-gitlab",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/on-premise/auth-gitlab",
"path": "/ci/recipes/enterprise/on-premise/auth-gitlab",
"tags": []
},
"/ci/recipes/on-premise/auth-bitbucket": {
{
"id": "auth-bitbucket",
"name": "Authenticate with BitBucket",
"description": "",
"mediaImage": "",
"file": "nx-cloud/private/auth-bitbucket",
"file": "nx-cloud/enterprise/on-premise/auth-bitbucket",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/on-premise/auth-bitbucket",
"path": "/ci/recipes/enterprise/on-premise/auth-bitbucket",
"tags": []
},
"/ci/recipes/on-premise/auth-saml": {
{
"id": "auth-saml",
"name": "Authenticate via SAML",
"description": "",
"mediaImage": "",
"file": "nx-cloud/private/auth-saml",
"file": "nx-cloud/enterprise/on-premise/auth-saml",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/on-premise/auth-saml",
"path": "/ci/recipes/enterprise/on-premise/auth-saml",
"tags": []
},
"/ci/recipes/on-premise/auth-saml-managed": {
{
"id": "auth-saml-managed",
"name": "Authenticate via SAML on Managed Version",
"description": "",
"mediaImage": "",
"file": "nx-cloud/private/auth-saml-managed",
"file": "nx-cloud/enterprise/on-premise/auth-saml-managed",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/on-premise/auth-saml-managed",
"path": "/ci/recipes/enterprise/on-premise/auth-saml-managed",
"tags": []
},
"/ci/recipes/on-premise/advanced-config": {
{
"id": "advanced-config",
"name": "Advanced Configuration",
"description": "",
"mediaImage": "",
"file": "nx-cloud/private/advanced-config",
"file": "nx-cloud/enterprise/on-premise/advanced-config",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/on-premise/advanced-config",
"path": "/ci/recipes/enterprise/on-premise/advanced-config",
"tags": []
}
],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise",
"tags": []
},
"/ci/recipes/enterprise/on-premise/auth-single-admin": {
"id": "auth-single-admin",
"name": "Authenticate with a Single Admin",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-single-admin",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-single-admin",
"tags": []
},
"/ci/recipes/enterprise/on-premise/auth-github": {
"id": "auth-github",
"name": "Authenticate with GitHub",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-github",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-github",
"tags": []
},
"/ci/recipes/enterprise/on-premise/ami-setup": {
"id": "ami-setup",
"name": "On-Prem VM Setup",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/ami-setup",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/ami-setup",
"tags": []
},
"/ci/recipes/enterprise/on-premise/auth-gitlab": {
"id": "auth-gitlab",
"name": "Authenticate with GitLab",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-gitlab",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-gitlab",
"tags": []
},
"/ci/recipes/enterprise/on-premise/auth-bitbucket": {
"id": "auth-bitbucket",
"name": "Authenticate with BitBucket",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-bitbucket",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-bitbucket",
"tags": []
},
"/ci/recipes/enterprise/on-premise/auth-saml": {
"id": "auth-saml",
"name": "Authenticate via SAML",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-saml",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-saml",
"tags": []
},
"/ci/recipes/enterprise/on-premise/auth-saml-managed": {
"id": "auth-saml-managed",
"name": "Authenticate via SAML on Managed Version",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/auth-saml-managed",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/auth-saml-managed",
"tags": []
},
"/ci/recipes/enterprise/on-premise/advanced-config": {
"id": "advanced-config",
"name": "Advanced Configuration",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/on-premise/advanced-config",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/on-premise/advanced-config",
"tags": []
},
"/ci/recipes/enterprise/dte": {
"id": "dte",
"name": "Custom Distributed Task Execution",
"description": "Custom DTE on your own CI provider",
"mediaImage": "",
"file": "",
"itemList": [
{
"id": "github-dte",
"name": "GitHub Actions Custom DTE",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/dte/github-dte",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/dte/github-dte",
"tags": []
},
{
"id": "circle-ci-dte",
"name": "Circle CI Custom DTE",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/dte/circle-ci-dte",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/dte/circle-ci-dte",
"tags": []
},
{
"id": "azure-dte",
"name": "Azure Pipelines Custom DTE",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/dte/azure-dte",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/dte/azure-dte",
"tags": []
},
{
"id": "bitbucket-dte",
"name": "Bitbucket Pipelines Custom DTE",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/dte/bitbucket-dte",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/dte/bitbucket-dte",
"tags": []
},
{
"id": "gitlab-dte",
"name": "GitLab Custom DTE",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/dte/gitlab-dte",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/dte/gitlab-dte",
"tags": []
},
{
"id": "jenkins-dte",
"name": "Jenkins Custom DTE",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/dte/jenkins-dte",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/dte/jenkins-dte",
"tags": []
}
],
"isExternal": false,
"path": "/ci/recipes/enterprise/dte",
"tags": []
},
"/ci/recipes/enterprise/dte/github-dte": {
"id": "github-dte",
"name": "GitHub Actions Custom DTE",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/dte/github-dte",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/dte/github-dte",
"tags": []
},
"/ci/recipes/enterprise/dte/circle-ci-dte": {
"id": "circle-ci-dte",
"name": "Circle CI Custom DTE",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/dte/circle-ci-dte",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/dte/circle-ci-dte",
"tags": []
},
"/ci/recipes/enterprise/dte/azure-dte": {
"id": "azure-dte",
"name": "Azure Pipelines Custom DTE",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/dte/azure-dte",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/dte/azure-dte",
"tags": []
},
"/ci/recipes/enterprise/dte/bitbucket-dte": {
"id": "bitbucket-dte",
"name": "Bitbucket Pipelines Custom DTE",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/dte/bitbucket-dte",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/dte/bitbucket-dte",
"tags": []
},
"/ci/recipes/enterprise/dte/gitlab-dte": {
"id": "gitlab-dte",
"name": "GitLab Custom DTE",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/dte/gitlab-dte",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/dte/gitlab-dte",
"tags": []
},
"/ci/recipes/enterprise/dte/jenkins-dte": {
"id": "jenkins-dte",
"name": "Jenkins Custom DTE",
"description": "",
"mediaImage": "",
"file": "nx-cloud/enterprise/dte/jenkins-dte",
"itemList": [],
"isExternal": false,
"path": "/ci/recipes/enterprise/dte/jenkins-dte",
"tags": []
},
"/ci/recipes/troubleshooting": {

View File

@ -6021,15 +6021,21 @@
],
"disableCollapsible": false
},
{
"name": "Enterprise",
"path": "/ci/recipes/enterprise",
"id": "enterprise",
"isExternal": false,
"children": [
{
"name": "On-Premise",
"path": "/ci/recipes/on-premise",
"path": "/ci/recipes/enterprise/on-premise",
"id": "on-premise",
"isExternal": false,
"children": [
{
"name": "Authenticate with a Single Admin",
"path": "/ci/recipes/on-premise/auth-single-admin",
"path": "/ci/recipes/enterprise/on-premise/auth-single-admin",
"id": "auth-single-admin",
"isExternal": false,
"children": [],
@ -6037,7 +6043,7 @@
},
{
"name": "Authenticate with GitHub",
"path": "/ci/recipes/on-premise/auth-github",
"path": "/ci/recipes/enterprise/on-premise/auth-github",
"id": "auth-github",
"isExternal": false,
"children": [],
@ -6045,7 +6051,7 @@
},
{
"name": "On-Prem VM Setup",
"path": "/ci/recipes/on-premise/ami-setup",
"path": "/ci/recipes/enterprise/on-premise/ami-setup",
"id": "ami-setup",
"isExternal": false,
"children": [],
@ -6053,7 +6059,7 @@
},
{
"name": "Authenticate with GitLab",
"path": "/ci/recipes/on-premise/auth-gitlab",
"path": "/ci/recipes/enterprise/on-premise/auth-gitlab",
"id": "auth-gitlab",
"isExternal": false,
"children": [],
@ -6061,7 +6067,7 @@
},
{
"name": "Authenticate with BitBucket",
"path": "/ci/recipes/on-premise/auth-bitbucket",
"path": "/ci/recipes/enterprise/on-premise/auth-bitbucket",
"id": "auth-bitbucket",
"isExternal": false,
"children": [],
@ -6069,7 +6075,7 @@
},
{
"name": "Authenticate via SAML",
"path": "/ci/recipes/on-premise/auth-saml",
"path": "/ci/recipes/enterprise/on-premise/auth-saml",
"id": "auth-saml",
"isExternal": false,
"children": [],
@ -6077,7 +6083,7 @@
},
{
"name": "Authenticate via SAML on Managed Version",
"path": "/ci/recipes/on-premise/auth-saml-managed",
"path": "/ci/recipes/enterprise/on-premise/auth-saml-managed",
"id": "auth-saml-managed",
"isExternal": false,
"children": [],
@ -6085,7 +6091,7 @@
},
{
"name": "Advanced Configuration",
"path": "/ci/recipes/on-premise/advanced-config",
"path": "/ci/recipes/enterprise/on-premise/advanced-config",
"id": "advanced-config",
"isExternal": false,
"children": [],
@ -6094,6 +6100,66 @@
],
"disableCollapsible": false
},
{
"name": "Custom Distributed Task Execution",
"path": "/ci/recipes/enterprise/dte",
"id": "dte",
"isExternal": false,
"children": [
{
"name": "GitHub Actions Custom DTE",
"path": "/ci/recipes/enterprise/dte/github-dte",
"id": "github-dte",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Circle CI Custom DTE",
"path": "/ci/recipes/enterprise/dte/circle-ci-dte",
"id": "circle-ci-dte",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Azure Pipelines Custom DTE",
"path": "/ci/recipes/enterprise/dte/azure-dte",
"id": "azure-dte",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Bitbucket Pipelines Custom DTE",
"path": "/ci/recipes/enterprise/dte/bitbucket-dte",
"id": "bitbucket-dte",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "GitLab Custom DTE",
"path": "/ci/recipes/enterprise/dte/gitlab-dte",
"id": "gitlab-dte",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Jenkins Custom DTE",
"path": "/ci/recipes/enterprise/dte/jenkins-dte",
"id": "jenkins-dte",
"isExternal": false,
"children": [],
"disableCollapsible": false
}
],
"disableCollapsible": false
}
],
"disableCollapsible": false
},
{
"name": "Troubleshooting",
"path": "/ci/recipes/troubleshooting",
@ -6374,15 +6440,21 @@
"children": [],
"disableCollapsible": false
},
{
"name": "Enterprise",
"path": "/ci/recipes/enterprise",
"id": "enterprise",
"isExternal": false,
"children": [
{
"name": "On-Premise",
"path": "/ci/recipes/on-premise",
"path": "/ci/recipes/enterprise/on-premise",
"id": "on-premise",
"isExternal": false,
"children": [
{
"name": "Authenticate with a Single Admin",
"path": "/ci/recipes/on-premise/auth-single-admin",
"path": "/ci/recipes/enterprise/on-premise/auth-single-admin",
"id": "auth-single-admin",
"isExternal": false,
"children": [],
@ -6390,7 +6462,7 @@
},
{
"name": "Authenticate with GitHub",
"path": "/ci/recipes/on-premise/auth-github",
"path": "/ci/recipes/enterprise/on-premise/auth-github",
"id": "auth-github",
"isExternal": false,
"children": [],
@ -6398,7 +6470,7 @@
},
{
"name": "On-Prem VM Setup",
"path": "/ci/recipes/on-premise/ami-setup",
"path": "/ci/recipes/enterprise/on-premise/ami-setup",
"id": "ami-setup",
"isExternal": false,
"children": [],
@ -6406,7 +6478,7 @@
},
{
"name": "Authenticate with GitLab",
"path": "/ci/recipes/on-premise/auth-gitlab",
"path": "/ci/recipes/enterprise/on-premise/auth-gitlab",
"id": "auth-gitlab",
"isExternal": false,
"children": [],
@ -6414,7 +6486,7 @@
},
{
"name": "Authenticate with BitBucket",
"path": "/ci/recipes/on-premise/auth-bitbucket",
"path": "/ci/recipes/enterprise/on-premise/auth-bitbucket",
"id": "auth-bitbucket",
"isExternal": false,
"children": [],
@ -6422,7 +6494,7 @@
},
{
"name": "Authenticate via SAML",
"path": "/ci/recipes/on-premise/auth-saml",
"path": "/ci/recipes/enterprise/on-premise/auth-saml",
"id": "auth-saml",
"isExternal": false,
"children": [],
@ -6430,7 +6502,7 @@
},
{
"name": "Authenticate via SAML on Managed Version",
"path": "/ci/recipes/on-premise/auth-saml-managed",
"path": "/ci/recipes/enterprise/on-premise/auth-saml-managed",
"id": "auth-saml-managed",
"isExternal": false,
"children": [],
@ -6438,7 +6510,140 @@
},
{
"name": "Advanced Configuration",
"path": "/ci/recipes/on-premise/advanced-config",
"path": "/ci/recipes/enterprise/on-premise/advanced-config",
"id": "advanced-config",
"isExternal": false,
"children": [],
"disableCollapsible": false
}
],
"disableCollapsible": false
},
{
"name": "Custom Distributed Task Execution",
"path": "/ci/recipes/enterprise/dte",
"id": "dte",
"isExternal": false,
"children": [
{
"name": "GitHub Actions Custom DTE",
"path": "/ci/recipes/enterprise/dte/github-dte",
"id": "github-dte",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Circle CI Custom DTE",
"path": "/ci/recipes/enterprise/dte/circle-ci-dte",
"id": "circle-ci-dte",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Azure Pipelines Custom DTE",
"path": "/ci/recipes/enterprise/dte/azure-dte",
"id": "azure-dte",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Bitbucket Pipelines Custom DTE",
"path": "/ci/recipes/enterprise/dte/bitbucket-dte",
"id": "bitbucket-dte",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "GitLab Custom DTE",
"path": "/ci/recipes/enterprise/dte/gitlab-dte",
"id": "gitlab-dte",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Jenkins Custom DTE",
"path": "/ci/recipes/enterprise/dte/jenkins-dte",
"id": "jenkins-dte",
"isExternal": false,
"children": [],
"disableCollapsible": false
}
],
"disableCollapsible": false
}
],
"disableCollapsible": false
},
{
"name": "On-Premise",
"path": "/ci/recipes/enterprise/on-premise",
"id": "on-premise",
"isExternal": false,
"children": [
{
"name": "Authenticate with a Single Admin",
"path": "/ci/recipes/enterprise/on-premise/auth-single-admin",
"id": "auth-single-admin",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Authenticate with GitHub",
"path": "/ci/recipes/enterprise/on-premise/auth-github",
"id": "auth-github",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "On-Prem VM Setup",
"path": "/ci/recipes/enterprise/on-premise/ami-setup",
"id": "ami-setup",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Authenticate with GitLab",
"path": "/ci/recipes/enterprise/on-premise/auth-gitlab",
"id": "auth-gitlab",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Authenticate with BitBucket",
"path": "/ci/recipes/enterprise/on-premise/auth-bitbucket",
"id": "auth-bitbucket",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Authenticate via SAML",
"path": "/ci/recipes/enterprise/on-premise/auth-saml",
"id": "auth-saml",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Authenticate via SAML on Managed Version",
"path": "/ci/recipes/enterprise/on-premise/auth-saml-managed",
"id": "auth-saml-managed",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Advanced Configuration",
"path": "/ci/recipes/enterprise/on-premise/advanced-config",
"id": "advanced-config",
"isExternal": false,
"children": [],
@ -6449,7 +6654,7 @@
},
{
"name": "Authenticate with a Single Admin",
"path": "/ci/recipes/on-premise/auth-single-admin",
"path": "/ci/recipes/enterprise/on-premise/auth-single-admin",
"id": "auth-single-admin",
"isExternal": false,
"children": [],
@ -6457,7 +6662,7 @@
},
{
"name": "Authenticate with GitHub",
"path": "/ci/recipes/on-premise/auth-github",
"path": "/ci/recipes/enterprise/on-premise/auth-github",
"id": "auth-github",
"isExternal": false,
"children": [],
@ -6465,7 +6670,7 @@
},
{
"name": "On-Prem VM Setup",
"path": "/ci/recipes/on-premise/ami-setup",
"path": "/ci/recipes/enterprise/on-premise/ami-setup",
"id": "ami-setup",
"isExternal": false,
"children": [],
@ -6473,7 +6678,7 @@
},
{
"name": "Authenticate with GitLab",
"path": "/ci/recipes/on-premise/auth-gitlab",
"path": "/ci/recipes/enterprise/on-premise/auth-gitlab",
"id": "auth-gitlab",
"isExternal": false,
"children": [],
@ -6481,7 +6686,7 @@
},
{
"name": "Authenticate with BitBucket",
"path": "/ci/recipes/on-premise/auth-bitbucket",
"path": "/ci/recipes/enterprise/on-premise/auth-bitbucket",
"id": "auth-bitbucket",
"isExternal": false,
"children": [],
@ -6489,7 +6694,7 @@
},
{
"name": "Authenticate via SAML",
"path": "/ci/recipes/on-premise/auth-saml",
"path": "/ci/recipes/enterprise/on-premise/auth-saml",
"id": "auth-saml",
"isExternal": false,
"children": [],
@ -6497,7 +6702,7 @@
},
{
"name": "Authenticate via SAML on Managed Version",
"path": "/ci/recipes/on-premise/auth-saml-managed",
"path": "/ci/recipes/enterprise/on-premise/auth-saml-managed",
"id": "auth-saml-managed",
"isExternal": false,
"children": [],
@ -6505,12 +6710,117 @@
},
{
"name": "Advanced Configuration",
"path": "/ci/recipes/on-premise/advanced-config",
"path": "/ci/recipes/enterprise/on-premise/advanced-config",
"id": "advanced-config",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Custom Distributed Task Execution",
"path": "/ci/recipes/enterprise/dte",
"id": "dte",
"isExternal": false,
"children": [
{
"name": "GitHub Actions Custom DTE",
"path": "/ci/recipes/enterprise/dte/github-dte",
"id": "github-dte",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Circle CI Custom DTE",
"path": "/ci/recipes/enterprise/dte/circle-ci-dte",
"id": "circle-ci-dte",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Azure Pipelines Custom DTE",
"path": "/ci/recipes/enterprise/dte/azure-dte",
"id": "azure-dte",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Bitbucket Pipelines Custom DTE",
"path": "/ci/recipes/enterprise/dte/bitbucket-dte",
"id": "bitbucket-dte",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "GitLab Custom DTE",
"path": "/ci/recipes/enterprise/dte/gitlab-dte",
"id": "gitlab-dte",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Jenkins Custom DTE",
"path": "/ci/recipes/enterprise/dte/jenkins-dte",
"id": "jenkins-dte",
"isExternal": false,
"children": [],
"disableCollapsible": false
}
],
"disableCollapsible": false
},
{
"name": "GitHub Actions Custom DTE",
"path": "/ci/recipes/enterprise/dte/github-dte",
"id": "github-dte",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Circle CI Custom DTE",
"path": "/ci/recipes/enterprise/dte/circle-ci-dte",
"id": "circle-ci-dte",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Azure Pipelines Custom DTE",
"path": "/ci/recipes/enterprise/dte/azure-dte",
"id": "azure-dte",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Bitbucket Pipelines Custom DTE",
"path": "/ci/recipes/enterprise/dte/bitbucket-dte",
"id": "bitbucket-dte",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "GitLab Custom DTE",
"path": "/ci/recipes/enterprise/dte/gitlab-dte",
"id": "gitlab-dte",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Jenkins Custom DTE",
"path": "/ci/recipes/enterprise/dte/jenkins-dte",
"id": "jenkins-dte",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "Troubleshooting",
"path": "/ci/recipes/troubleshooting",

View File

@ -1119,7 +1119,7 @@
"on-premise": [
{
"description": "Set up Nx Cloud on machines that you control",
"file": "nx-cloud/private/nx-enterprise-on-prem",
"file": "nx-cloud/features/nx-enterprise-on-prem",
"id": "on-premise",
"name": "Set up Nx Cloud On-Premise",
"path": "/ci/features/on-premise"

View File

@ -1715,7 +1715,7 @@
"description": "Set up Nx Cloud on machines that you control",
"id": "on-premise",
"tags": ["on-premise"],
"file": "nx-cloud/private/nx-enterprise-on-prem"
"file": "nx-cloud/features/nx-enterprise-on-prem"
}
]
},
@ -1841,6 +1841,11 @@
}
]
},
{
"name": "Enterprise",
"id": "enterprise",
"description": "Recipes for enterprise accounts",
"itemList": [
{
"name": "On-Premise",
"id": "on-premise",
@ -1849,42 +1854,81 @@
{
"name": "Authenticate with a Single Admin",
"id": "auth-single-admin",
"file": "nx-cloud/private/auth-single-admin"
"file": "nx-cloud/enterprise/on-premise/auth-single-admin"
},
{
"name": "Authenticate with GitHub",
"id": "auth-github",
"file": "nx-cloud/private/auth-github"
"file": "nx-cloud/enterprise/on-premise/auth-github"
},
{
"name": "On-Prem VM Setup",
"id": "ami-setup",
"file": "nx-cloud/private/ami-setup"
"file": "nx-cloud/enterprise/on-premise/ami-setup"
},
{
"name": "Authenticate with GitLab",
"id": "auth-gitlab",
"file": "nx-cloud/private/auth-gitlab"
"file": "nx-cloud/enterprise/on-premise/auth-gitlab"
},
{
"name": "Authenticate with BitBucket",
"id": "auth-bitbucket",
"file": "nx-cloud/private/auth-bitbucket"
"file": "nx-cloud/enterprise/on-premise/auth-bitbucket"
},
{
"name": "Authenticate via SAML",
"id": "auth-saml",
"file": "nx-cloud/private/auth-saml"
"file": "nx-cloud/enterprise/on-premise/auth-saml"
},
{
"name": "Authenticate via SAML on Managed Version",
"id": "auth-saml-managed",
"file": "nx-cloud/private/auth-saml-managed"
"file": "nx-cloud/enterprise/on-premise/auth-saml-managed"
},
{
"name": "Advanced Configuration",
"id": "advanced-config",
"file": "nx-cloud/private/advanced-config"
"file": "nx-cloud/enterprise/on-premise/advanced-config"
}
]
},
{
"name": "Custom Distributed Task Execution",
"id": "dte",
"description": "Custom DTE on your own CI provider",
"itemList": [
{
"name": "GitHub Actions Custom DTE",
"id": "github-dte",
"file": "nx-cloud/enterprise/dte/github-dte"
},
{
"name": "Circle CI Custom DTE",
"id": "circle-ci-dte",
"file": "nx-cloud/enterprise/dte/circle-ci-dte"
},
{
"name": "Azure Pipelines Custom DTE",
"id": "azure-dte",
"file": "nx-cloud/enterprise/dte/azure-dte"
},
{
"name": "Bitbucket Pipelines Custom DTE",
"id": "bitbucket-dte",
"file": "nx-cloud/enterprise/dte/bitbucket-dte"
},
{
"name": "GitLab Custom DTE",
"id": "gitlab-dte",
"file": "nx-cloud/enterprise/dte/gitlab-dte"
},
{
"name": "Jenkins Custom DTE",
"id": "jenkins-dte",
"file": "nx-cloud/enterprise/dte/jenkins-dte"
}
]
}
]
},

View File

@ -0,0 +1,73 @@
# Custom Distributed Task Execution on Azure Pipelines
Using [Nx Agents](/ci/features/distribute-task-execution) is the easiest way to distribute task execution, but it your organization may not be able to use hosted Nx Agents. With an [enterprise license](https://nx.app/enterprise), you can set up distributed task execution on your own CI provider using the recipe below.
## Run Custom Agents on Azure Pipelines
Run agents directly on Azure Pipelines with the workflow below:
```yaml {% fileName="azure-pipelines.yml" %}
trigger:
- main
pr:
- main
variables:
CI: 'true'
NX_CLOUD_DISTRIBUTED_EXECUTION_AGENT_COUNT: 3 # expected number of agents
${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
NX_BRANCH: $(System.PullRequest.PullRequestNumber)
TARGET_BRANCH: $[replace(variables['System.PullRequest.TargetBranch'],'refs/heads/','origin/')]
BASE_SHA: $(git merge-base $(TARGET_BRANCH) HEAD)
${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
NX_BRANCH: $(Build.SourceBranchName)
BASE_SHA: $(git rev-parse HEAD~1)
HEAD_SHA: $(git rev-parse HEAD)
jobs:
- job: agents
strategy:
parallel: 3
displayName: Nx Cloud Agent
pool:
vmImage: 'ubuntu-latest'
steps:
- script: npm ci
- script: npx nx-cloud start-agent
- job: main
displayName: Nx Cloud Main
pool:
vmImage: 'ubuntu-latest'
steps:
# Get last successfull commit from Azure Devops CLI
- displayName: 'Get last successful commit SHA'
condition: ne(variables['Build.Reason'], 'PullRequest')
env:
AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
bash: |
LAST_SHA=$(az pipelines build list --branch $(Build.SourceBranchName) --definition-ids $(System.DefinitionId) --result succeeded --top 1 --query "[0].triggerInfo.\"ci.sourceSha\"")
if [ -z "$LAST_SHA" ]
then
echo "Last successful commit not found. Using fallback 'HEAD~1': $BASE_SHA"
else
echo "Last successful commit SHA: $LAST_SHA"
echo "##vso[task.setvariable variable=BASE_SHA]$LAST_SHA"
fi
- script: git branch --track main origin/main
- script: npm ci
- script: npx nx-cloud start-ci-run --stop-agents-after="e2e-ci"
- script: npx nx-cloud record -- nx format:check --base=$(BASE_SHA) --head=$(HEAD_SHA)
- script: npx nx affected --base=$(BASE_SHA) --head=$(HEAD_SHA) -t lint,test,build,e2e-ci --parallel=2 --configuration=ci
```
This configuration is setting up two types of jobs - a main job and three agent jobs.
The main job tells Nx Cloud to use DTE and then runs normal Nx commands as if this were a single pipeline set up. Once the commands are done, it notifies Nx Cloud to stop the agent jobs.
The agent jobs set up the repo and then wait for Nx Cloud to assign them tasks.
{% callout type="warning" title="Two Types of Parallelization" %}
The agent strategy of `parallel: 3` and the `nx affected --parallel=2` flag both parallelize tasks, but in different ways. The way this workflow is written, there will be 3 agents running tasks and each agent will try to run 2 tasks at once. If a particular CI run only has 2 tasks, only one agent will be used.
{% /callout %}

View File

@ -0,0 +1,52 @@
# Custom Distributed Task Execution on Bitbucket Pipelines
Using [Nx Agents](/ci/features/distribute-task-execution) is the easiest way to distribute task execution, but it your organization may not be able to use hosted Nx Agents. With an [enterprise license](https://nx.app/enterprise), you can set up distributed task execution on your own CI provider using the recipe below.
## Run Custom Agents on Bitbucket Pipelines
Run agents directly on Bitbucket Pipelines with the workflow below:
```yaml {% fileName="bitbucket-pipelines.yml" %}
image: node:20
clone:
depth: full
definitions:
steps:
- step: &agent
name: Agent
script:
- export NX_BRANCH=$BITBUCKET_PR_ID
- npm ci
- npx nx-cloud start-agent
pipelines:
pull-requests:
'**':
- parallel:
- step:
name: CI
script:
- export NX_BRANCH=$BITBUCKET_PR_ID
- export NX_CLOUD_DISTRIBUTED_EXECUTION_AGENT_COUNT=3
- npm ci
- npx nx-cloud start-ci-run --stop-agents-after="e2e-ci" --agent-count=3
- npx nx-cloud record -- nx format:check
- npx nx affected --target=lint,test,build,e2e-ci --parallel=2
- step: *agent
- step: *agent
- step: *agent
```
This configuration is setting up two types of jobs - a main job and three agent jobs.
The main job tells Nx Cloud to use DTE and then runs normal Nx commands as if this were a single pipeline set up. Once the commands are done, it notifies Nx Cloud to stop the agent jobs.
The agent jobs set up the repo and then wait for Nx Cloud to assign them tasks.
{% callout type="warning" title="Two Types of Parallelization" %}
The agents and the `--parallel` flag both parallelize tasks, but in different ways. The way this workflow is written, there will be 3 agents running tasks and each agent will try to run 2 tasks at once. If a particular CI run only has 2 tasks, only one agent will be used.
{% /callout %}

View File

@ -0,0 +1,61 @@
# Custom Distributed Task Execution on Circle CI
Using [Nx Agents](/ci/features/distribute-task-execution) is the easiest way to distribute task execution, but it your organization may not be able to use hosted Nx Agents. With an [enterprise license](https://nx.app/enterprise), you can set up distributed task execution on your own CI provider using the recipe below.
## Run Custom Agents on Circle CI
Run agents directly on Circle CI with the workflow below:
```yaml {% fileName=".circleci/config.yml" %}
version: 2.1
orbs:
nx: nrwl/nx@1.5.1
jobs:
main:
docker:
- image: cimg/node:lts-browsers
environment:
NX_CLOUD_DISTRIBUTED_EXECUTION_AGENT_COUNT: 3 # expected number of agents
steps:
- checkout
- run: npm ci
- nx/set-shas
# Tell Nx Cloud to use DTE and stop agents when the e2e-ci tasks are done
- run: npx nx-cloud start-ci-run --stop-agents-after=e2e-ci
# Send logs to Nx Cloud for any CLI command
- run: npx nx-cloud record -- nx format:check
# Lint, test, build and run e2e on agent jobs for everything affected by a change
- run: npx nx affected --base=$NX_BASE --head=$NX_HEAD -t lint,test,build,e2e-ci --parallel=2 --configuration=ci
agent:
docker:
- image: cimg/node:lts-browsers
parameters:
ordinal:
type: integer
steps:
- checkout
- run: npm ci
# Wait for instructions from Nx Cloud
- run:
command: npx nx-cloud start-agent
no_output_timeout: 60m
workflows:
build:
jobs:
- agent:
matrix:
parameters:
ordinal: [1, 2, 3]
- main
```
This configuration is setting up two types of jobs - a main job and three agent jobs.
The main job tells Nx Cloud to use DTE and then runs normal Nx commands as if this were a single pipeline set up. Once the commands are done, it notifies Nx Cloud to stop the agent jobs.
The agent jobs set up the repo and then wait for Nx Cloud to assign them tasks.
{% callout type="warning" title="Two Types of Parallelization" %}
The `ordinal: [1, 2, 3]` line and the `--parallel` flag both parallelize tasks, but in different ways. The way this workflow is written, there will be 3 agents running tasks and each agent will try to run 2 tasks at once. If a particular CI run only has 2 tasks, only one agent will be used.
{% /callout %}

View File

@ -0,0 +1,130 @@
# Custom Distributed Task Execution on Github Actions
Using [Nx Agents](/ci/features/distribute-task-execution) is the easiest way to distribute task execution, but it your organization may not be able to use hosted Nx Agents. With an [enterprise license](https://nx.app/enterprise), you can set up distributed task execution on your own CI provider using the recipe below.
## Run Custom Agents on GitHub
Our [reusable GitHub workflow](https://github.com/nrwl/ci) represents a good set of defaults that works for a large number of our users. However, reusable GitHub workflows come with their [limitations](https://docs.github.com/en/actions/using-workflows/reusing-workflows).
If the reusable workflow above doesn't satisfy your needs you should create a custom workflow. If you were to rewrite the reusable workflow yourself, it would look something like this:
```yaml {% fileName=".github/workflows/ci.yml" %}
name: CI
on:
push:
branches:
- main
pull_request:
# Needed for nx-set-shas when run on the main branch
permissions:
actions: read
contents: read
env:
NX_CLOUD_DISTRIBUTED_EXECUTION: true # this enables DTE
NX_CLOUD_DISTRIBUTED_EXECUTION_AGENT_COUNT: 3 # expected number of agents
NX_BRANCH: ${{ github.event.number || github.ref_name }}
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} # this is needed if our pipeline publishes to npm
jobs:
main:
name: Nx Cloud - Main Job
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
name: Checkout [Pull Request]
if: ${{ github.event_name == 'pull_request' }}
with:
# By default, PRs will be checked-out based on the Merge Commit, but we want the actual branch HEAD.
ref: ${{ github.event.pull_request.head.sha }}
# We need to fetch all branches and commits so that Nx affected has a base to compare against.
fetch-depth: 0
- uses: actions/checkout@v4
name: Checkout [Default Branch]
if: ${{ github.event_name != 'pull_request' }}
with:
# We need to fetch all branches and commits so that Nx affected has a base to compare against.
fetch-depth: 0
# Set node/npm/yarn versions using volta
- uses: volta-cli/action@v4
with:
package-json-path: '${{ github.workspace }}/package.json'
- name: Use the package manager cache if available
uses: actions/setup-node@v3
with:
node-version: 20
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Check out the default branch
run: git branch --track main origin/main
- name: Initialize the Nx Cloud distributed CI run and stop agents when the build tasks are done
run: npx nx-cloud start-ci-run --stop-agents-after=e2e-ci
- name: Run commands in parallel
run: |
# initialize an array to store process IDs (PIDs)
pids=()
# function to run commands and store the PID
function run_command() {
local command=$1
$command & # run the command in the background
pids+=($!) # store the PID of the background process
}
# list of commands to be run on main has env flag NX_CLOUD_DISTRIBUTED_EXECUTION set to false
run_command "NX_CLOUD_DISTRIBUTED_EXECUTION=false npx nx-cloud record -- nx format:check"
# list of commands to be run on agents
run_command "npx nx affected -t lint,test,build,e2e-ci --parallel=3"
# wait for all background processes to finish
for pid in ${pids[*]}; do
if ! wait $pid; then
exit 1 # exit with an error status if any process fails
fi
done
exit 0 # exits with success status if a all processes complete successfully
agents:
name: Agent ${{ matrix.agent }}
runs-on: ubuntu-latest
strategy:
matrix:
# Add more agents here as your repository expands
agent: [1, 2, 3]
steps:
- name: Checkout
uses: actions/checkout@v4
# Set node/npm/yarn versions using volta
- uses: volta-cli/action@v4
with:
package-json-path: '${{ github.workspace }}/package.json'
- name: Use the package manager cache if available
uses: actions/setup-node@v3
with:
node-version: 20
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Start Nx Agent ${{ matrix.agent }}
run: npx nx-cloud start-agent
env:
NX_AGENT_NAME: ${{ matrix.agent }}
```
There are comments throughout the workflow to help you understand what is happening in each section.

View File

@ -0,0 +1,77 @@
# Custom Distributed Task Execution on GitLab
Using [Nx Agents](/ci/features/distribute-task-execution) is the easiest way to distribute task execution, but it your organization may not be able to use hosted Nx Agents. With an [enterprise license](https://nx.app/enterprise), you can set up distributed task execution on your own CI provider using the recipe below.
## Run Custom Agents on GitLab
Run agents directly on GitLab with the workflow below:
```yaml {% fileName=".gitlab-ci.yml" %}
image: node:18
# Creating template for DTE agents
.dte-agent:
interruptible: true
cache:
key:
files:
- yarn.lock
paths:
- '.yarn-cache/'
script:
- yarn install --cache-folder .yarn-cache --prefer-offline --frozen-lockfile
- yarn nx-cloud start-agent
# Creating template for a job running DTE (orchestrator)
.base-pipeline:
interruptible: true
only:
- main
- merge_requests
cache:
key:
files:
- yarn.lock
paths:
- '.yarn-cache/'
before_script:
- yarn install --cache-folder .yarn-cache --prefer-offline --frozen-lockfile
- NX_HEAD=$CI_COMMIT_SHA
- NX_BASE=${CI_MERGE_REQUEST_DIFF_BASE_SHA:-$CI_COMMIT_BEFORE_SHA}
- NX_CLOUD_DISTRIBUTED_EXECUTION_AGENT_COUNT=3 # expected number of agents
artifacts:
expire_in: 5 days
paths:
- dist
# Main job running DTE
nx-dte:
stage: affected
extends: .base-pipeline
script:
- yarn nx-cloud start-ci-run --stop-agents-after=e2e-ci
- yarn nx-cloud record -- nx format:check --base=$NX_BASE --head=$NX_HEAD
- yarn nx affected --base=$NX_BASE --head=$NX_HEAD -t lint,test,build,e2e-ci --parallel=2
# Create as many agents as you want
nx-dte-agent1:
extends: .dte-agent
stage: affected
nx-dte-agent2:
extends: .dte-agent
stage: affected
nx-dte-agent3:
extends: .dte-agent
stage: affected
```
This configuration is setting up two types of jobs - a main job and three agent jobs.
The main job tells Nx Cloud to use DTE and then runs normal Nx commands as if this were a single pipeline set up. Once the commands are done, it notifies Nx Cloud to stop the agent jobs.
The agent jobs set up the repo and then wait for Nx Cloud to assign them tasks.
{% callout type="warning" title="Two Types of Parallelization" %}
The agents and the `--parallel` flag both parallelize tasks, but in different ways. The way this workflow is written, there will be 3 agents running tasks and each agent will try to run 2 tasks at once. If a particular CI run only has 2 tasks, only one agent will be used.
{% /callout %}

View File

@ -0,0 +1,80 @@
# Custom Distributed Task Execution on Jenkins
Using [Nx Agents](/ci/features/distribute-task-execution) is the easiest way to distribute task execution, but it your organization may not be able to use hosted Nx Agents. With an [enterprise license](https://nx.app/enterprise), you can set up distributed task execution on your own CI provider using the recipe below.
## Distribute Tasks Across Custom Agents on Jenkins
Run agents directly on Jenkins with the workflow below:
```groovy
pipeline {
agent none
environment {
NX_BRANCH = env.BRANCH_NAME.replace('PR-', '')
NX_CLOUD_DISTRIBUTED_EXECUTION_AGENT_COUNT = 3
}
stages {
stage('Pipeline') {
parallel {
stage('Main') {
when {
branch 'main'
}
agent any
steps {
sh "npm ci"
sh "npx nx-cloud start-ci-run --stop-agents-after='e2e-ci'"
sh "npx nx-cloud record -- nx format:check"
sh "npx nx affected --base=HEAD~1 -t lint,test,build,e2e-ci --configuration=ci --parallel=2"
}
}
stage('PR') {
when {
not { branch 'main' }
}
agent any
steps {
sh "npm ci"
sh "npx nx-cloud start-ci-run --stop-agents-after='e2e-ci'"
sh "npx nx-cloud record -- nx format:check"
sh "npx nx affected --base origin/${env.CHANGE_TARGET} -t lint,test,build,e2e-ci --parallel=2 --configuration=ci"
}
}
# Add as many agent you want
stage('Agent1') {
agent any
steps {
sh "npm ci"
sh "npx nx-cloud start-agent"
}
}
stage('Agent2') {
agent any
steps {
sh "npm ci"
sh "npx nx-cloud start-agent"
}
}
stage('Agent3') {
agent any
steps {
sh "npm ci"
sh "npx nx-cloud start-agent"
}
}
}
}
}
}
```
This configuration is setting up two types of jobs - a main job and three agent jobs.
The main job tells Nx Cloud to use DTE and then runs normal Nx commands as if this were a single pipeline set up. Once the commands are done, it notifies Nx Cloud to stop the agent jobs.
The agent jobs set up the repo and then wait for Nx Cloud to assign them tasks.
{% callout type="warning" title="Two Types of Parallelization" %}
The agents and the `--parallel` flag both parallelize tasks, but in different ways. The way this workflow is written, there will be 3 agents running tasks and each agent will try to run 2 tasks at once. If a particular CI run only has 2 tasks, only one agent will be used.
{% /callout %}

View File

@ -16,7 +16,7 @@
7. "Launch instance"
8. Wait 10 minutes, then navigate to your instance's IP in the browser. You should see the Nx Cloud dashboard!
![Nx Cloud landing page](/nx-cloud/private/images/nx-cloud-landing.png)
![Nx Cloud landing page](/nx-cloud/enterprise/on-premise/images/nx-cloud-landing.png)
### Your Nx Cloud URL
@ -126,26 +126,26 @@ nxCloudAppURL: 'https://nx-cloud.on.my-domain.ca' # make sure no backslash is at
# the filesystem
secret:
# set your initial admin password for logging into the app
# see here: https://nx.dev/ci/recipes/on-premise/auth-single-admin
# see here: https://nx.dev/ci/recipes/enterprise/on-premise/auth-single-admin
adminPassword: 'correcthorsebatterystaple'
# If you want to enable GitHub Login, just provide your client id & secret, we handle the rest
# see here: https://nx.dev/ci/recipes/on-premise/auth-github
# see here: https://nx.dev/ci/recipes/enterprise/on-premise/auth-github
githubAuthClientId: 'my_client_id'
githubAuthClientSecret: 'my_client_secret'
# The same goes for GitLab authentication
# see here: https://nx.dev/ci/recipes/on-premise/auth-gitlab
# see here: https://nx.dev/ci/recipes/enterprise/on-premise/auth-gitlab
# gitlabAppId: 'my_gitlab_app_id'
# gitlabAppSecret: 'my_gitlab_app_secret'
# Bitbucket too! If these are uncommented, BB auth is automatically enabled
# see here: https://nx.dev/ci/recipes/on-premise/auth-bitbucket
# see here: https://nx.dev/ci/recipes/enterprise/on-premise/auth-bitbucket
# bitbucketAppId: 'bitbucket_app_id'
# bitbucketAppSecret: 'bitbucket_app_secret'
# SAML auth
# see here: https://nx.dev/ci/recipes/on-premise/auth-saml
# see here: https://nx.dev/ci/recipes/enterprise/on-premise/auth-saml
# samlEntryPoint: 'your_saml_entry_point'
# samlCert: 'saml_cert'
```

View File

@ -8,15 +8,15 @@ Before creating your container, you'll need to create a BitBucket "OAuth consume
From BitBucket, click on your profile picture and select your workspace:
![Step 1](/nx-cloud/private/images/bitbucket_1.png)
![Step 1](/nx-cloud/enterprise/on-premise/images/bitbucket_1.png)
Then "Settings":
![Step 2](/nx-cloud/private/images/bitbucket_2.png)
![Step 2](/nx-cloud/enterprise/on-premise/images/bitbucket_2.png)
Then "OAuth consumers":
![Step 3](/nx-cloud/private/images/bitbucket_3.png)
![Step 3](/nx-cloud/enterprise/on-premise/images/bitbucket_3.png)
And create a new consumer.
@ -31,17 +31,17 @@ https://my.nx-enterprise.url:8080/auth-callback
**Important:** Ensure there is **no backslash at the end of the "Callback URL"** (i.e. it matches the above pattern)
![Step 4](/nx-cloud/private/images/bitbucket_4.png)
![Step 4](/nx-cloud/enterprise/on-premise/images/bitbucket_4.png)
Ensure you grant it the `account:read` and `account:email` scopes:
![Step 5](/nx-cloud/private/images/bitbucket_5.png)
![Step 5](/nx-cloud/enterprise/on-premise/images/bitbucket_5.png)
Save your changes.
Once you create, keep a note of the Key and the Secret:
![Step 6](/nx-cloud/private/images/bitbucket_6.png)
![Step 6](/nx-cloud/enterprise/on-premise/images/bitbucket_6.png)
## Connect your Nx Cloud installation to your new app

View File

@ -6,19 +6,19 @@ First, you'll need to create a GitHub OAuth app for your organisation.
From GitHub, click on your profile picture and chose "Settings":
![Step 1](/nx-cloud/private/images/github_auth_step_1.png)
![Step 1](/nx-cloud/enterprise/on-premise/images/github_auth_step_1.png)
Then "Developer settings" from the left-hand menu:
![Step 2](/nx-cloud/private/images/github_auth_step_2.png)
![Step 2](/nx-cloud/enterprise/on-premise/images/github_auth_step_2.png)
Then "OAuth Apps":
![Step 3](/nx-cloud/private/images/github_auth_step_3.png)
![Step 3](/nx-cloud/enterprise/on-premise/images/github_auth_step_3.png)
And create a new OAuth app:
![Step 4](/nx-cloud/private/images/github_auth_step_4.png)
![Step 4](/nx-cloud/enterprise/on-premise/images/github_auth_step_4.png)
Give it a name, and a homepage URL. The authorization callback is the important bit. It needs to be in this form:
@ -29,15 +29,15 @@ Give it a name, and a homepage URL. The authorization callback is the important
https://my.nx-enterprise.url:8080/auth-callback
```
![Step 5](/nx-cloud/private/images/github_auth_step_5.png)
![Step 5](/nx-cloud/enterprise/on-premise/images/github_auth_step_5.png)
Once you create, keep a note of the Client ID:
![Step 6](/nx-cloud/private/images/github_auth_step_6.png)
![Step 6](/nx-cloud/enterprise/on-premise/images/github_auth_step_6.png)
And then generate a new client secret, and save it somewhere secure (we'll use it in a bit):
![Step 7](/nx-cloud/private/images/github_auth_step_7.png)
![Step 7](/nx-cloud/enterprise/on-premise/images/github_auth_step_7.png)
## Configure Nx Cloud Installation

View File

@ -6,11 +6,11 @@ Before creating your container, you'll need to create a GitLab app for your orga
From GitLab, click on your profile picture and chose "Preferences":
![Step 1](/nx-cloud/private/images/gitlab_step_1.png)
![Step 1](/nx-cloud/enterprise/on-premise/images/gitlab_step_1.png)
Then "Applications" from the left-hand menu:
![Step 2](/nx-cloud/private/images/gitlab_step_2.png)
![Step 2](/nx-cloud/enterprise/on-premise/images/gitlab_step_2.png)
Give the app a name. The authorization callback is the important bit. It needs to be in this form:
@ -23,17 +23,17 @@ https://my.nx-enterprise.url:8080/auth-callback
**Important:** Ensure there is **no backslash at the end of the "Redirect URI"** (i.e. it matches the above pattern)
![Step 3](/nx-cloud/private/images/gitlab_step_3.png)
![Step 3](/nx-cloud/enterprise/on-premise/images/gitlab_step_3.png)
Ensure you grant it the "`read_user`" scope:
![Step 4](/nx-cloud/private/images/gitlab_step_4.png)
![Step 4](/nx-cloud/enterprise/on-premise/images/gitlab_step_4.png)
Click "Save application".
Once you create, keep a note of the Client ID and the Secret:
![Step 5](/nx-cloud/private/images/gitlab_step_5.png)
![Step 5](/nx-cloud/enterprise/on-premise/images/gitlab_step_5.png)
## Connect your Nx Cloud installation to your new app

View File

@ -7,13 +7,13 @@ You'll be entering it in the instructions below.
1. Create a new Okta App Integration:
![Okta 1](/nx-cloud/private/images/saml/okta_1.png)
![Okta 1](/nx-cloud/enterprise/on-premise/images/saml/okta_1.png)
![Okta 2](/nx-cloud/private/images/saml/okta_2.png)
![Okta 2](/nx-cloud/enterprise/on-premise/images/saml/okta_2.png)
2. Give it a name:
![Okta 3](/nx-cloud/private/images/saml/okta_3.png)
![Okta 3](/nx-cloud/enterprise/on-premise/images/saml/okta_3.png)
3. On the Next page, configure it as below:
@ -24,30 +24,30 @@ You'll be entering it in the instructions below.
- If using the main-US cluster: `urn:auth0:nrwl:SAML-IDENTIFIER`
- If using the EU cluster: `urn:auth0:nxcloud-eu:SAML-IDENTIFIER`
![Okta 4](/nx-cloud/private/images/saml/okta_4_public.png)
![Okta 4](/nx-cloud/enterprise/on-premise/images/saml/okta_4_public.png)
4. Scroll down to attribute statements and configure them as per below:
![Okta 5](/nx-cloud/private/images/saml/okta_5.png)
![Okta 5](/nx-cloud/enterprise/on-premise/images/saml/okta_5.png)
5. Click “Next”, and select the first option on the next screen.
6. Go to the assignments tab and assign the users that can login to the Nx Cloud WebApp:
1. **Note:** This just gives them permission to use the Nx Cloud web app with their own workspace. Users will still need to be invited manually through the web app to your main workspace.
![Okta 6](/nx-cloud/private/images/saml/okta_6.png)
![Okta 6](/nx-cloud/enterprise/on-premise/images/saml/okta_6.png)
7. Then in the Sign-On tab scroll down:
![Okta 7](/nx-cloud/private/images/saml/okta_7.png)
![Okta 7](/nx-cloud/enterprise/on-premise/images/saml/okta_7.png)
8. Scroll down and from the list of certificates, download the one with the “Active” status:
![Okta 8](/nx-cloud/private/images/saml/okta_8.png)
![Okta 8](/nx-cloud/enterprise/on-premise/images/saml/okta_8.png)
9. Then view the ldP metadata:
![Okta 9](/nx-cloud/private/images/saml/okta_9.png)
![Okta 9](/nx-cloud/enterprise/on-premise/images/saml/okta_9.png)
10. Then find the row similar to the below, and copy the highlighted URL (see screenshot as well):
@ -58,7 +58,7 @@ You'll be entering it in the instructions below.
/>
```
![Okta 10](/nx-cloud/private/images/saml/okta_10.png)
![Okta 10](/nx-cloud/enterprise/on-premise/images/saml/okta_10.png)
11. Send us via email:
- your _public_ certificate downloaded in step 8

View File

@ -12,44 +12,44 @@ if you are interested.
1. Create a new enterprise app
![Step 1](/nx-cloud/private/images/saml/azure_1.png)
![Step 1](/nx-cloud/enterprise/on-premise/images/saml/azure_1.png)
![Step 2](/nx-cloud/private/images/saml/azure_2.png)
![Step 2](/nx-cloud/enterprise/on-premise/images/saml/azure_2.png)
2. Choose “Create your own”:
![Step 3](/nx-cloud/private/images/saml/azure_3.png)
![Step 3](/nx-cloud/enterprise/on-premise/images/saml/azure_3.png)
3. Give it a name
![Step 4](/nx-cloud/private/images/saml/azure_4.png)
![Step 4](/nx-cloud/enterprise/on-premise/images/saml/azure_4.png)
4. Assign your users and/or groups to it:
![Step 5](/nx-cloud/private/images/saml/azure_5.png)
![Step 5](/nx-cloud/enterprise/on-premise/images/saml/azure_5.png)
5. Then set-up SSO
![Step 6](/nx-cloud/private/images/saml/azure_6.png)
![Step 6](/nx-cloud/enterprise/on-premise/images/saml/azure_6.png)
6. And choose SAML:
![Step 7](/nx-cloud/private/images/saml/azure_7.png)
![Step 7](/nx-cloud/enterprise/on-premise/images/saml/azure_7.png)
7. Add these configuration options
1. Configure the Identifier **exactly** as `nx-private-cloud`
2. For the **Reply URL**, it should point to your Private Cloud instance URL. Make sure it ends with `/auth-callback`
![Step 8](/nx-cloud/private/images/saml/azure_8.png)
![Step 8](/nx-cloud/enterprise/on-premise/images/saml/azure_8.png)
8. Scroll down and manage claims:
![Step 9](/nx-cloud/private/images/saml/azure_9.png)
![Step 9](/nx-cloud/enterprise/on-premise/images/saml/azure_9.png)
9. The first row should be the `email` claim, click to Edit it:
![Step 10](/nx-cloud/private/images/saml/azure_10.png)
![Step 10](/nx-cloud/enterprise/on-premise/images/saml/azure_10.png)
10. Configure it as per below
@ -57,18 +57,18 @@ if you are interested.
2. **“Name:”** needs to be “email”
3. See screenshot below. This is an important step, because Nx Cloud will expect the “email” property on each profile that logs in.
![Step 11](/nx-cloud/private/images/saml/azure_11.png)
![Step 11](/nx-cloud/enterprise/on-premise/images/saml/azure_11.png)
11. Download the certificate in **Base64**:
![Step 12](/nx-cloud/private/images/saml/azure_12.png)
![Step 12](/nx-cloud/enterprise/on-premise/images/saml/azure_12.png)
12. Extract the downloaded certificate value as a one-line string:
1. `awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}' azure_cert_file.cer`
2. Well use this in a bit to initialize an environment variable
13. Copy the Login URL:
![Step 13](/nx-cloud/private/images/saml/azure_13.png)
![Step 13](/nx-cloud/enterprise/on-premise/images/saml/azure_13.png)
14. Then add these two env vars to your Nx Cloud cluster secrets (see [Helm config](#helm-config) below):
1. `SAML_CERT=<your-cert-string-from-above>`
@ -78,46 +78,46 @@ if you are interested.
1. Create a new Okta App Integration:
![Okta 1](/nx-cloud/private/images/saml/okta_1.png)
![Okta 1](/nx-cloud/enterprise/on-premise/images/saml/okta_1.png)
![Okta 2](/nx-cloud/private/images/saml/okta_2.png)
![Okta 2](/nx-cloud/enterprise/on-premise/images/saml/okta_2.png)
2. Give it a name:
![Okta 3](/nx-cloud/private/images/saml/okta_3.png)
![Okta 3](/nx-cloud/enterprise/on-premise/images/saml/okta_3.png)
3. On the Next page, configure it as below:
1. The Single Sign On URL needs to point to your Nx Cloud instance URL and ends with `/auth/saml/callback`
2. The Audience should be `nx-private-cloud`
![Okta 4](/nx-cloud/private/images/saml/okta_4.png)
![Okta 4](/nx-cloud/enterprise/on-premise/images/saml/okta_4.png)
4. Scroll down to attribute statements and configure them as per below:
![Okta 5](/nx-cloud/private/images/saml/okta_5.png)
![Okta 5](/nx-cloud/enterprise/on-premise/images/saml/okta_5.png)
5. Click “Next”, and select the first option on the next screen.
6. Go to the assignments tab and assign the users that can login to the Nx Cloud WebApp:
1. **Note:** This just gives them permission to use the Nx Cloud web app with their own workspace. Users will still need to be invited manually through the web app to your main workspace.
![Okta 6](/nx-cloud/private/images/saml/okta_6.png)
![Okta 6](/nx-cloud/enterprise/on-premise/images/saml/okta_6.png)
7. Then in the Sign-On tab scroll down:
![Okta 7](/nx-cloud/private/images/saml/okta_7.png)
![Okta 7](/nx-cloud/enterprise/on-premise/images/saml/okta_7.png)
8. Scroll down and from the list of certificates, download the one with the “Active” status:
![Okta 8](/nx-cloud/private/images/saml/okta_8.png)
![Okta 8](/nx-cloud/enterprise/on-premise/images/saml/okta_8.png)
9. Extract the downloaded certificate value as a one-line string:
1. `awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}' okta.cert`
2. We will use this in a bit to initialize and environment variable
10. Then view the ldP metadata:
![Okta 9](/nx-cloud/private/images/saml/okta_9.png)
![Okta 9](/nx-cloud/enterprise/on-premise/images/saml/okta_9.png)
11. Then find the row similar to the below, and copy the highlighted URL (see screenshot as well):
@ -128,7 +128,7 @@ if you are interested.
/>
```
![Okta 10](/nx-cloud/private/images/saml/okta_10.png)
![Okta 10](/nx-cloud/enterprise/on-premise/images/saml/okta_10.png)
12. Then add these two env vars to your secrets (see [Helm config](#helm-config) below):
1. `SAML_CERT=<your-cert-string-from-above>`

View File

@ -33,17 +33,17 @@ than 1 admin to your workspace, to reduce the chance of losing access to it.
For instructions on how to set up third-party auth providers, please refer to these guides:
- [GitHub Auth](/ci/recipes/on-premise/auth-github)
- [GitLab Auth](/ci/recipes/on-premise/auth-gitlab)
- [BitBucket Auth](/ci/recipes/on-premise/auth-bitbucket)
- [SAML Auth](/ci/recipes/on-premise/auth-saml)
- [GitHub Auth](/ci/recipes/enterprise/on-premise/auth-github)
- [GitLab Auth](/ci/recipes/enterprise/on-premise/auth-gitlab)
- [BitBucket Auth](/ci/recipes/enterprise/on-premise/auth-bitbucket)
- [SAML Auth](/ci/recipes/enterprise/on-premise/auth-saml)
## Inviting users
Once that's done, you can either sign in with your admin user by using the form, or
directly via the configured third-party authentication providers by clicking the "_Sign In with configured third-party provider_" button:
![Main user login](/nx-cloud/private/images/main-user-login.webp)
![Main user login](/nx-cloud/enterprise/on-premise/images/main-user-login.webp)
You can then go to your organisation's settings and then to the members page and start inviting people based on their GitHub username.
When you invite someone, Nx Cloud will generate a unique invite URL, which you can send to that person directly.
@ -61,8 +61,8 @@ can usually be found by clicking in the top-right corner.
GitLab:
![GitLab username location](/nx-cloud/private/images/gitlab-username.png)
![GitLab username location](/nx-cloud/enterprise/on-premise/images/gitlab-username.png)
GitHub:
![GitHub username location](/nx-cloud/private/images/github-username.png)
![GitHub username location](/nx-cloud/enterprise/on-premise/images/github-username.png)

View File

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 76 KiB

View File

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 194 KiB

After

Width:  |  Height:  |  Size: 194 KiB

View File

Before

Width:  |  Height:  |  Size: 131 KiB

After

Width:  |  Height:  |  Size: 131 KiB

View File

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 100 KiB

View File

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

View File

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 104 KiB

View File

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 41 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

Before

Width:  |  Height:  |  Size: 167 KiB

After

Width:  |  Height:  |  Size: 167 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 96 KiB

After

Width:  |  Height:  |  Size: 96 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 64 KiB

View File

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 53 KiB

View File

Before

Width:  |  Height:  |  Size: 198 KiB

After

Width:  |  Height:  |  Size: 198 KiB

View File

Before

Width:  |  Height:  |  Size: 129 KiB

After

Width:  |  Height:  |  Size: 129 KiB

View File

Before

Width:  |  Height:  |  Size: 168 KiB

After

Width:  |  Height:  |  Size: 168 KiB

View File

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

Before

Width:  |  Height:  |  Size: 128 KiB

After

Width:  |  Height:  |  Size: 128 KiB

View File

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 104 KiB

View File

Before

Width:  |  Height:  |  Size: 136 KiB

After

Width:  |  Height:  |  Size: 136 KiB

View File

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 102 KiB

View File

Before

Width:  |  Height:  |  Size: 120 KiB

After

Width:  |  Height:  |  Size: 120 KiB

View File

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 74 KiB

View File

Before

Width:  |  Height:  |  Size: 157 KiB

After

Width:  |  Height:  |  Size: 157 KiB

View File

Before

Width:  |  Height:  |  Size: 143 KiB

After

Width:  |  Height:  |  Size: 143 KiB

View File

Before

Width:  |  Height:  |  Size: 175 KiB

After

Width:  |  Height:  |  Size: 175 KiB

View File

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 94 KiB

View File

Before

Width:  |  Height:  |  Size: 123 KiB

After

Width:  |  Height:  |  Size: 123 KiB

View File

Before

Width:  |  Height:  |  Size: 92 KiB

After

Width:  |  Height:  |  Size: 92 KiB

View File

Before

Width:  |  Height:  |  Size: 287 KiB

After

Width:  |  Height:  |  Size: 287 KiB

View File

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

View File

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 81 KiB

View File

Before

Width:  |  Height:  |  Size: 131 KiB

After

Width:  |  Height:  |  Size: 131 KiB

View File

Before

Width:  |  Height:  |  Size: 137 KiB

After

Width:  |  Height:  |  Size: 137 KiB

View File

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB

View File

Before

Width:  |  Height:  |  Size: 168 KiB

After

Width:  |  Height:  |  Size: 168 KiB

View File

Before

Width:  |  Height:  |  Size: 166 KiB

After

Width:  |  Height:  |  Size: 166 KiB

View File

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 55 KiB

View File

Before

Width:  |  Height:  |  Size: 139 KiB

After

Width:  |  Height:  |  Size: 139 KiB

View File

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 121 KiB

View File

Before

Width:  |  Height:  |  Size: 107 KiB

After

Width:  |  Height:  |  Size: 107 KiB

View File

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 95 KiB

View File

Before

Width:  |  Height:  |  Size: 155 KiB

After

Width:  |  Height:  |  Size: 155 KiB

View File

Before

Width:  |  Height:  |  Size: 113 KiB

After

Width:  |  Height:  |  Size: 113 KiB

View File

@ -46,7 +46,7 @@ Once you let us know you'd like this option, depending on the agreed requirement
If you would like to host Nx Cloud yourself, within your organization's infrastructure, the easiest way to set it up is as a self-contained VM.
Refer to our ["Self-contained VM" guide](/ci/recipes/on-premise/ami-setup) for instructions on running Nx Cloud on Amazon EC2.
Refer to our ["Self-contained VM" guide](/ci/recipes/enterprise/on-premise/ami-setup) for instructions on running Nx Cloud on Amazon EC2.
### Multi-node setup with Kubernetes
@ -57,4 +57,4 @@ We do offer, however, a multi-node Kubernetes setup, that is deployed via Helm.
## Resources
- [Integration with your source control provider](/ci/recipes/source-control-integration)
- [On-Prem specific features](/ci/recipes/on-premise/auth-single-admin)
- [On-Prem specific features](/ci/recipes/enterprise/on-premise/auth-single-admin)

View File

@ -25184,203 +25184,203 @@
"hash": "2fe6ceb807628d7cbafb7edc964ab091cbb51f50"
},
{
"file": "docs/nx-cloud/private/images/admin_hidden_login.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/admin_hidden_login.png",
"hash": "a2fbd4488b6b38f4c04101444b0a01cc33d27b33"
},
{
"file": "docs/nx-cloud/private/images/bitbucket_1.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/bitbucket_1.png",
"hash": "744c93850fe889fd0063041ea14920862efe1ef9"
},
{
"file": "docs/nx-cloud/private/images/bitbucket_2.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/bitbucket_2.png",
"hash": "febde873790a4701eea045bc921b2911ea4d9305"
},
{
"file": "docs/nx-cloud/private/images/bitbucket_3.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/bitbucket_3.png",
"hash": "c1628cebbd1cafa841a20679c36a431de119c507"
},
{
"file": "docs/nx-cloud/private/images/bitbucket_4.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/bitbucket_4.png",
"hash": "f6c7959083ef31dc93d0494df7b56fb1e506df8c"
},
{
"file": "docs/nx-cloud/private/images/bitbucket_5.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/bitbucket_5.png",
"hash": "ef04cc67127fb230aa6211a8bbb4ee01b28b8693"
},
{
"file": "docs/nx-cloud/private/images/bitbucket_6.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/bitbucket_6.png",
"hash": "5400b205c7eccfebaa571133cd57d3db8ca229a4"
},
{
"file": "docs/nx-cloud/private/images/github_auth_step_1.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/github_auth_step_1.png",
"hash": "aab0b76bf8ff0f310212e9b48c677f58b214fb50"
},
{
"file": "docs/nx-cloud/private/images/github_auth_step_2.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/github_auth_step_2.png",
"hash": "b692beb0af8fe62c9f24257da1d078c150168399"
},
{
"file": "docs/nx-cloud/private/images/github_auth_step_3.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/github_auth_step_3.png",
"hash": "ed380e172e65e22fef748dc49eadac5f1822227d"
},
{
"file": "docs/nx-cloud/private/images/github_auth_step_4.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/github_auth_step_4.png",
"hash": "a9e7efb684f638531859335d04015c1c2efb5f4c"
},
{
"file": "docs/nx-cloud/private/images/github_auth_step_5.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/github_auth_step_5.png",
"hash": "1bdb10946021e179e93f7d644f4eed1af472e98c"
},
{
"file": "docs/nx-cloud/private/images/github_auth_step_6.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/github_auth_step_6.png",
"hash": "b8e7912726397121efb1c7d7dbe4a351f722171f"
},
{
"file": "docs/nx-cloud/private/images/github_auth_step_7.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/github_auth_step_7.png",
"hash": "017f221fa731020e901da4903e02e330412bf184"
},
{
"file": "docs/nx-cloud/private/images/github-username.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/github-username.png",
"hash": "8075d6b794e44784525a5a70d3f545c8e117c604"
},
{
"file": "docs/nx-cloud/private/images/gitlab_step_1.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/gitlab_step_1.png",
"hash": "fef273c0dcc3ca6b26371cfcb85d3ba466bfb0e5"
},
{
"file": "docs/nx-cloud/private/images/gitlab_step_2.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/gitlab_step_2.png",
"hash": "a1726555864bfbc70b22673e67b17cc99e5bc96a"
},
{
"file": "docs/nx-cloud/private/images/gitlab_step_3.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/gitlab_step_3.png",
"hash": "308937ac1b03a1c290e7cf4093dcebe52f274ab4"
},
{
"file": "docs/nx-cloud/private/images/gitlab_step_4.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/gitlab_step_4.png",
"hash": "adb4473c0316f99103dfe5e6b20f331f913e7701"
},
{
"file": "docs/nx-cloud/private/images/gitlab_step_5.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/gitlab_step_5.png",
"hash": "5119326eec8e04bf93a0ec2e70970a9f6a1fbcbd"
},
{
"file": "docs/nx-cloud/private/images/gitlab-username.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/gitlab-username.png",
"hash": "b264bf3f64e066efaf92875a935ce02248b08bef"
},
{
"file": "docs/nx-cloud/private/images/invite_members.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/invite_members.png",
"hash": "2d38d859b8ff9f40f0dd8d3b943ccd139b5b37be"
},
{
"file": "docs/nx-cloud/private/images/main_user_login.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/main_user_login.png",
"hash": "7083d89f9687448db362542b850160bba0133eef"
},
{
"file": "docs/nx-cloud/private/images/private-cloud-github-integration-add-webhook.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/private-cloud-github-integration-add-webhook.png",
"hash": "3c8d90333938bd4c52bf831eb8cb37b888356073"
},
{
"file": "docs/nx-cloud/private/images/private-cloud-github-integration-generate-token.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/private-cloud-github-integration-generate-token.png",
"hash": "f330e3fc735f60d5e1b314339c2acd09ff7c0b7c"
},
{
"file": "docs/nx-cloud/private/images/saml/azure_1.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/saml/azure_1.png",
"hash": "dc48d010ef8a5d86099f10318cdc0fc5da43a25b"
},
{
"file": "docs/nx-cloud/private/images/saml/azure_10.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/saml/azure_10.png",
"hash": "9b683623751a05cc30efc85160197980c738288c"
},
{
"file": "docs/nx-cloud/private/images/saml/azure_11.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/saml/azure_11.png",
"hash": "eb90517fa62d143ff6c02d63b5495d0177dd43c8"
},
{
"file": "docs/nx-cloud/private/images/saml/azure_12.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/saml/azure_12.png",
"hash": "621fe56e81811675898269797e716304806a0f56"
},
{
"file": "docs/nx-cloud/private/images/saml/azure_13.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/saml/azure_13.png",
"hash": "ee60bbb6f0095382c1e2787de137194ecae026b8"
},
{
"file": "docs/nx-cloud/private/images/saml/azure_2.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/saml/azure_2.png",
"hash": "9b24d4ffe4d88480189f9e2456fc0337ed946436"
},
{
"file": "docs/nx-cloud/private/images/saml/azure_3.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/saml/azure_3.png",
"hash": "ea1527b4343e1020eb7a246394c8397693ff771d"
},
{
"file": "docs/nx-cloud/private/images/saml/azure_4.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/saml/azure_4.png",
"hash": "acd2537beeca2bea6c72099bd980404754a6c83b"
},
{
"file": "docs/nx-cloud/private/images/saml/azure_5.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/saml/azure_5.png",
"hash": "ac2568a83ae5c4f98d00a5229e45997cf6e9cab8"
},
{
"file": "docs/nx-cloud/private/images/saml/azure_6.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/saml/azure_6.png",
"hash": "137818b3c798cfc18149863a371ae22c2b4202e1"
},
{
"file": "docs/nx-cloud/private/images/saml/azure_7.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/saml/azure_7.png",
"hash": "2dd4b088f296fd12f27a91ad0e3fa6f29b9881e3"
},
{
"file": "docs/nx-cloud/private/images/saml/azure_8.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/saml/azure_8.png",
"hash": "026b01d3baced7835c07b88fd59415134f0398f1"
},
{
"file": "docs/nx-cloud/private/images/saml/azure_9.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/saml/azure_9.png",
"hash": "6128887c5e23b457094664d3cd31703fa8a3a18c"
},
{
"file": "docs/nx-cloud/private/images/saml/okta_1.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/saml/okta_1.png",
"hash": "cab14353a5025e89bc998e3950b056667dc0b631"
},
{
"file": "docs/nx-cloud/private/images/saml/okta_10.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/saml/okta_10.png",
"hash": "47f51224de579a00c85dbbd1466c268f21f83922"
},
{
"file": "docs/nx-cloud/private/images/saml/okta_2.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/saml/okta_2.png",
"hash": "ae6f2ee8e362317c693eecebdc989b5929c63832"
},
{
"file": "docs/nx-cloud/private/images/saml/okta_3.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/saml/okta_3.png",
"hash": "7a0446a2c35b2f87e8a41de9fd484577478514f1"
},
{
"file": "docs/nx-cloud/private/images/saml/okta_4.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/saml/okta_4.png",
"hash": "c2b4d622902ec71562014bd1eb4fadb296b3f921"
},
{
"file": "docs/nx-cloud/private/images/saml/okta_5.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/saml/okta_5.png",
"hash": "b50338567a5f0c34833d46c6bc9382fe497e454d"
},
{
"file": "docs/nx-cloud/private/images/saml/okta_6.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/saml/okta_6.png",
"hash": "65fa2b43bd0ebf19fe86978be61d0e24dd5ab336"
},
{
"file": "docs/nx-cloud/private/images/saml/okta_7.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/saml/okta_7.png",
"hash": "b1e122c2cb6fa7b0df0a7dab97a816fec7619b90"
},
{
"file": "docs/nx-cloud/private/images/saml/okta_8.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/saml/okta_8.png",
"hash": "361603f392c3bfe76572293360944cb557d450a4"
},
{
"file": "docs/nx-cloud/private/images/saml/okta_9.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/saml/okta_9.png",
"hash": "76cc172c20023b655cb35dbfb7ca3eb7a68fd3df"
},
{
"file": "docs/nx-cloud/private/images/webhook-trigger-events.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/webhook-trigger-events.png",
"hash": "f84c6c92dd42f4a16eb8fd796ec7203ac3d9d7d9"
},
{
"file": "docs/nx-cloud/private/images/webhook-trigger-pull-requests.png",
"file": "docs/nx-cloud/enterprise/on-premise/images/webhook-trigger-pull-requests.png",
"hash": "f917c7056c2b13fed490199a95f329d46fa3ae92"
},
{

View File

@ -294,15 +294,23 @@
- [Enable GitHub PR Integration](/ci/recipes/source-control-integration/github)
- [Enable Bitbucket Cloud PR Integration](/ci/recipes/source-control-integration/bitbucket-cloud)
- [Enable GitLab MR Integration](/ci/recipes/source-control-integration/gitlab)
- [On-Premise](/ci/recipes/on-premise)
- [Authenticate with a Single Admin](/ci/recipes/on-premise/auth-single-admin)
- [Authenticate with GitHub](/ci/recipes/on-premise/auth-github)
- [On-Prem VM Setup](/ci/recipes/on-premise/ami-setup)
- [Authenticate with GitLab](/ci/recipes/on-premise/auth-gitlab)
- [Authenticate with BitBucket](/ci/recipes/on-premise/auth-bitbucket)
- [Authenticate via SAML](/ci/recipes/on-premise/auth-saml)
- [Authenticate via SAML on Managed Version](/ci/recipes/on-premise/auth-saml-managed)
- [Advanced Configuration](/ci/recipes/on-premise/advanced-config)
- [Enterprise](/ci/recipes/enterprise)
- [On-Premise](/ci/recipes/enterprise/on-premise)
- [Authenticate with a Single Admin](/ci/recipes/enterprise/on-premise/auth-single-admin)
- [Authenticate with GitHub](/ci/recipes/enterprise/on-premise/auth-github)
- [On-Prem VM Setup](/ci/recipes/enterprise/on-premise/ami-setup)
- [Authenticate with GitLab](/ci/recipes/enterprise/on-premise/auth-gitlab)
- [Authenticate with BitBucket](/ci/recipes/enterprise/on-premise/auth-bitbucket)
- [Authenticate via SAML](/ci/recipes/enterprise/on-premise/auth-saml)
- [Authenticate via SAML on Managed Version](/ci/recipes/enterprise/on-premise/auth-saml-managed)
- [Advanced Configuration](/ci/recipes/enterprise/on-premise/advanced-config)
- [Custom Distributed Task Execution](/ci/recipes/enterprise/dte)
- [GitHub Actions Custom DTE](/ci/recipes/enterprise/dte/github-dte)
- [Circle CI Custom DTE](/ci/recipes/enterprise/dte/circle-ci-dte)
- [Azure Pipelines Custom DTE](/ci/recipes/enterprise/dte/azure-dte)
- [Bitbucket Pipelines Custom DTE](/ci/recipes/enterprise/dte/bitbucket-dte)
- [GitLab Custom DTE](/ci/recipes/enterprise/dte/gitlab-dte)
- [Jenkins Custom DTE](/ci/recipes/enterprise/dte/jenkins-dte)
- [Troubleshooting](/ci/recipes/troubleshooting)
- [CI Execution Failed](/ci/recipes/troubleshooting/ci-execution-failed)
- [Other](/ci/recipes/other)

View File

@ -36,31 +36,31 @@ const pages: Array<{ title: string; path: string }> = [
},
{
title: 'Auth (Basic)',
path: '/ci/recipes/on-premise/auth-single-admin',
path: '/ci/recipes/enterprise/on-premise/auth-single-admin',
},
{
title: 'GitHub Auth',
path: '/ci/recipes/on-premise/auth-github',
path: '/ci/recipes/enterprise/on-premise/auth-github',
},
{
title: 'GitLab Auth',
path: '/ci/recipes/on-premise/auth-gitlab',
path: '/ci/recipes/enterprise/on-premise/auth-gitlab',
},
{
title: 'Setting up a dedicated Nx Cloud VM',
path: '/ci/recipes/on-premise/ami-setup',
path: '/ci/recipes/enterprise/on-premise/ami-setup',
},
{
title: 'BitBucket Auth',
path: '/ci/recipes/on-premise/auth-bitbucket',
path: '/ci/recipes/enterprise/on-premise/auth-bitbucket',
},
{
title: 'SAML Auth',
path: '/ci/recipes/on-premise/auth-saml',
path: '/ci/recipes/enterprise/on-premise/auth-saml',
},
{
title: 'Advanced Configuration',
path: '/ci/recipes/on-premise/advanced-config',
path: '/ci/recipes/enterprise/on-premise/advanced-config',
},
{
title: 'Configuring the Cloud Runner / Nx CLI',

View File

@ -426,22 +426,41 @@ const nxCloudUrls = {
'/core-features/distribute-task-execution':
'/nx-cloud/features/distribute-task-execution',
'/concepts/affected': '/ci/features/affected',
'/nx-cloud/private-cloud': '/ci/recipes/on-premise',
'/nx-cloud/private-cloud': '/ci/recipes/enterprise/on-premise',
'/nx-cloud/private-cloud/get-started': '/ci/features/on-premise',
'/nx-cloud/private-cloud/auth-single-admin':
'/nx-cloud/recipes/on-premise/auth-single-admin',
'/nx-cloud/recipes/enterprise/on-premise/auth-single-admin',
'/nx-cloud/private-cloud/auth-github':
'/nx-cloud/recipes/on-premise/auth-github',
'/nx-cloud/private-cloud/ami-setup': '/ci/recipes/on-premise/ami-setup',
'/nx-cloud/recipes/enterprise/on-premise/auth-github',
'/nx-cloud/private-cloud/ami-setup':
'/ci/recipes/enterprise/on-premise/ami-setup',
'/nx-cloud/private-cloud/auth-gitlab':
'/nx-cloud/recipes/on-premise/auth-gitlab',
'/nx-cloud/recipes/enterprise/on-premise/auth-gitlab',
'/nx-cloud/private-cloud/auth-bitbucket':
'/nx-cloud/recipes/on-premise/auth-bitbucket',
'/nx-cloud/private-cloud/auth-saml': '/ci/recipes/on-premise/auth-saml',
'/nx-cloud/recipes/enterprise/on-premise/auth-bitbucket',
'/nx-cloud/private-cloud/auth-saml':
'/ci/recipes/enterprise/on-premise/auth-saml',
'/nx-cloud/private-cloud/auth-saml-managed':
'/nx-cloud/recipes/on-premise/auth-saml-managed',
'/nx-cloud/recipes/enterprise/on-premise/auth-saml-managed',
'/nx-cloud/private-cloud/advanced-config':
'/nx-cloud/recipes/on-premise/advanced-config',
'/nx-cloud/recipes/enterprise/on-premise/advanced-config',
'/ci/recipes/on-premise': '/ci/recipes/enterprise/on-premise',
'/ci/recipes/on-premise/auth-single-admin':
'/ci/recipes/enterprise/on-premise/auth-single-admin',
'/ci/recipes/on-premise/auth-github':
'/ci/recipes/enterprise/on-premise/auth-github',
'/ci/recipes/on-premise/ami-setup':
'/ci/recipes/enterprise/on-premise/ami-setup',
'/ci/recipes/on-premise/auth-gitlab':
'/ci/recipes/enterprise/on-premise/auth-gitlab',
'/ci/recipes/on-premise/auth-bitbucket':
'/ci/recipes/enterprise/on-premise/auth-bitbucket',
'/ci/recipes/on-premise/auth-saml':
'/ci/recipes/enterprise/on-premise/auth-saml',
'/ci/recipes/on-premise/auth-saml-managed':
'/ci/recipes/enterprise/on-premise/auth-saml-managed',
'/ci/recipes/on-premise/advanced-config':
'/ci/recipes/enterprise/on-premise/advanced-config',
'/concepts/dte': '/ci/concepts/parallelization-distribution',
'/nx-cloud/concepts/dte': '/ci/concepts/parallelization-distribution',
'/nx-cloud/intro/nx-cloud-workflows': '/ci/features/nx-cloud-workflows',