diff --git a/docs/img/teamcity-scan-logs.png b/docs/img/teamcity-scan-logs.png new file mode 100644 index 00000000000..acfe40a2c19 Binary files /dev/null and b/docs/img/teamcity-scan-logs.png differ diff --git a/docs/img/teamcity-success-status.png b/docs/img/teamcity-success-status.png new file mode 100644 index 00000000000..0103971f538 Binary files /dev/null and b/docs/img/teamcity-success-status.png differ diff --git a/docs/integrations.md b/docs/integrations.md index c407ceb9807..01e752497c2 100644 --- a/docs/integrations.md +++ b/docs/integrations.md @@ -11,6 +11,8 @@ Integrate KICS with: - [Github Actions](integrations_ghactions.md) - [GitLab CI](integrations_gitlabci.md) - [Jenkins](integrations_jenkins.md) +- [TeamCity](integrations_teamcity.md) +- [Travis](integrations_travisci.md) - More soon... The pipelines examples can be found in our [GitHub Repository](https://github.com/Checkmarx/kics/tree/master/examples) diff --git a/docs/integrations_teamcity.md b/docs/integrations_teamcity.md new file mode 100644 index 00000000000..91871321202 --- /dev/null +++ b/docs/integrations_teamcity.md @@ -0,0 +1,42 @@ +# Running KICS in TeamCity + +You can integrate KICS into TeamCity pipelines easily by [Kotlin DSL](https://www.jetbrains.com/help/teamcity/2021.2/kotlin-dsl.html) and KICS docker image. + +This provide you the ability to run KICS scans as a stage of your pipeline. + +Just make sure that the [TeamCity agent](https://www.jetbrains.com/help/teamcity/2021.2/setting-up-and-running-additional-build-agents.html) has Docker configured to run containers. + +Checkout [Getting Started with Kotlin DSL](https://www.jetbrains.com/help/teamcity/2021.2/kotlin-dsl.html#Getting+Started+with+Kotlin+DSL) and modify you `.teamcity/settings.kts` as the example: + +```kotlin +import jetbrains.buildServer.configs.kotlin.v2019_2.* +import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.script +version = "2021.1" + +project { + description = "KICS TeamCity integration test" + buildType(Build) +} + +object Build: BuildType({ + name = "KICS TeamCity integration test" + vcs { + root(DslContext.settingsRoot) + } + + steps { + script { + scriptContent = """ + #!/bin/bash + docker run -v ${'$'}PWD:/path checkmarx/kics:latest scan -p /path -o /path --no-progress --ignore-on-exit results + """.trimIndent() + } + } +}) +``` + +With [versioned settings](https://www.jetbrains.com/help/teamcity/2021.2/storing-project-settings-in-version-control.html#SynchronizingSettingswithVCS) enabled, after pushing the changes to the repository you'll be able to see the build progress, logs and success status. + + + + diff --git a/examples/teamcity/settings.kts b/examples/teamcity/settings.kts new file mode 100644 index 00000000000..312d8149575 --- /dev/null +++ b/examples/teamcity/settings.kts @@ -0,0 +1,26 @@ +import jetbrains.buildServer.configs.kotlin.v2019_2.* +import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.script +version = "2021.1" + +project { + description = "KICS TeamCity integration test" + buildType(Build) +} + +object Build: BuildType({ + name = "KICS TeamCity integration test" + vcs { + root(DslContext.settingsRoot) + } + + steps { + script { + scriptContent = """ + #!/bin/bash + docker run -v ${'$'}PWD:/path checkmarx/kics:latest scan -p /path -o /path --no-progress --ignore-on-exit results + """.trimIndent() + } + } +}) + + diff --git a/mkdocs.yml b/mkdocs.yml index 9c7d2dc6b64..6458ce72bef 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -63,6 +63,7 @@ nav: - Github Actions: integrations_ghactions.md - Gitlab CI: integrations_gitlabci.md - Jenkins: integrations_jenkins.md + - TeamCity: integrations_teamcity.md - Travis CI: integrations_travisci.md - AWS CDK: cdk.md - Badge: BADGE.md