Petr,

> 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.
VCS roots are project-related and should not be stored somewhere outside
the project.
Also, having different roots at different TCs looks like a proper
configuration.
For example, TC2 may not contain the Ignite-3 project.

On Fri, Dec 17, 2021 at 4:13 PM Petr Ivanov <mr.wei...@gmail.com> wrote:

> Separate JIRA project will ruin the concept of introducing changes for
> both code and build settings in single branch of single project.
>
>
> > On 17 Dec 2021, at 15:14, Anton Vinogradov <a...@apache.org> wrote:
> >
> > Petr,
> >
> >> I strongly suggest avoiding a separate repository for project settings.
> >> Let's store them in https://github.com/apache/ignite
> >
> > Sounds good, but we must avoid dozens of additional commits in this case.
> > Each commit should be properly formalized and related to the issue.
> > We may create a special Jira project for CI issues to separate commits.
> >
> > On Fri, Dec 17, 2021 at 2:46 PM 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