- Conditionally Execute A TeamCity Build Step
- How To Make Jenkins Run A Python Script That Executes A Build?
- Www.youtube.com › WatchNew In TeamCity 2020.2: Python Build Runner - YouTube
As Python becomes the second most popular programming language in the world, you want your continuous integration system to support all of its modern feature. This package integrates Python with the TeamCity Continuous Integration (CI) server. It allows sending 'service messages' from Python code. Additionally, it provides integration with the following testing frameworks and tools: See examples/simple.py for a full example. If you are used to running.
Jul 08, 2021 Python. The Python build runner automatically detects Python on agents and allows running Python scripts on Windows, Linux, and macOS. Since TeamCity 2020.2, this bundled runner replaces the obsolete Python Runner plugin. The new runner offers support for virtual environments, Docker, Kotlin DSL, and provides extra features like full test coverage.
Skip to end of metadataGo to start of metadata- Features
- Docker Support Build Feature
- Docker Connection for a Project
- Docker Runner
- Docker Wrapper
TeamCity comes with Docker Support, implemented as a bundled plugin.
Requirements
IconThe integration requires Docker installed on the build agents. Docker Compose also needs to be installed to use the Docker Compose build runner.
Supported Environments
TeamCity-Docker support can run on Mac, Linux, and Windows build agents. It uses the 'docker
' executable on the build agent machine, so it should be runnable by the build agent user.
- On Linux, the integration will run if the installed Docker is detected.
- On Windows, the integration works for Linux and Windows container modes.
- On macOS, the official Docker support for Mac should be installed for the user running the build agent.
Parameters Reported by Agent
During the build, the build agent reports the following parameters:
Parameter | Description |
---|---|
docker.version | The Docker CLI version |
dockerCompose.version | The Docker Compose file version if the Docker Compose build step is used |
docker.server.version | The Docker Engine version |
docker.server.osType | The Docker Engine OS platform, can have the linux or windows value |
If you are using the Command Line Build step (and not the TeamCity-provided docker steps), these parameters can be used as agent requirements to ensure your build is run only on the agents with Docker installed.
Features
TeamСity-Docker integration provides the following features which facilitate working with Docker under TeamCity:
Docker Support Build Feature
Adding this build feature will enable docker events monitoring: such operations as docker pull, docker run will be detected. The build feature adds the Docker Info tab to the build results page providing information on Docker-related operations. It also provides the following options:
- the ability to clean-up the images
- automatic login to an authenticated registry before the build and logout of it after the build
These options require a configured connection to a docker registry:
Clean-up of images
If you have a build configuration which publishes images, you need to remove them at some point. You can select the corresponding option and instruct TeamCity to remove the images published by a certain build when the build itself is cleaned up. It works as follows: when an image is published, TeamCity stores the information about the registry of the images published by the build. When the server clean-up is run and it deletes the build, all the configured connections are searched for the address of this registry and the images published by the build are cleaned up using the credentials specified in the connection found.
Automatic Login to/Logout of Docker Registry
If you need to log in to a registry requiring authentication before a build, select the corresponding option and a connection to Docker configured in the project settings. Automatic logout will be performed after the build finishes.
Docker Connection for a Project
The Project Settings | Connections page allows you to configure a connection to docker.io (default) or a private Docker registry. More than one connection can be added to the project. The connection will be available in all the subprojects and build configurations of the current project.
Registry Address Format
By default, https://docker.io is used.
To connect to a registry, use the following format: [http(s)://]hostname:port.
If the protocol is not specified, the connection over https
is used by default.
Connecting to Private Cloud Registry
- TeamCity supports the Azure container registry storing Docker images; you can authenticate using Service principal (the principal ID and password are used as connection credentials) or Admin account.
- Since TeamCity 2018.1, Amazon Elastic Container Registry (AWS ECR) is supported: specify the AWS region and your AWS Security Credentials when configuring the connection.
Connecting to Insecure Registry
To connect to an insecure registry:
- Configure all TeamCity agents where Docker is installed to work with insecure repositories as stated Docker documentation. This is sufficient to allow the connection to the private registry over http.
- To connect to an insecure registry over https with a self-signed certificate, in addition to the step above, import the self-signed certificate to the JVM of the TeamCity server as described here. You can consult the Docker documentation on using self-signed certificates.
Conditionally Execute A TeamCity Build Step
Docker Runner
The Docker runner supports the build
, push
, tag
Docker commands.
When creating TeamCity projects/ build configurations from a repository URL, the runner is offered as build step during auto-detection, provided a Dockerfile is present in the VCS repository.
Setting | Description | |
---|---|---|
Docker Command | Select the docker command. Depending on the selected command, the settings below will vary. | |
Docker Command Parameters | ||
build | Dockerfile source | Depending on the selected source, the settings below will vary. The available options include File, a URL or File content. |
Path to file | Available if File is selected as the source. Specify the path to the Docker file. The path should be relative to the checkout directory. | |
Context folder | Available if File is selected as the source. Specify the context for the docker build. If blank, the enclosing folder for Dockerfile will be used. | |
URL to file | Available if URL is selected as the source. The URL can refer to three kinds of resources: Git repositories, pre-packaged tarball contexts, and plain text files. See Docker documentation for details. | |
File Content: | Available if the file content is selected as the source. You can enter the content of the Dockerfile into the field. | |
Image platform | Select <Any> (default), Linux or Windows. | |
Image name:tag | Provide a newline-separated list of image name:tag(s) | |
Additional arguments for 'build' command | Supply additional arguments to the docker build command. See Docker documentation for details. | |
push | Remove image from agent after push | If selected, TeamCity will remove the image with docker rmi at the end of the step |
Image name:tag | Provide a newline-separated list of image name:tag(s) | |
other | Command name | Docker sub-command, like push or tag . For run, use Docker Wrapper |
Working directory | ||
Additional arguments for the command | Additional arguments that will be passed to the docker command. |
Docker Compose Runner
The runner allows starting Docker Compose build services and shutting down those services at the end of the build.
The Docker Compose runner supports one or several Docker Compose YAML file(s) with a description of the services to be used during the build. The path to the docker-compose.yml file(s) should be relative to the checkout directory. When specifying several files, separate them with a space.
The executed commands are
If the checkbox pull image explicitly is enabled, docker-compose pull
will be run before the docker-compose up
command.
When using Docker Compose with images which support HEALTHCHECK, TeamCity will wait for the healthy
status of all containers, which support this parameter.
If the start of Docker Compose was successful, the TeamCity agent will register the TEAMCITY_DOCKER_NETWORK environment variable containing the name of the Docker Compose default network. This network will be passed transparently to the Docker Wrapper when used in some build runners.
Docker Wrapper
TeamCity provides the Docker Wrapper extension for Command Line,Maven, Ant, and Gradle runners. Each of the supported runners has the dedicated Docker settings section.
Docker Settings
In this section, you can specify a Docker image which will be used to run the build step. Once an image is specified, all the following options are available:
Technically, the command of the build runner is wrapped in a shell script, and this script is executed inside a Docker container with the docker run
command. All the details about the started process, text of the script etc. are written into the build log (the Verbose mode enables viewing them).
The checkout directory and most build agent directories are mapped inside the Docker process, and TeamCity passes most environment variables from the build agent into the docker process.
After the build step with the Docker wrapper, a build agent will run the chown
command to restore access of the buildAgent user to the checkout directory. This mitigates a possible problem when the files from a Docker container are created with the 'root' ownership and cannot be removed by the build agent later.
If the process environment contains theTEAMCITY_DOCKER_NETWORK
variable, this network is passed to the started docker run
command with --network
switch.
It is possible to provide extra parameters for the docker run
command, for instance, provide an additional volume mapping.
Docker Disk Space Cleaner
Docker Disk Space Cleaner is an extension to the Free Disk Space build feature ensuring a certain amount of disk space for a build.
Since 2018.2 TeamCity performs regular clean-up of Docker images, related to TeamCity:
- The TeamCity agent tracks docker images tagged or pulled during builds (the list of images is stored in the
buildAgent/system/docker-used-images.dat
file). - During cleanup / freeing disk space, TeamCity agent tries to remove these images if they were not used within 3 days, 1 day, 0 on subsequent attempts to free disk space.
Besides that, TeamCity cleans local Docker Caches using the command:
- Since TeamCity 2018.1.2:
docker system prune --volumes
Works for Docker v.17.06.1 or later. - Before TeamCity 2018.1.2:
docker system prune -a
Service Message to Report Pushed Image
If TeamCity (for some reason) cannot determine that an image was pushed, a user can send a special Service Message to report this information to the TeamCity server:
For example:
Read this post in other languages:
Русский
TeamCity 2020.2 introduces privacy-friendly login using external services, features the all-new Python build runner, and integrates with Bitbucket Cloud and JetBrains Space. It allows you to execute builds in external services without occupying build agents, and unlocks project editing on secondary servers in multi-node setups. Administrators can now customize the server clean-up schedule and view disk space usage in external storage locations. And you’re going to love the updates to the new Sakura UI.
Say hello with your GitHub, GitLab, or Bitbucket account
We want continuous integration to be a regular part of every developer’s life. To support more workflows and make the experience with TeamCity smoother, we now support authentication using external services: GitHub, GitLab, and Bitbucket.
TeamCity 2020.2 will instantly match external OAuth accounts with existing TeamCity users, and let them work with their projects without having to enter a password. It integrates with user directory features of the supported services, such as GitHub organizations and GitLab groups, and can automatically create new profiles when new members join your team.
In addition to cloud services, TeamCity 2020.2 supports on-premise installations of GitHub (GitHub Enterprise) and GitLab (GitLab self-hosted).
Bitbucket Cloud: now with pull requests
Version 2020.2 extends the integration with Bitbucket Cloud by adding support for pull requests. Now you can set up TeamCity to automatically pick up pull requests made in your Bitbucket Cloud repository and run the respective builds. Together with the Commit Status Publisher and the Automatic Merge features, this creates an amazing combination, making it possible to work with your favorite tools most efficiently.
Speak Python? Build Python!
As Python becomes the second most popular programming language in the world, you want your continuous integration system to support all of its modern features and development practices. This is why we created the all-new Python build runner, which enables you to use the power and intelligence of TeamCity in your Python projects. The new build runner works with all operating systems, supports virtual environments, and integrates with all common testing frameworks and code inspection tools for Python.
The results of your Python builds and tests are reported in the TeamCity UI, in the same way as with all other TeamCity build runners. You can track changes, analyze failures, assign investigations, and use all the other TeamCity features that you know and love.
A message to Space…
JetBrains Space has been added to the list of services supported by the Commit Status Publisher feature. Until now, to check that your changes didn’t break anything, you had to open up TeamCity and search for your build results there. With the new integration, Commit Status Publisher will automatically send the status of your builds to Space, letting you see it on the Commits page of your project.
Get more out of your agents with agentless build steps
Do your CI/CD pipelines rely on external services, tying up your build agents as they wait for external jobs to finish? Or even worse, do they run in AWS or another cloud, and not only waste your time but also burn your money? Then you’re going to love agentless build steps in TeamCity 2020.2. Your builds can now execute their final steps in agentless mode, releasing the build agents and allowing them to run other queued tasks. TeamCity displays agentless build steps as standard builds and will enable you to track their status, browse their logs, and view their history.
Many servers. One experience.
Our large customers are building more than ever with TeamCity, so we continue to push our multi-server capabilities forward. In version 2020.2, secondary servers make a big step towards primary servers, allowing you to edit project-level settings. This enables your team to set up new builds while the primary server is under maintenance.
Pro features for pro administrators
External storage in Disk Usage monitor
An increasing number of our users prefer storing artifacts in the cloud – for example, in Amazon S3. Starting with 2020.2, TeamCity will show you the disk space occupied by builds not only on your local drives but also in remote locations.
Customizable clean-up schedule
The clean-up feature just got more powerful. Now you can customize its schedule with the use of cron-like expressions to have the server cleanup start at regular intervals – for example, on weekends, or twice a day.
Sakura UI: the perfect combination of features and design
Our incredible UI team has been working hard to bring more features and support more use cases in the experimental “Sakura” UI. TeamCity 2020.2 comes with many great things designed not only for end-users but also for plugin developers.
Jan 08, 2019 Upgrade from previous versions to OS X 10.11 (El Capitan) From the Apple menu, select App Store. When the App Store opens, search for and download El Capitan. If you don't already have an Apple ID, you'll need to. Once the download is complete, the installer should automatically open.
Build Dependencies
One of the essential parts of working with CI/CD is the ability to understand the big picture of how everything is built, and TeamCity 2020.2 brings two significant improvements in this area to the Build Dependencies page:
- The Timeline view now shows not only started and finished builds but also queued builds.
- The Build Chain view now shows the “right” part of the chain: all builds that depend on the current one.
Test history page
How To Make Jenkins Run A Python Script That Executes A Build?
TeamCity 2020.2 adds one more missing piece to the Sakura UI: the new Test History page. The new page gives you detailed information on your tests and allows you to analyze trends, see investigation history, and more.
Build log search
Dumper free. We have implemented one of the most popular requests from our users: the build log search. It is now much easier to browse the build log, debug your setup, and understand what happens during your builds.
Sakura UI plugin development framework
TeamCity has always provided extension points and allowed developers to build on its functionality. Starting with version 2020.2, we offer a new way to write and integrate plugins for the user interface. To learn more, check out this talk from TeamCity Technology Day:
Build Queue
The new Build Queue page is stylish, works very fast, and makes it easy to find everything you need. It lets you quickly see the changes for every queued build, understand what triggered the build and where it will run, get the estimated time when it will start, and view all the other build information in a neat and convenient UI. You can select any builds that you don’t need and remove them from the queue, or alternatively, if there are builds that need to complete sooner, you can move them to the top of the list.
Www.youtube.com › WatchNew In TeamCity 2020.2: Python Build Runner - YouTube
These are just some of the ways we’re strengthening TeamCity. For the full list of changes in version 2020.2, please see the TeamCity documentation.
Comments are closed.