Witaliy,

> repository is created
> only in the master branch

I strongly suggest avoiding a separate repository for project settings.
Let's store them in https://github.com/apache/ignite

*1. We should be able to test code changes together with CI/CD changes.*
*2. We should be able to have different project settings in different
branches.*

For example, I may remove or rename a module in ignite/master branch and
update TC project accordingly,
while it continues to work as before in ignite-2.12 branch where we prepare
the release with older code.

This is super important and this is how most other projects do it (from my
experience).



On Fri, Dec 17, 2021 at 11:12 AM Виталий Осилов <osipov.wita...@gmail.com>
wrote:

> 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