Dear Ignite Community!

I propose for discussion the conception of using two TeamCity servers with
a roadmap.
https://ci.ignite.apache.org/
https://ci2.ignite.apache.org/

Storing project settings.
Servers synchronize configurations between themselves using the version
control-storing DSL (repository at https://github.com/apache). TeamCity
allows to store the settings in the DSL based on the kotlin language.
You can read more about the version control-storing DSL  here
https://www.jetbrains.com/help/teamcity/2021.2/kotlin-dsl.html#Getting+Started+with+Kotlin+DSL
This scheme will allow to maintain a single configuration for both TC and
update configuration after a code review.
Changes in the suite should be made only in the master branch of the stored
configuration. WebUI should be disabled on both TC.
The code-modified PR should be tested for compatibility before approval.

Configuring authentication.
It is proposed to switch sign in to TeamCity with using GitHub.com account (
https://www.jetbrains.com/help/teamcity/configuring-authentication-settings.html#GitHub.com)
and restriction of access for the organization (https : //
docs.github.com/en/organizations/collaborating-with-groups-in-organizations/about-organizations
.)
User rights are changed on each server by request in Jira.

Storing security credentials.
All credentials are stored on each server in the file "<TEAMCITY_DATA_DIR>
/ config / projects / <PROJECT_ID> /pluginData/secure/credentials.json".
That is why it is supposed to configure the synchronization of this file
between two servers.

Maintenance.
All change requests of server's maintenance should be created in Jira
https://issues.apache.org/jira/projects/IGNITE
<https://issues.apache.org/jira/projects/IGNITE/summary>
Responsible for the servers and agents - TC1 Petr Ivanov and TC2 Vitaly
Osipov. They are responsible for the health of the servers (backups,
updates, agents, etc.)
Both TC servers must be updated sequentially with a minimum time interval
by request in Jira.
---
At the first stage, it is required to synchronize the differences in
configurations.  The configuration from TC1 is uploaded to TC2.
If changes are required in this configuration, tasks are created in Jira to
change settings in TC1, then new configuration is re-uploaded to TC2.
Repository is created at https://github.com/apache. Tech-user is created
for connecting to this repository.  Tech-user should have RW access in the
master branch.
Checking TC2 functionality for several weeks.
Stage  2 - The option of "synchronization of the project settings with the
version control system" must be allowed  for the root-project on TC1 and
TC2.
The option "*Allow editing project settings via UI" must be allowed  on TC1
and disabled on TC2.*
Checking TC2 functionality for several weeks.
Stage 3 -  Switch sign in to TeamCity with using GitHub with linking TC
users to their accounts on the github.com.
Stage 4 - Configuring synchronization of secret files
"secure/credentials.json". Synchronization is one-way, so security creds
can only be made on the TC1 server. Configuring upload and download files
if they change.
Stage 5 - Setting up of checking PR before approval.
Stage 6 - Disabling the ability to edit configurations via WebUI on TC1

Reply via email to