Teamscale
Author: w | 2025-04-24
To try out Teamscale, the first step is of course to set up a Teamscale server. You can host Teamscale on-premise, or you can use the Teamscale cloud . Every Teamscale license Changed permissions when running Teamscale in Docker. As of Teamscale 6.3, Teamscale is no longer executed as the root user in the Docker container, but as user teamscale (UID=1000).
Teamscale CLI for Developers (teamscale-dev)
With the configuration ID you have chosen in the previous step and the connection details with your Teamscale URL and technical user and access token. If you are using an application server like WebSphere, JBoss, Wildfly etc. please have look at the specific instructions in the agent's documentation.You'll need to set this environment variable in your Docker orchestration tooling (e.g. Docker Compose).Now you can restart your container and the agent will record coverage and upload it to Teamscale in regular intervals. You should also see the running profiler under Project Configuration > Coverage Profilers.Debugging Setup ProblemsThe agent by default logs to /tmp/teamscale-java-profiler--/logs/ inside your Docker container. If the setup does not work as expected, please have a look at the problems reported in this log file, e.g., by running:bashdocker exec -it YOUR_CONTAINER_ID sh -c "cat /tmp/teamscale-java-profiler-*/logs/*"You can also make the profiler log debug information to stdout by appending ,debug=true to the JAVA_TOOL_OPTIONS.Example: Docker Compose yaml# Add a volume that will hold the profiler files.# It can be shared between profiler's and your app's container.volumes: teamscale-java-profiler: services: # On start, the container will copy the profiler files to /transfer, # which is mounted to the previously defined volume, and exit. teamscale-java-profiler: image: cqse/teamscale-jacoco-agent:v34.0.1 volumes: - teamscale-java-profiler:/transfer:rw yourapp: image: your/image # Wait for the agent container to have copied the agent jar depends_on: teamscale-java-profiler: condition: service_completed_successfully # Use the profiler's volume. volumes: - teamscale-java-profiler:/teamscale-java-profiler:ro # Enable the profiler. # Replace with your Teamscale instance's URL, username and access token # as well as the profiler configuration ID from the previous step. environment: JAVA_TOOL_OPTIONS: "-javaagent:/teamscale-java-profiler/teamscale-jacoco-agent.jar=teamscale-server-url=. To try out Teamscale, the first step is of course to set up a Teamscale server. You can host Teamscale on-premise, or you can use the Teamscale cloud . Every Teamscale license Changed permissions when running Teamscale in Docker. As of Teamscale 6.3, Teamscale is no longer executed as the root user in the Docker container, but as user teamscale (UID=1000). Changed Teamscale systemd service type (since Teamscale 7.7) As of Teamscale 7.7, the Teamscale systemd service type must be updated to type=simple, instead of the previous type=forking. Improved administration experience (since Teamscale 7.7) Teamscale 7.7 features several changes that improve the default administration experience. Administration of a Teamscale Installation . This article gives a detailed reference of the configuration options of a Teamscale installation. It assumes that the basic installation of Teamscale is completed and Teamscale can be accessed via the web interface. Connecting to Teamscale . After installing the plug-in, you can configure a Teamscale server via the following steps: Open the Eclipse preferences dialog, navigate to the Teamscale settings (Window Preferences Teamscale) Changelog for Teamscale 7.5 Urgent Security Notice: Teamscale affected by log4shell (CVE- ) Teamscale is affected by the widely discussed log4shell (CVE- ) How To Install Teamscale as a Linux Service You might want to install Teamscale as a Linux service to allow for more consistent management with other services on the same machine and to ensure that Teamscale is automatically started after a reboot. Additionally, this allows Teamscale to automatically restart in case of a crash.NoteBefore installing Teamscale as a service, ensure that the basic configuration was completed and that Teamscale can be started manually.The required files are located in the folder linux in the Teamscale installation directory. You can choose between a systemd-based installation or an init.d-based one.systemdInstalling Teamscale as a systemd ServiceUninstalling the Teamscale systemd Serviceinit.dInstalling Teamscale as a init.d ServiceUninstalling the Teamscale init.d Servicesystemd Most modern Linux distributions support systemd. To see if your system supports, check for the existence of the directory /lib/systemd or the command systemctl. (This procedure was tested on Ubuntu 20.04.)Installing Teamscale as a systemd Service Modify the file linux/systemd/teamscale.service according to the TODO comments inside.Copy the file to /etc/systemd/system.Reload the systemd daemon to register the new service by running:bashsudo systemctl daemon-reloadEnable the service to start at boot time by running the following command:bashsudo systemctl enable teamscale.serviceTo start the service manually use the following command:bashsudo systemctl start teamscale.serviceUninstalling the Teamscale systemd Service To uninstall the systemd service, run the following commands:bashsudo systemctl stop teamscale.servicesudo systemctl disable teamscale.serviceremove the file you copied to /etc/systemd/system/teamscale.serviceinit.d The following guide for init.d is deprecated (this procedure was tested with Ubuntu 12.04). If possible use systemd or docker instead.Installing Teamscale as a init.d Service Edit the file teamscale.init:Enter or edit the correct path to the Teamscale root directory. For example: TEAMSCALE_HOME=/opt/teamscaleEnter or edit the correct path to the Java installation directory. For example:bashexport JAVA_HOME=/opt/jdkOptionally uncomment and fill the EXTRA_START_ARGS line to run the services as a different user.Install the serviceComments
With the configuration ID you have chosen in the previous step and the connection details with your Teamscale URL and technical user and access token. If you are using an application server like WebSphere, JBoss, Wildfly etc. please have look at the specific instructions in the agent's documentation.You'll need to set this environment variable in your Docker orchestration tooling (e.g. Docker Compose).Now you can restart your container and the agent will record coverage and upload it to Teamscale in regular intervals. You should also see the running profiler under Project Configuration > Coverage Profilers.Debugging Setup ProblemsThe agent by default logs to /tmp/teamscale-java-profiler--/logs/ inside your Docker container. If the setup does not work as expected, please have a look at the problems reported in this log file, e.g., by running:bashdocker exec -it YOUR_CONTAINER_ID sh -c "cat /tmp/teamscale-java-profiler-*/logs/*"You can also make the profiler log debug information to stdout by appending ,debug=true to the JAVA_TOOL_OPTIONS.Example: Docker Compose yaml# Add a volume that will hold the profiler files.# It can be shared between profiler's and your app's container.volumes: teamscale-java-profiler: services: # On start, the container will copy the profiler files to /transfer, # which is mounted to the previously defined volume, and exit. teamscale-java-profiler: image: cqse/teamscale-jacoco-agent:v34.0.1 volumes: - teamscale-java-profiler:/transfer:rw yourapp: image: your/image # Wait for the agent container to have copied the agent jar depends_on: teamscale-java-profiler: condition: service_completed_successfully # Use the profiler's volume. volumes: - teamscale-java-profiler:/teamscale-java-profiler:ro # Enable the profiler. # Replace with your Teamscale instance's URL, username and access token # as well as the profiler configuration ID from the previous step. environment: JAVA_TOOL_OPTIONS: "-javaagent:/teamscale-java-profiler/teamscale-jacoco-agent.jar=teamscale-server-url=
2025-04-09How To Install Teamscale as a Linux Service You might want to install Teamscale as a Linux service to allow for more consistent management with other services on the same machine and to ensure that Teamscale is automatically started after a reboot. Additionally, this allows Teamscale to automatically restart in case of a crash.NoteBefore installing Teamscale as a service, ensure that the basic configuration was completed and that Teamscale can be started manually.The required files are located in the folder linux in the Teamscale installation directory. You can choose between a systemd-based installation or an init.d-based one.systemdInstalling Teamscale as a systemd ServiceUninstalling the Teamscale systemd Serviceinit.dInstalling Teamscale as a init.d ServiceUninstalling the Teamscale init.d Servicesystemd Most modern Linux distributions support systemd. To see if your system supports, check for the existence of the directory /lib/systemd or the command systemctl. (This procedure was tested on Ubuntu 20.04.)Installing Teamscale as a systemd Service Modify the file linux/systemd/teamscale.service according to the TODO comments inside.Copy the file to /etc/systemd/system.Reload the systemd daemon to register the new service by running:bashsudo systemctl daemon-reloadEnable the service to start at boot time by running the following command:bashsudo systemctl enable teamscale.serviceTo start the service manually use the following command:bashsudo systemctl start teamscale.serviceUninstalling the Teamscale systemd Service To uninstall the systemd service, run the following commands:bashsudo systemctl stop teamscale.servicesudo systemctl disable teamscale.serviceremove the file you copied to /etc/systemd/system/teamscale.serviceinit.d The following guide for init.d is deprecated (this procedure was tested with Ubuntu 12.04). If possible use systemd or docker instead.Installing Teamscale as a init.d Service Edit the file teamscale.init:Enter or edit the correct path to the Teamscale root directory. For example: TEAMSCALE_HOME=/opt/teamscaleEnter or edit the correct path to the Java installation directory. For example:bashexport JAVA_HOME=/opt/jdkOptionally uncomment and fill the EXTRA_START_ARGS line to run the services as a different user.Install the service
2025-03-26SAP® Integration Teamscale can integrate with SAP® systems in order to use the analyses provided by Teamscale in the area of ABAP® custom code development. The following is relevant for ABAP developers, quality engineers for ABAP, and SAP NetWeaver® system administrators who want to configure Teamscale, or those of them who want to connect to Teamscale from an SAP system. It covers the SAP and ABAP specific configuration steps and usage scenarios, especially those tasks, which are done within an SAP system. This chapter is irrelevant for all who have nothing to do with custom code development for SAP.The required configuration steps on the SAP system are independent of clients on the SAP system (in German »mandantenunabhängig«). Therefore, it is not required to transport our add-on to specific clients.SAP Java Connector (SAP JCo)A prerequisite for Teamscale to communicate with SAP systems is the SAP Java Connector (SAP JCo) library. SAP's licensing restrictions do not permit redistribution of this library with Teamscale. However, SAP JCo is licensed without additional fees as part of a licensed SAP solution or component license. To connect Teamscale to your SAP system, you need to manually download the library from SAP and put it into Teamscale's library folder. For detailed information on the installation process, please refer to Installation of the SAP Java Connector (JCo)Installation of the SAP Java ConnectorTeamscale Connector for SAP NetWeaver® AS ABAP®Installation of the SAP ConnectorRemoval of the SAP ConnectorUser and Role for RFC AccessRole and Required Access RightsRFC User for TeamscaleSAP Connection Configuration in TeamscaleConfiguring Repository Clone DirectoryConfiguring SAP ABAP System ConnectionConnecting a Teamscale Project with SAPBackground Full SyncSecure Network Communication (optional)SNC Configuration of the SAP SystemSNC Configuration on the Teamscale ServerAdditional Analysis Configuration for SAPGrouping Changes by Transport Request or TaskIntegrating SAP Code Inspector / ATCSelecting/Defining a Code Inspector Check VariantCode Inspector Settings in SAP ABAP System ConnectionTest Gap Analysis Set Up For SAPTroubleshooting: No Coverage InformationUsing SCOV Lite for Teamscale and UPLIntegration with ABAP Development Tools for Eclipse (ADT)Integration with ATCConfiguring HTTPS Connection to TeamscaleConfiguring HTTP(S) Proxy in the SAP SystemTest ActivationDefinition of a Check VariantExecute the Check Variant.Integration with SAP Transport Management SystemTeamscale Features for SAP ABAPProperties of ABAP Code ObjectsInstallation of the SAP Java Connector Download the SAP Java Connector (SAP JCo). SAP JCo is available through the SAP Service Marketplace for registered SAP customers. Download the most recent version (>= 3.1) for the platform running Teamscale. When SAP JCo is needed for deploying our docker container, use the version for Linux for Intel compatible processors.Uncompress the contained library files into a temporary directory.Copy the Java library sapjco3.jar and the native library file for the specific platform (sapjco3.dll for Windows, libsapjco3.so for Linux, or libsapjco3.dylib for macOS) to a directory named lib-ext.For Teamscale zip distributions, the lib-ext directory must be inside the Teamscale installation directory.For Teamscale Docker distributions, the lib-ext directory must be mounted directly in the volumes section of the docker-compose.yml file to the directory /opt/teamscale/lib-ext, see below. Please consider setting the appropriate access rights (see
2025-04-24To 908:PFS:HIGH:MEDIUM:+e3DES.Save and activate the changed profile (respective dialogs will appear).Restart the SAP application server.Further information can be found in the SAP Community.Configuring HTTP(S) Proxy in the SAP System The Code Inspector test Teamscale Findings uses the global HTTP(S) client settings configured in transaction SM59. If your SAP System requires an HTTP(S) proxy in order to connect to the Teamscale server, please make sure the system's global proxy settings in SM59 > Extras > HTTP Proxy Configuration (»Shift+F1«) are configured accordingly. The relevant settings are on the Global Settings and HTTPS Protocol tabs.Test Activation First, Code Inspector test Teamscale Findings must be activated:In transaction SCI, select the action Code Inspector > Management of > Tests (or »Ctrl+Alt+F5«).Mark the checkboxes at the check classes /CQSE/CL_CI_CATEGORY_TEAMSCALE (category for Teamscale) and /CQSE/CL_CI_TEST_TS_FINDINGS (Teamscale findings test).Save your changes.Definition of a Check Variant Second, a check variant which contains the Teamscale Findings test must be defined. In transaction SCI, add a new check variant and select the Teamscale Findings test:Also, the required parameters of this test must be specified:Teamscale Findings Parameters Teamscale server URLURL of the Teamscale instanceTeamscale user nameName of the Teamscale user which should be used to retrieve the findingsUser’s access keyThe access key of this user (must be generated in the user preferences of the Teamscale Web UI)Teamscale project idThe identifier of the project in Teamscale for which findings should be retrieved. If no project ID is provided, the check will query Teamscale for projects that are associated with the respective system ID.Only new findings since (label)Optional. If set, only findings which were introduced after the given baseline label are included. Baselines are managed in the Teamscale Web UI under Quality Control > Baselines)Only new findings since (date)Optional. If set, only findings introduced after the specified date are included.Also finds. in changed codeIf enabled and also one of the Only new findings since parameters or Filter old transport findings is set, not only new findings but also findings in code changed since the baseline are includedFilter old transport findingsIf enabled, only findings that were introduced in a still-open transport request will be included. This setting should only be active in check variants used for ATC checks on transport release. Note that the creation date of the oldest relevant transport request is used.Baseline parameters are mutually exclusiveThe three check parameters Only new findings since (label), Only new findings since (date), and Filter old transport findings all affect to which degree old findings should be returned. In order to have consistent information in all cases, only one of these parameters may be used. If you need different baseline settings for different use cases, e.g. one for on-demand checks and one for check on transport release, different check variants must be used.Execute the Check Variant. After the variant is saved, it can be executed like any other Code Inspector variant, e.g. by transaction SCI or from the ABAP Workbench (SE80) using the commands Check > Code Inspector or Check > ABAP Test Cockpit (ATC). Note
2025-04-12How to install Teamscale with Docker).yaml volumes: - /path-on-host/lib-ext:/opt/teamscale/lib-extOn Windows systems, please make sure the prerequisite Microsoft Visual Studio C/C++ Runtime is installed. The architecture (x86 or x64) must match your JVM's architecture. If in doubt, consult the System > System Information view. For details, see SAP Note 2786882.(Re-)start Teamscale to load the SAP JCo library. You can confirm that the JCo library has been successfully loaded on the System > System Information view.Teamscale Connector for SAP NetWeaver® AS ABAP® The Teamscale Connector for SAP NetWeaver® AS ABAP® provides the connection between Teamscale and SAP NetWeaver AS ABAP based systems. The connector has to be transported to the SAP NetWeaver system and provides the following main functions:An RFC-based interface, which is used by Teamscale to poll the SAP system for custom code changes, so they can be analyzed within TeamscaleExecution of SAP Code Inspector (SCI) and export of the inspection results to TeamscaleExtraction of test coverage and usage data for Teamscale to support Test Gap analysis and usage analysisA plug-in for the ABAP Workbench and the Change and Transport System to access Teamscale results from the SAP system. This is realized by a custom SAP Code Inspector test case which shows messages for findings identified in Teamscale.The Teamscale Connector for SAP NetWeaver® AS ABAP® is compatible with SAP NetWeaver AS ABAP 7.0 EHP2 and later versions.Installation of the SAP Connector An archive file containing the latest release of the Teamscale Connector for SAP NetWeaver® AS ABAP® can be downloaded via Download either the .zip or .tar.gz source code file.For transport, place the K* and R* files from the archive in the cofiles and data directories of the transport directory of your host machine (typically /usr/sap/trans on Unix/Linux or C:\usr\sap\trans on Windows) and import the transport (transaction STMS ). Enable special conditions Overwrite Originals and Ignore Invalid Component Version:Basically, no further configuration in the SAP system is required. One exception is the use of Secure Network Communications (SNC).Removal of the SAP Connector To remove the Teamscale Connector for SAP NetWeaver® AS ABAP® from your system, a deletion transport is provided upon request. Please contact us, attaching a Teamscale support request and mention the System ID the connector should be removed from. We will then provide the deletion transport for the correct version.User and Role for RFC Access Teamscale connects to the SAP application server via RFC (remote function call) to retrieve the source code, which should be analyzed as well as some metadata (for example test coverage). The called functions are in function group /CQSE/TEAMSCALE_CONNCT_RFC . Additional functions reside in /CQSE/TEAMSCALE_TIA_RFC . Hence, a (technical) SAP user is required, which will be used by Teamscale to connect to the SAP system.Role and Required Access Rights The SAP user for Teamscale must have an appropriate role assigned. The required authorizations are listed here:Authorization ObjectFieldValueS_RFCRFC_TYPEFUGR (Function Group) RFC_NAMERFC_METADATA, /CQSE/TEAMSCALE_CONNCT_RFC, /CQSE/TEAMSCALE_TIA_RFCS_RFCRFC_TYPEFUNC (Function Module) RFC_NAMEDDIF_FIELDINFO_GET, RFCPING, RFC_GET_FUNCTION_INTERFACES_BTCH_JOBJOBACTIONRELE (Release Jobs)JOBGROUP*S_COV_ADMACTVT02 (Change)S_DEVELOPDEVCLASS*OBJTYPE*OBJNAME*P_GROUP*ACTVT03 (Display)The authorizations are required for basic RFC access, read access to development objects (source code),
2025-04-09, which will be used on the Teamscale server, must be created from the client PSE file. For both steps, again the command line tool sapgenpse is used, see the following examples:sapgenpse maintain_pk -v -a SNC.crt -p teamscale.psesapgenpse seclogin -p teamscale.pse -O rootThe Access Control List (ACL) for SNC restrictions must allow RFC communication with the client: In view VSNCSYSACL (transaction SM30 ), an entry for work area external (E) with the SCN name of the client (Teamscale), e.g. p:CN=TEAMSCALE, O=ACompany, C=EN, must be added.If you want to use the client X.509 certificate also for logon instead of username and password, the certificate must be mapped to the SAPTeamscale user. To do so, an entry in view VUSREXTID (transaction SM30 ) must be added, again for the SNC name of the client.SNC Configuration on the Teamscale Server On the Teamscale server, the following configuration steps are required:The library files from SAP Cryptographic Library must be saved on the Teamscale server. SAP Cryptographic Library can be downloaded from SAP for Me (requires login) for the required operating system, search for COMMONCRYPTOLIB 8.The cred_v2 file must be moved to a directory on the Teamscale server. The file should be only accessible for the operating system user running Teamscale.The environment variable SECUDIR must have been defined pointing to the directory containing cred_v2 .If the X.509 client certificate should be used for logon (SSO mechanism), the client certificate file (e.g. TEAMSCALE.crt ) must be saved on the Teamscale server.SNC Configuration in Teamscale On the Admin > Settings view, you have to specify the path to the directory containing the library files of SAP Cryptographic Library under SAP > [SAP ABAP System Connections - Global Settings].Under SAP ABAP System Connection, SNC must be enabled and the SNC options must be specified:SNC Parameters for SAP Connection Overview Use Secure Network Communications (SNC)Tick to enable SNCSNC name of the communication partner serverThe SNC name of the SAP system, something like p:CN=SNC, O=ACompany, C=ENOwn SNC name of the callerThe client SNC name of Teamscale, something like p:CN=TEAMSCALE, O=ACompany, C=ENUse SNC Single sign-on (SSO)Enable logon by X.509 certificate instead of username/passwordPath to X.509 certificatePath to *.crt file holding the X.509 client certificate, only required if SSO mechanism is enabledAdditional Analysis Configuration for SAP This section describes additional configuration steps required for specific analyses in Teamscale, namely the upload of SAP Code Inspector findings and the usage of coverage results for test gap analysis.Grouping Changes by Transport Request or Task If your development workflow is centered around transports and tasks, you can use Teamscale to easily group all changes belonging to the same transport into one view. To do that, add a connector or type Issue Tracker > Commit Message Issues in the project creation / edit dialog with the following configuration:Issue ID pattern: Request ([A-Z0-9]{10})[ :]|Task ([A-Z0-9]{10}):Issue subject pattern: [^:]+:(.*)These patterns will extract all requests and tasks. If you are only interested in one of these types, you may remove the other from the Issue ID pattern.After project creation
2025-04-06