DevOps Build – Tooling


Tooling Introduction

DevOps Articles

The build server needs tools that collaborate together. This article is about the requirements for tooling and tool integration.

Tooling Definitions

Meta data

Meta data is information that describes objects. An example is the meta data of a build. This meta data may consist of:

  • BuildID
  • BuildDateTime
  • BaselineID
  • ApplicationID

Primary key / Foreign key

The ID’s in objects are the unique objects identifiers. Many objects like a baseline and build have a relationship. There can now be a defined relationship between these objects by sharing a key field. For example, in the build object, a BaselineID can be included to indicate based on which BaselineID the build was built with the unique BuildID. The BaselineID is then the Primary Key that is registered in the Build object as a Foreign Key.

Tooling Concepts

Tool Integration

DevOps uses automation for the deployment pipeline. The tools that are used are either integrated or tightly coupled. In case that more tools are used, integration is a very important aspect. This includes:

  • Alignment of terminology over the tools
  • Exchange of information formats between the tools
  • Synchronization of the deliveries in the pipeline
  • Status tracking over the tools
  • Reporting based on more tool repositories

Tooling Best Practices

In article #5 (DevOps Tooling Architecture) the architecture of tooling is described including the options of the make / buy and the tool integration or the best of breed choices. In article 16 (DevOps Software Configuration Items) the relationship between the CMDB and the S-CMDB is described.

The interface between the CMDB and the S-CMDB is not a common place challenge. Throughout the DevOps deployment pipeline, we see this discussion returning. This article addresses the main pitfalls of tool integration at the build.

Scope

The build must take place automatically and, of course, repeatable, stable and fast. Article # 21 (DevOps Build – CI) describes how the build works within CI. Herein the following objects have emerged:

  • Source code (source code repository)
  • Build (build records)
  • Object code (artefact repository)
  • Test cases (test database)
  • Test run (test database)
  • Defects (defect database)
  • Documentation (source code and artefact repository)

Data model

There is a build for different types of objects, and the tooling must be able to relate these objects to each other.

To recognize these dependencies, it is best to use a data model. In the data model the objects, the relationship between the objects and the data attributes of those objects are defined. This can then be displayed in a graphics picture. But in a table form, it is also workable. It is important to determine the extent to which the tools cover this information need after this need is inventoried. Often there is something to configure to get the missing information above the table.

An example of such a data model is given in the following tables.

Source code
F#TypeNameTypeDescription
1PKSourceCodeIDIntegerID of the S-CI
2FKBaselineIDIntegerName of baseline to which the S-CI belongs
3FKDeveloperIDIntegerName of developer who did change the S-CI the last time
4FKDependencyIDIntegerID of the S-CI that must be compiled before this S-CI can be compiled. Assumed is one dependency, but probably there will be more dependencies which may need a 1:N relationship (extra table)
5FKCI-IDIntegerID of the CMDB to which this S-CI Belongs
6FKLastBuildIDIntegerLast build that made use of this S-ID
7NameVarchar (255)Name of S-CI
8VersionSmallIntVersion of the S-CI
9DateTime CheckInDatetimeDate and time of the last check-in
10ChangeVarchar (255)Oneliner with the change description
11

Table 1, Sourcecode meta-data tooling

Build
F#TypeNameTypeDescription
1PKBuildIDIntegerID of the Build
2FKBaselineIDIntegerName of baseline to which the S-CI belongs
3FKDeveloperIDIntegerName of developer who did invoke the build
4FKDependencyIDIntegerID of the S-CI that must be compiled before this S-CI can be compiled. Assumed is one dependency, but probably there will be more dependencies which may need a 1:N relationship (extra table)
5FKCI-IDIntegerID of the CMDB to which this build Belongs
6BuildDateTimeStartDateTimeDate and Time of the start of the build
7BuildDateTimeEndDateTimeDate and Time of the end of the build
8BuildDurationIntegerNumber of seconds of the duration of the Build
9CompileErrorNumberIntegerNumber of errors found in the build
10CompileWarningNumberIntegerNumber of warnings found in the build
11

Table 2, Build meta-data tooling

Objectcode
F#TypeNameTypeDescription
1PKObjectCodeIDIntegerName of the object
3FKBuildIDIntegerID of the build that did create this object
4FKCI-IDIntegerID of the CMDB to which this object belongs
5

