Services /
Create build service
Required permission
Project > Services > General > Create
Path parameters
projectId
string requiredID of the project
Request body
- {object}
name
string requiredThe name of the service.min length3max length54pattern^[a-zA-Z]((-|\s)?[a-zA-Z0-9]+((-|\s)[a-zA-Z0-9]+)*)?$description
stringA description of the service.max length200pattern^[a-zA-Z0-9.,?\s\\/'"()[\];`%^&*\-_:!]+$billing
{object} requireddeploymentPlan
stringThe ID of the deployment plan to use. (Deprecated - use buildPlan for build resources instead.).pattern^[A-Za-z0-9-]+$buildPlan
stringThe ID of the build plan to use.pattern^[A-Za-z0-9-]+$gpu
{object}enabled
booleanconfiguration
{object}gpuType
string requiredtimesliced
booleandisabledCI
booleanWhether CI (continuous integration) should be disabled.vcsData
{object} requiredprojectUrl
string requiredURL of the Git repo to build.pattern^(https:\/\/)?((www(\.[a-zA-Z0-9\-]{2,})+\.)?[a-zA-Z0-9\-]{2,})(\.([a-zA-Z0-9\-]{2,}))+(\/([a-zA-Z0-9\-._]{2,}))+?$projectType
string requiredThe VCS provider to use.one ofbitbucket, gitlab, github, self-hosted, azureselfHostedVcsId
stringIf projectType is self-hosted, the ID of the self-hosted vcs to use.accountLogin
stringBy default, if you have multiple version control accounts of the same provider linked, Northflank will pick a linked account that has access to the repository. If `accountLogin` is provided, Northflank will instead use your linked account with that login name.vcsLinkId
stringBy default, if you have multiple version control accounts of the same provider linked, Northflank will pick a linked account that has access to the repository. If `vcsLinkId` is provided, Northflank will instead use your linked account with that ID.min length24max length24buildSettings
(multiple options: oneOf) requiredBuild engine- {object}Build from a Dockerfile
storage
{object}ephemeralStorage
{object}storageSize
integerEphemeral storage per build in MBone of16384, 32768, 65536, 131072, 262144, 524288min16384max65536dockerfile
{object} requiredbuildEngine
stringBuild engine to use. Defaults to recommended build engine `kaniko`one ofkaniko, buildkitdockerFilePath
string requiredThe file path of the Dockerfile.pattern^\/([a-zA-Z0-9-._]+\/)*[a-zA-Z0-9-._]+$dockerWorkDir
string requiredThe working directory of the Dockerfile.pattern^\/([a-zA-Z0-9-._]+\/)*[a-zA-Z0-9-._]*$useCache
booleanShould intermediate image layers be cached?buildkit
{object}useInternalCache
booleaninternalCacheStorage
number- {object}Build from a Buildpack
storage
{object}ephemeralStorage
{object}storageSize
integerEphemeral storage per build in MBone of16384, 32768, 65536, 131072, 262144, 524288min16384max65536buildpack
{object} requiredbuilder
stringBuildpack stack to use. Defaults to recommended stack `HEROKU_22`.one ofHEROKU_22, HEROKU_22_CLASSIC, HEROKU_20, HEROKU_18, GOOGLE_V1, CNB_ALPINE, CNB_BIONIC, PAKETO_TINY, PAKETO_BASE, PAKETO_FULLbuildpackLocators
[array]Array of custom Buildpacks to use.- stringUrl or registry identifier of custom Buildpack.
buildContext
stringThe working directory to build in.pattern^\/([a-zA-Z0-9-._]+\/)*[a-zA-Z0-9-._]*$useCache
booleanShould build dependencies be cached?buildConfiguration
{object}prRestrictions
[array]An array of pull request build rules. Only supported for build services. Each commit belonging to a pull request on a branch that matches one of the provided build rules will be built automatically.- stringA pull request build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from pull requests from branches that start with `feature/`.pattern^[^?:@$~ [\]{}]*$
branchRestrictions
[array]An array of branch build rules. Only supported for build services. Each commit belonging to a branch that matches one of the provided build rules will be built automatically.- stringA branch build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from branches that start with `feature/`.pattern^[^?:@$~ [\]{}]*$
pathIgnoreRules
[array]An array of path ignore rules. A commit will only be built if a file has been changed that does not match any of the ignore rules. Path ignore rules follow `.gitignore` syntax.- stringA path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.max length260
isAllowList
booleanIf `true`, the functionality of `pathIgnoreRules` will be inverted. A commit will only be built if a file has been changed that matches one or more of the rules in `pathIgnoreRules`.ciIgnoreFlagsEnabled
booleanIf `true`, enables commit ignore flags. If a commit message contains one or more of the flags in `ciIgnoreFlags`, that commit will not be built.ciIgnoreFlags
[array]An array of commit ignore flags. If a commit message contains one or more of these flags, that commit will not be built. Defaults to `["[skip ci]", "[ci skip]", "[no ci]", "[skip nf]", "[nf skip]", "[northflank skip]", "[skip northflank]"]`- stringA commit ignore flag.max length72
dockerfileTarget
stringIf your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here.dockerCredentials
[array]- stringThe ID of the docker credentials to use.pattern^[A-Za-z0-9-]+$
includeGitFolder
booleanInclude .git folder inside the build contextfullGitClone
booleanInclude the entire git history as part of the .git folder. Only relevant if "includeGitFolder" is set.storage
{object}ephemeralStorage
{object}storageSize
integerEphemeral storage per build in MBone of16384, 32768, 65536, 131072, 262144, 524288min16384max65536buildArguments
{object}An object containing the build arguments to set for the servicebuildFiles
{object}Secret files as JSON object, encrypted at rest. File path must be absolute
OR
Response body
- {object}Response object.
data
{object} requiredResult data.name
string requiredThe name of the service.min length3max length54pattern^[a-zA-Z]((-|\s)?[a-zA-Z0-9]+((-|\s)[a-zA-Z0-9]+)*)?$description
stringA description of the service.max length200pattern^[a-zA-Z0-9.,?\s\\/'"()[\];`%^&*\-_:!]+$billing
{object} requireddeploymentPlan
stringThe ID of the deployment plan to use. (Deprecated - use buildPlan for build resources instead.).pattern^[A-Za-z0-9-]+$buildPlan
stringThe ID of the build plan to use.pattern^[A-Za-z0-9-]+$gpu
{object}enabled
booleanconfiguration
{object}gpuType
string requiredtimesliced
booleandisabledCI
booleanWhether CI (continuous integration) should be disabled.vcsData
{object} requiredprojectUrl
string requiredURL of the Git repo to build.pattern^(https:\/\/)?((www(\.[a-zA-Z0-9\-]{2,})+\.)?[a-zA-Z0-9\-]{2,})(\.([a-zA-Z0-9\-]{2,}))+(\/([a-zA-Z0-9\-._]{2,}))+?$projectType
string requiredThe VCS provider to use.one ofbitbucket, gitlab, github, self-hosted, azureselfHostedVcsId
stringIf projectType is self-hosted, the ID of the self-hosted vcs to use.accountLogin
stringBy default, if you have multiple version control accounts of the same provider linked, Northflank will pick a linked account that has access to the repository. If `accountLogin` is provided, Northflank will instead use your linked account with that login name.vcsLinkId
stringBy default, if you have multiple version control accounts of the same provider linked, Northflank will pick a linked account that has access to the repository. If `vcsLinkId` is provided, Northflank will instead use your linked account with that ID.min length24max length24buildSettings
(multiple options: oneOf) requiredBuild engine- {object}Build from a Dockerfile
storage
{object}ephemeralStorage
{object}storageSize
integerEphemeral storage per build in MBone of16384, 32768, 65536, 131072, 262144, 524288min16384max65536dockerfile
{object} requiredbuildEngine
stringBuild engine to use. Defaults to recommended build engine `kaniko`one ofkaniko, buildkitdockerFilePath
string requiredThe file path of the Dockerfile.pattern^\/([a-zA-Z0-9-._]+\/)*[a-zA-Z0-9-._]+$dockerWorkDir
string requiredThe working directory of the Dockerfile.pattern^\/([a-zA-Z0-9-._]+\/)*[a-zA-Z0-9-._]*$useCache
booleanShould intermediate image layers be cached?buildkit
{object}useInternalCache
booleaninternalCacheStorage
number- {object}Build from a Buildpack
storage
{object}ephemeralStorage
{object}storageSize
integerEphemeral storage per build in MBone of16384, 32768, 65536, 131072, 262144, 524288min16384max65536buildpack
{object} requiredbuilder
stringBuildpack stack to use. Defaults to recommended stack `HEROKU_22`.one ofHEROKU_22, HEROKU_22_CLASSIC, HEROKU_20, HEROKU_18, GOOGLE_V1, CNB_ALPINE, CNB_BIONIC, PAKETO_TINY, PAKETO_BASE, PAKETO_FULLbuildpackLocators
[array]Array of custom Buildpacks to use.- stringUrl or registry identifier of custom Buildpack.
buildContext
stringThe working directory to build in.pattern^\/([a-zA-Z0-9-._]+\/)*[a-zA-Z0-9-._]*$useCache
booleanShould build dependencies be cached?buildConfiguration
{object}prRestrictions
[array]An array of pull request build rules. Only supported for build services. Each commit belonging to a pull request on a branch that matches one of the provided build rules will be built automatically.- stringA pull request build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from pull requests from branches that start with `feature/`.pattern^[^?:@$~ [\]{}]*$
branchRestrictions
[array]An array of branch build rules. Only supported for build services. Each commit belonging to a branch that matches one of the provided build rules will be built automatically.- stringA branch build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from branches that start with `feature/`.pattern^[^?:@$~ [\]{}]*$
pathIgnoreRules
[array]An array of path ignore rules. A commit will only be built if a file has been changed that does not match any of the ignore rules. Path ignore rules follow `.gitignore` syntax.- stringA path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.max length260
isAllowList
booleanIf `true`, the functionality of `pathIgnoreRules` will be inverted. A commit will only be built if a file has been changed that matches one or more of the rules in `pathIgnoreRules`.ciIgnoreFlagsEnabled
booleanIf `true`, enables commit ignore flags. If a commit message contains one or more of the flags in `ciIgnoreFlags`, that commit will not be built.ciIgnoreFlags
[array]An array of commit ignore flags. If a commit message contains one or more of these flags, that commit will not be built. Defaults to `["[skip ci]", "[ci skip]", "[no ci]", "[skip nf]", "[nf skip]", "[northflank skip]", "[skip northflank]"]`- stringA commit ignore flag.max length72
dockerfileTarget
stringIf your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here.dockerCredentials
[array]- stringThe ID of the docker credentials to use.pattern^[A-Za-z0-9-]+$
includeGitFolder
booleanInclude .git folder inside the build contextfullGitClone
booleanInclude the entire git history as part of the .git folder. Only relevant if "includeGitFolder" is set.storage
{object}ephemeralStorage
{object}storageSize
integerEphemeral storage per build in MBone of16384, 32768, 65536, 131072, 262144, 524288min16384max65536buildArguments
{object}An object containing the build arguments to set for the servicebuildFiles
{object}Secret files as JSON object, encrypted at rest. File path must be absoluteserviceType
string requiredType of the service (combined, build or deployment)one ofbuildid
string requiredIdentifier for the serviceappId
string requiredFull identifier used for service deploymentcluster
{object} requiredCluster informationid
string requiredThe id of the cluster associated with this project.name
string requiredThe name of the cluster associated with this project.namespace
stringNamespace this resource is located within on the cluster.loadBalancers
[array]Load balancer DNS for the cluster.- string
createdAt
stringtime of creationupdatedAt
stringtime of updatestatus
{object} requiredDetails about the current service status.build
{object}Details about the status of the most recent build.status
string requiredThe current status of the build.one ofQUEUED, PENDING, STARTING, CLONING, BUILDING, UPLOADING, ABORTED, FAILURE, SUBMISSION_FAILURE, SUCCESS, CRASHEDlastTransitionTime
stringThe timestamp of when the build reached this status.
OR
POST /v1/projects/{projectId}/services/build
Example request
curl --header "Content-Type: application/json" \
--header "Authorization: Bearer NORTHFLANK_API_TOKEN" \
--request POST \
--data '{"name":"Example Service","description":"A service description","tags":["my-tag"],"billing":{"deploymentPlan":"nf-compute-20","buildPlan":"nf-compute-200-8"},"vcsData":{"projectUrl":"https://github.com/northflank/gatsby-with-northflank","projectType":"github","accountLogin":"github-user"},"buildSettings":{"storage":{"ephemeralStorage":{"storageSize":16384}},"dockerfile":{"buildEngine":"kaniko","dockerFilePath":"/Dockerfile","dockerWorkDir":"/","useCache":false}},"buildConfiguration":{"prRestrictions":["feature/*"],"branchRestrictions":["feature/*"],"pathIgnoreRules":["README.md"],"isAllowList":false,"ciIgnoreFlags":["[skip ci]"],"dockerCredentials":["example-docker-credential"],"storage":{"ephemeralStorage":{"storageSize":16384}}},"buildArguments":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"},"buildFiles":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}' \
https://api.northflank.com/v1/projects/{projectId}/services/build
Example response
200 OK
JSON
{
"data": {
"name": "Example Service",
"description": "A service description",
"tags": [
"my-tag"
],
"billing": {
"deploymentPlan": "nf-compute-20",
"buildPlan": "nf-compute-200-8"
},
"vcsData": {
"projectUrl": "https://github.com/northflank/gatsby-with-northflank",
"projectType": "github",
"accountLogin": "github-user"
},
"buildSettings": {
"storage": {
"ephemeralStorage": {
"storageSize": 16384
}
},
"dockerfile": {
"buildEngine": "kaniko",
"dockerFilePath": "/Dockerfile",
"dockerWorkDir": "/",
"useCache": false
}
},
"buildConfiguration": {
"prRestrictions": [
"feature/*"
],
"branchRestrictions": [
"feature/*"
],
"pathIgnoreRules": [
"README.md"
],
"isAllowList": false,
"ciIgnoreFlags": [
"[skip ci]"
],
"dockerCredentials": [
"example-docker-credential"
],
"storage": {
"ephemeralStorage": {
"storageSize": 16384
}
}
},
"buildArguments": {
"ARGUMENT_1": "abcdef",
"ARGUMENT_2": "12345"
},
"buildFiles": {
"/dir/fileName": {
"data": "VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=",
"encoding": "utf-8"
}
},
"serviceType": "build",
"id": "example-service",
"appId": "/example-user/default-project/example-service",
"cluster": {
"id": "nf-europe-west",
"name": "nf-europe-west",
"namespace": "ns-8zy2mcjh9zn2",
"loadBalancers": [
"lb.659200800000000000000000.northflank.com"
]
},
"status": {
"build": {
"status": "SUCCESS",
"lastTransitionTime": "2021-11-29T11:47:16.624Z"
}
}
}
}
Example response
409 Conflict