We CAN store build settings per project — ignite, ignite-3, ignite-extensions 
and so on.
However, ROOT project will still be not under VCS and some major settings like 
VCS roots, Clean-Up rules, custom step runners and so much more will stay out 
of Git-based sync.
And in order to achieve full settings sync we should store root project with 
all subprojects.

Yet, there is a trade-off variant, where we can store ROOT settings in separate 
repo (let's call it ignite-tc) and under it set each project to inherit 
settings from there own repositories.

We can start with all settings, extracting and moving project by project into 
theirs respectful repositories.

> On 17 Dec 2021, at 14:46, Pavel Tupitsyn <ptupit...@apache.org> wrote:
> 
> Petr,
> 
>> why should I edit code in Apache Ignite 2.x repo to introduce new changes
> in Apache Ignite 3.x build settings
> 
> I thought we can store 3.x settings in 3.x repo and so on.
> 
> Looks like it does not work as I hoped it would.
> Thanks for your answers.
> 
> On Fri, Dec 17, 2021 at 2:35 PM Petr Ivanov <mr.wei...@gmail.com> wrote:
> 
>> Pavel,
>> 
>> 
>> If you are referring to this paragraph
>> 
>>        • If you are using TeamCity feature branches, you can define a
>> branch specification when creating a project from URL (Git only) or in the
>> VCS root used for versioned settings. TeamCity will run a build in a branch
>> using the settings from this branch.
>> 
>> then it is only for new projects.
>> After setting current one all settings will be acquired from the chosen
>> branch and it will not be able to change (only create new project from new
>> branch).
>> 
>> 
>> And it still can be done from separate repository.
>> 
>> 
>> Choosing one of the project's repo to host settings for every other
>> project seems non-logical — why should I edit code in Apache Ignite 2.x
>> repo to introduce new changes in Apache Ignite 3.x build settings?
>> 
>>> On 17 Dec 2021, at 14:28, Pavel Tupitsyn <ptupit...@apache.org> wrote:
>>> 
>>> Petr,
>>> 
>>>> you cannot run new suite added in branch because it just won't be
>> visible
>>> from UI
>>> 
>>> That's unfortunate.
>>> However, a more important scenario is "make changes to the existing
>> project
>>> in a branch", which is supported, as I understand [1]
>>> 
>>> [1]
>>> 
>> https://www.jetbrains.com/help/teamcity/storing-project-settings-in-version-control.html#Defining+Settings+to+Apply+to+Builds
>>> 
>>> On Fri, Dec 17, 2021 at 2:19 PM Petr Ivanov <mr.wei...@gmail.com> wrote:
>>> 
>>>> TeamCity DSL just does not work as you wish it should.
>>>> 
>>>> 
>>>> Changes from branches are not visible: you cannot run new suite added in
>>>> branch because it just won't be visible from UI because project UI is
>>>> rendered from default branch only),
>>>> and at least snapshot dependencies are taken from default branch only:
>>>> even if you will add dependency on already visible Run All
>> configuration,
>>>> it will be ignored.
>>>> 
>>>> 
>>>> Also about storing in already existing apache/ignite repository — that
>>>> will break the model about current separation on ignite and ignite-3,
>>>> ignite-extensions and so-on.
>>>> As we have different repositories for different parts of our project and
>>>> TeamCity unites them all — repository should be separate.
>>>> And when JB will fix the branches issues — we still will be able to use
>> it
>>>> with creating branches with the same name on both project and TC
>> repository.
>>>> 
>>>>> On 17 Dec 2021, at 14:06, Pavel Tupitsyn <ptupit...@apache.org> wrote:
>>>>> 
>>>>> 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