Table 3, Objectcode meta-data tooling

Test case
F#TypeNameTypeDescription
1PKTestCaseIDIntegerID of the Test Case
2FKObjectCodeIDIntegerID of the object that is tested. In case of more Objects the data model must be expanded to support a 1:N relationship (extra table)
3FKCI-IDIntegerID of the CMDB to which this object belongs
4TestTypeChar(3)UT, ST, SIT, FAT, PAT, UAT
5Pre-conditionWhat is needed to perform this test like test data and authorization.
6Test executionGiven – When – Then
7Post-conditionWhat is the result in terms of errors, data in the database, information on screen
8ExpectedResultSucceed test or Failure test.

Table 4, Testcase meta-data tooling

Test run
F#TypeNameTypeDescription
1PKTestRunIdIntegerID of the Test Run
2FKTestCaseIdIntegerTest case that is tested in the test run. For each Testcase that is part of the Test run a record has to be present
3DateTimeDateTimeIf filled in the test run, must wait for this time trigger to start
4ResultVarchar(255)The result of the test
5ContinueFlagChar(1)“Y” means continue the run “N” means stop the run in case of a failure of this testcase. For unit test cases the flag is always set to “Y”.

Table 5, Test run meta-data tooling

Defects
F#TypeNameTypeDescription
1PKDefectIDIntegerID of the defect
2FKTestRunIDIntegerID of the test run in which the test did take place
3TestCaseIDIntegerID of the test case that caused the defect

Table 6, Defect meta-data

Documents
F#TypeNameTypeDescription
1PKDocIDIntegerID of the documentation
2FKBaselineIntegerID of the baseline for which the documentation is valid
3FKBuildIDIntegerID of the build that generated the document

Table 7, Document meta-data

Tool requirements

Based on the meta data tables, a number of requirements for the tools can be derived as defined in Table 8.

Requirements
R#RequirementLinks
Source code repository tool
S-01Each source object has an unique ID
S-02The check-in on the baseline is personalizedProbably based on a link to active directory tool
S-03The source code repository must be able to defined dependencies
S-04The source code repository must be able to relate a S-CI to an CIThis requires a link to the CMDB tool
S-05The compiler must be able to update the S-CI to register the lastbuildIDThis requires a link to the build server tool
S-06The source code repository must use versioning and require a checkin
Build Server tool
B-01The build server must register the builds that have been invoked
B-02The build server must administrate the baselineID for which the build wasThis requires a link to the source code repository tool
B-03The build server must look up dependencies or be able to determine them based on the source code filesThis requires a link to the source code repository tool
B-04The build server must relate the objectID to a CIThis requires a link to the CMDB tool
B-05The build server must administrate where the object is placed in the object artefactoryThe requires a link to the artefact repository tool
Test automation tool
T1Test cases must be registered uniquely
T2The test case must have a relation with an object IDThis requires a link to the artefact repository tool
T3The test case must relate to the CIThis requires a link to the CMDB tool
T4Test executionIf the Given-When-Then is a requirement that is defined in a requirement tool, then there is a need for a link to that tool as well.
T5The execution of a set of test cases in a run is administrated
T6The test run must refer to the defined test casesIf the test run and the test cases are not defined in the same tool, then an extra link is needed
Defect management tool
D1The defects are uniquely identified
D2There is a relationship between defect and TestRunID / TestCaseIDThis requires a link with the test automation tool.
Document generation tool
G1Documents are registered based on an unique ID
G2Documents are based on a baselineThis requires a link to the source code repository tool
G3Documents refer to the build in which there are generatedThis requires a link to the build service tool

Table 1‑8, Toolrequirements

LinkedIn Group

Discuss with us about this article on LinkedIn.

More information

Related Books:

DevOps Best Practices, ISBN: 9789492618078
Agile Service Management with Scrum, ISBN: 9789071501807

Related training sessions:

Related Article:

Service Management

Samenvatting
DevOps Build - Tooling
Artikel
DevOps Build - Tooling
Beschrijving
The build server needs tooling that collaborate together. This article is about the requirements for tool integration. This article contains an example of the meta data of a build.
Auteur
Publisher Naam
ITpedia
Publisher Logo
Sidebar