anchor.diff:  [source,groovy]
   [subs="attributes"]
   ----
  -    publishPlugin {
  -        username = 'ExampleUsername'
  -        password = 'ExamplePassword'
  -    }
  -
       teamcity {
           // Use TeamCity {example-api-version} API
           version = '{example-api-version}'
  
positive.code: ### TeamCity Server Plugin Tasks
  
  * `serverPlugin` : Builds and packages a TeamCity plugin.
  * `publishPlugin` : Publishes plugin to {uri-jetbrains-plugin-portal}[plugins portal]
  * `generateDescriptor` : If the descriptor is defined in the build script this task is enabled and will
  output the descriptor to the build directory.
  * `processDescriptor` : If the descriptor is defined as an external file this task is enabled and will copy
  
negative.code:         }
      }
  ----
  
  ### Publishing a plugin
  
  The `publishPlugin` task is used to upload the plugin archive to the
  {uri-jetbrains-plugin-portal}[JetBrains TeamCity Plugin Repository]. Before publishing a plugin you will need
  to create a JetBrains Account, follow the 'Sign In' link at the top of the plugin repository page.
  
  The `publishPlugin` task requires a username and password to publish a plugin to the repository as shown in
  the following example.
  
  [source,groovy]
  [subs="attributes"]
  .build.gradle
  ----
  publishPlugin {
      username = findProperty('jetbrains.username')
      password = findProperty('jetbrains.password')
  }
  ----
  
  The following example uses the Kotlin DSL.
  
  [source,groovy]
  .build.gradle.kts
  ----
  tasks.withType<PublishTask> {
      username = findProperty("jetbrains.username")
      password = findProperty("jetbrains.password")
  }
  ----
  
  It is recommended that the credentials for the JetBrains Plugin Repository are stored in `$HOME/.gradle/gradle.properties`.
  
  ### TeamCity Environments Configuration
  
  