Описание CIXml#
Структура, в которой хранится информацию о связи КЭ с Nexus и Docker Registry.
CIXml не зависит от среды развертывания.
Параметр general.CIXml хранится в линеаризованном формате.
Общий вид CIXml:
<CIs>
<!-- Zero or more repetitions: -->
<ci>
<!-- Номер КЭ, в рамках которого передается доработка. Пример: 00001129 -->
<number>string</number>
<!-- GroupId для работы с Nexus. Пример: Nexus_PROD.CI00000001_example -->
<NexusGroupID>string</NexusGroupID>
<!-- ArtifactId для работы с Nexus. Пример: Synapse -->
<nexusSegment>string</nexusSegment>
<!--Optional:-->
<!-- ArtifactId для работы с Nexus (Перегружается nexusSegment). Пример: SMDL -->
<artifactsID>
<artifactId>string</artifactId>
</artifactsID>
<!--Optional:-->
<!-- Имя Dev репозитория Nexus для публикации дистрибутивов. Пример: maven-distr-dev -->
<nexusDevRepo>string</nexusDevRepo>
<!-- Имя релизного репозитория Nexus для скачивания дистрибутивов. Пример: maven-distr -->
<nexusReleaseRepo>string</nexusReleaseRepo>
<!--Optional:-->
<!-- Ссылка для работы с Nexus. Пример: https://nexus.ru -->
<nexusUrl>string</nexusUrl>
<!--Optional:-->
<!-- Ссылка Nexus для замены на этапе прикрепления ссылки на дистрибутив к Jira задаче. Пример: https://nexus-jira.ru -->
<nexusJiraUrl>string</nexusJiraUrl>
<!--Optional:-->
<!-- ID CredentialsId который будет использоваться для работы с Nexus -->
<nexusCredentialsId>string</nexusCredentialsId>
<!--Optional:-->
<!-- ID CredentialsId который будет использоваться для работы с QGM -->
<nexusQGCredentialsId>string</nexusQGCredentialsId>
<!-- Ссылка для работы с Docker Registry. Пример registry.ru -->
<dockerRegistryURL>string</dockerRegistryURL>
<!-- Предпоследний элемент при split по символу "/" в полной ссылке на релизный Registry без HTTP. Пример: для ссылки registry.ru/ci00000001/ci00000002_example получаем ci00000001 -->
<dockerRegistryCI>string</dockerRegistryCI>
<!-- Последний элемент при split по символу "/" в полной ссылке на релизный registry без HTTP. Пример: для ссылки registry.ru/ci00000001/ci00000002_example получаем ci00000002_example -->
<dockerRegistryProject>string</dockerRegistryProject>
<!-- ID CredentialsId который будет использоваться для работы с Docker Registry -->
<dockerRegistryCred>string</dockerRegistryCred>
<dockerRegistryRepo>
<!-- Имя репозитория в Release Docker Registry. Пример: docker-release -->
<!-- prefix - Префикс для формирования ссылки на Release Docker Registry. Пример: repo -->
<releaseRepo prefix="string">string</releaseRepo>
<!--Optional:-->
<!-- Имя репозитория в Dev Docker Registry. Пример: docker-dev -->
<devRepo>string</devRepo>
<!--Optional:-->
<!-- Ссылка для работы с Dev Docker Registry. Пример: dev-registry.ru -->
<devDockerRegistryURL>string</devDockerRegistryURL>
<!--Optional:-->
<!-- Ссылка для работы с Release Docker Registry. Пример: release-registry.ru -->
<releaseDockerRegistryURL>string</releaseDockerRegistryURL>
</dockerRegistryRepo>
</ci>
</CIs>
XSD схема CIXml:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="CIs">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="ci">
<xs:complexType>
<xs:sequence>
<xs:element name="number" type="xs:unsignedInt" />
<xs:element name="NexusGroupID" type="xs:string" />
<xs:element name="nexusSegment" type="xs:string" />
<xs:element name="artifactsId">
<xs:complexType>
<xs:sequence>
<xs:element name="artifactId" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="nexusDevRepo" type="xs:string" />
<xs:element name="nexusReleaseRepo" type="xs:string" />
<xs:element name="nexusUrl">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Division" type="xs:string" use="optional" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="nexusJiraUrl" type="xs:string" />
<xs:element name="nexusCredentialsId">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Division" type="xs:string" use="optional" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="nexusQGCredentialsId" type="xs:string" />
<xs:element name="dockerRegistryURL" type="xs:string" />
<xs:element name="dockerRegistryCI" type="xs:string" />
<xs:element name="dockerRegistryProject" type="xs:string" />
<xs:element name="dockerRegistryCred">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Division" type="xs:string" use="optional" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="dockerRegistryRepo">
<xs:complexType>
<xs:sequence>
<xs:element name="releaseRepo" type="xs:string" />
<xs:element name="devRepo" type="xs:string" />
<xs:element name="devDockerRegistryURL" type="xs:string" />
<xs:element name="releaseDockerRegistryURL" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Пример:
<CIs>
<ci>
<number>10000017</number>
<NexusGroupID>nexus_PROD.CI10000017_example</NexusGroupID>
<nexusSegment>Example</nexusSegment>
<artifactsId>
<artifactId>Example1</artifactId>
</artifactsId>
<nexusDevRepo>maven-distr-dev</nexusDevRepo>
<nexusReleaseRepo>maven-distr</nexusReleaseRepo>
<nexusUrl Division="Dev">https://nexus-dev.ru</nexusUrl>
<nexusJiraUrl>https://jira.nexus.ru</nexusJiraUrl>
<nexusCredentialsId Division="Dev">nexus_cred_id</nexusCredentialsId>
<nexusQGCredentialsId>nexus_qgm_cred_id</nexusQGCredentialsId>
<dockerRegistryURL>registry.ru</dockerRegistryURL>
<dockerRegistryCI>ci10000017</dockerRegistryCI>
<dockerRegistryProject>ci10000018</dockerRegistryProject>
<dockerRegistryCred Division="Dev">registry_cred_id</dockerRegistryCred>
<dockerRegistryRepo>
<releaseRepo>releaseRepo</releaseRepo>
<devRepo>docker-dev</devRepo>
<devDockerRegistryURL>docker-dev.example-host.ru</devDockerRegistryURL>
<releaseDockerRegistryURL>docker-release.example-host.ru</releaseDockerRegistryURL>
</dockerRegistryRepo>
</ci>
</CIs>
В CIXml можно задавать параметры конкретной YML конфигурации к которой подключены Jenkins Jobs.
Для этого нужно у параметра задать в XML атрибуте Division равное значению параметра config.Division из конфигурационного файла SMDL, в Segment значение параметра config.Segment из конфигурационного файла SMDL. Можно задавать несколько через запятую.
Пример с параметром nexusCredentialsId, для configPsi.yml:
<CIs>
<ci>
<number>10000017</number>
<NexusGroupID>nexus_PROD.CI10000017_example</NexusGroupID>
<nexusSegment>Example</nexusSegment>
<artifactsId>
<artifactId>Example1</artifactId>
</artifactsId>
<nexusDevRepo>maven-distr-dev</nexusDevRepo>
<nexusReleaseRepo>maven-distr</nexusReleaseRepo>
<nexusUrl Division="Dev">https://nexus-dev.ru</nexusUrl>
<nexusJiraUrl>https://jira.nexus.ru</nexusJiraUrl>
<nexusCredentialsId Division="Psi">PsiCred</nexusCredentialsId>
<nexusCredentialsId Division="Psi" Segment="Sigma">PsiCred</nexusCredentialsId>
<dockerRegistryURL>registry.ru</dockerRegistryURL>
<dockerRegistryCI>ci10000017</dockerRegistryCI>
<dockerRegistryProject>ci10000018</dockerRegistryProject>
<dockerRegistryCred Division="Dev">registry_cred_id</dockerRegistryCred>
<dockerRegistryRepo>
<releaseRepo>releaseRepo</releaseRepo>
<devRepo>docker-dev</devRepo>
<devDockerRegistryURL>docker-dev.example-host.ru</devDockerRegistryURL>
<releaseDockerRegistryURL>docker-release.example-host.ru</releaseDockerRegistryURL>
</dockerRegistryRepo>
</ci>
</CIs>
Пример в линеаризованном формате:
<CIs><ci><number>10000017</number><NexusGroupID>nexus_PROD.CI10000017_example</NexusGroupID><nexusSegment>Example</nexusSegment><artifactsId><artifactId>Example1</artifactId></artifactsId><nexusDevRepo>maven-distr-dev</nexusDevRepo><nexusReleaseRepo>maven-distr</nexusReleaseRepo><nexusUrl Division="Dev">https://nexus-dev.ru</nexusUrl><nexusJiraUrl>https://jira.nexus.ru</nexusJiraUrl><nexusCredentialsId Division="Psi">PsiCred</nexusCredentialsId><nexusCredentialsId Division="Psi" Segment="Sigma">PsiCred</nexusCredentialsId><dockerRegistryURL>registry.ru</dockerRegistryURL><dockerRegistryCI>ci10000017</dockerRegistryCI><dockerRegistryProject>ci10000018</dockerRegistryProject><dockerRegistryCred Division="Dev">registry_cred_id</dockerRegistryCred><dockerRegistryRepo><releaseRepo>releaseRepo</releaseRepo><devRepo>docker-dev</devRepo><devDockerRegistryURL>docker-dev.example-host.ru</devDockerRegistryURL><releaseDockerRegistryURL>docker-release.example-host.ru</releaseDockerRegistryURL></dockerRegistryRepo></ci></CIs>