Skip to content

Add job settings command for build configuration settings #173

@tiulpin

Description

@tiulpin

Area: Configuration (parameters, projects)

Problem or use case

The CLI API has SetBuildTypeSetting but it is not exposed as a CLI command. Build engineers (Journey 5) need to make targeted edits to build configuration settings — checkout rules, build number format, artifact rules, execution timeout, etc. — without rewriting the entire configuration.

Currently the only options are raw API calls or editing Kotlin DSL:

# Current workaround
teamcity api '/app/rest/buildTypes/id:MyBuild/settings/buildNumberPattern' -X PUT --input <(echo '1.0.%build.counter%')

Proposed solution

teamcity job settings list <job-id>                               # List all settings
teamcity job settings get <job-id> <setting>                      # Get a setting value
teamcity job settings set <job-id> <setting> <value>              # Set a setting value

Examples

# View all settings
teamcity job settings list MyBuild

# Get specific setting
teamcity job settings get MyBuild buildNumberPattern
# → 1.0.%build.counter%

# Set build number format
teamcity job settings set MyBuild buildNumberPattern "2.0.%build.counter%"

# Set execution timeout
teamcity job settings set MyBuild executionTimeoutMin "30"

# Set artifact paths
teamcity job settings set MyBuild artifactRules "build/output/** => artifacts.zip"

Output:

$ teamcity job settings list MyBuild

SETTING                    VALUE
buildNumberPattern         1.0.%build.counter%
executionTimeoutMin        0
artifactRules              build/** => output
allowExternalStatus        false
checkoutMode               ON_AGENT
cleanBuild                 false
...

Flags

  • --json — machine-readable output (for list/get)

API

Uses existing method in api/interface.go:

SetBuildTypeSetting(buildTypeID, setting, value string) error

Needs additions:

GetBuildTypeSettings(buildTypeID string) (*SettingsList, error)
GetBuildTypeSetting(buildTypeID, setting string) (string, error)

REST endpoints:

GET /app/rest/buildTypes/id:<id>/settings
GET /app/rest/buildTypes/id:<id>/settings/<name>
PUT /app/rest/buildTypes/id:<id>/settings/<name>

Alternatives considered

  • Expose individual settings as dedicated flags on job view — too many settings, better to have a generic key-value interface like job param
  • Only support via Kotlin DSL — doesn't work for server-only configs or for quick targeted edits

Contribution

  • I'd be willing to submit a PR for this feature

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:configConfiguration management (parameters, DSL, cleanup)enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions