Skip to content

Proposal: Updated release workflow#1968

Closed
lslezak wants to merge 0 commit intoagama-project:masterfrom
lslezak:master
Closed

Proposal: Updated release workflow#1968
lslezak wants to merge 0 commit intoagama-project:masterfrom
lslezak:master

Conversation

@lslezak
Copy link
Contributor

@lslezak lslezak commented Feb 3, 2025

Problem

  • The Beta release blocks quite a lot of pull requests from merging in master

Solution

  • Use a separate branch for the Beta release, continue merging the changes in master
  • We already have a partial support for this but it has never been tested

Test setup

For testing setup I created

To avoid versioning problem (the same package versions in both Devel and Release projects but with different content) I bumped the version in Devel to "12.pre". The "pre" should indicate that it is not the final release and that the version 11 is still the latest release. (Maybe we could use some different suffix, like "devel". I used "pre" as it is commonly used with Rubygems.)

After fixing few submission problems I got it working:

  • The Release project contains packages in version 11 with a testing release branch change (changes, package versions).
  • The Devel project contains packages in version 12.pre with the testing master branch change (see this PR, changes, package versions).

Proposed workflow

Here is a summary of the release workflow:

  • When releasing a new version create the release branch from master (if it already exists from the previous release then merge/rebase with master).
  • Add some commit to master branch, like bumping the version and create a new version tag (version + 1 + ".pre"). This new version tag must not be reachable from the release branch. (That's the reason for the extra commit.)
  • The changes in the release branch are also merged to the master branch so they are not lost
  • When ready for the next release add a new version tag (same version but without the ".pre" suffix.)

Chart

flowchart LR
    MB[#quot;master#quot; branch<br>#lpar;contains #quot;v12.pre#quot; tag#rpar;]
    RB[#quot;release#quot; branch<br>#lpar;contains #quot;v11#quot; tag#rpar;]
    sAD[systemsmanagement:Agama:Devel]
    sAR[systemsmanagement:Agama:Release]
    DYAH[Devel:YaST:Agama:Head<br>#lpar;just for testing the latest version in a SLE16 build#rpar;]
    DYAR[Devel:YaST:Agama:Release<br>#lpar;does not exist yet#rpar;]
    SLE16
    Factory[openSUSE Factory]
    Leap16[openSUSE Leap 16.0]

    subgraph GitHub
      MB
      RB
    end

    subgraph OBS
        sAD
        sAR
        Factory
        Leap16
    end

    subgraph IBS
        DYAH
        DYAR
        SLE16
    end

    MB -->|"GitHub Action<br>submits to"| sAD
    RB -->|"GitHub Action<br>submits to"| sAR

    MB -->|Branched at<br>the release time<br>before creating<br>the #quot;v12.pre#quot; tag in<br>the #quot;master#quot; branch| RB

    sAD -->|linked to| DYAH
    sAR  -->|linked to| DYAR

    DYAR -->|manually<br>submitted to| SLE16
    sAD -->|submitted to<br>#lpar;auto/manually?#rpar;| Factory
    sAR -->|submitted to<br>#lpar;auto/manually?#rpar;| Leap16
Loading

Questions

  • Have a single release branch which contains only the latest release code or have separate branches for each release? E.g. release_11, release_beta1, release_12, release_beta2. Later we will need to have maintenance branches anyway (for GM, SP1, SP2...), so we will need to support this scenario at some point anyway.
  • How the openSUSE release process works? How the packages are submitted to Leap16? Is the graph correct? Should we do manual or automatic submission?

TODO

  • Remove the testing changes in this PR

@imobachgs
Copy link
Contributor

The approach looks promising. I like using the pre (or devel) suffix to distinguish between development and stable versions.

I would probably keep a single release branch, updating and tagging it as needed.

@lslezak lslezak closed this Feb 26, 2025
lslezak added a commit that referenced this pull request Mar 11, 2025
## Problem

- There could be a confusion between the official Agama version 12 and
the version from our OBS

## Solution

- Bump the version to `13pre` so it is clear this is not the version 12
but still not the future version 13 (so that 12 is the latest final
release).
- Using a pre version [has been approved by
Imo](#1968 (comment))
@lslezak
Copy link
Contributor Author

lslezak commented Mar 14, 2025

Updated graph for the release process, click the <-> icon to open in a bigger popup.

flowchart LR
    MB0[#quot;master#quot; branch, version 13.pre<br>#lpar;used for development#rpar;]
    MB1[#quot;master#quot; branch, version 13<br>#lpar;used for development#rpar;]
    MB2[#quot;master#quot; branch, version 14.pre<br>#lpar;features for future BetaX+1#rpar;]
    RB[#quot;release#quot; branch, version 13<br>#lpar;only important fixes for BetaX#rpar;]
    sAD[systemsmanagement:Agama:Devel]
    sAR[systemsmanagement:Agama:Release]
    DYAH[Devel:YaST:Agama:Head<br>#lpar;just for testing the latest development version in a SLE16 build#rpar;]
    DYAR[Devel:YaST:Agama:Release<br>#lpar;for releasing the next Beta version#rpar;]
    SLE16
    Factory[openSUSE Factory]
    Leap16[openSUSE Leap 16.0]

    subgraph GitHub
      MB0
      MB1
      MB2
      RB
    end

    subgraph OBS
        sAD
        sAR
        Factory
        Leap16
    end

    subgraph IBS
        DYAH
        DYAR
        SLE16
    end

    MB2 -->|GitHub Action<br>submits to| sAD
    RB -->|GitHub Action<br>submits to| sAR

    MB0 -->|BetaX released, started BetaX+1 development<br>remove the #quot;pre#quot; version suffix | MB1
    MB1 -->|branched before releasing next Beta| RB
    MB1 -->|bump the Agama version in #quot;master#quot; to Y+1.pre| MB2
    MB2-. next development cycle .-> MB0

    sAD -->|linked to| DYAH
    sAR  -->|linked to| DYAR

    DYAR -->|manually<br>submitted to| SLE16
    sAD -->|manually submitted to| Factory
    SLE16 -->|automatically<br>inherited to | Leap16

    linkStyle 5 color:gray;
Loading

@lslezak
Copy link
Contributor Author

lslezak commented Mar 20, 2025

Updated graph with the current situation, click the <-> icon to open in a bigger popup.

flowchart LR
    MB0[#quot;master#quot; branch, version 13.pre<br>#lpar;used for development#rpar;]
    MB1[#quot;master#quot; branch, version 13<br>#lpar;used for development#rpar;]
    MB2[#quot;master#quot; branch, version 14.pre<br>#lpar;features for future BetaX+1#rpar;]
    RB[#quot;release#quot; branch, version 13<br>#lpar;only important fixes for BetaX#rpar;]
    sAD[systemsmanagement:Agama:Devel]
    sAR[systemsmanagement:Agama:Release]
    DYAH[Devel:YaST:Agama:Head<br>#lpar;just for testing the latest development version in a SLE16 build#rpar;]
    DYAR[Devel:YaST:Agama:Release<br>#lpar;for releasing the next Beta version#rpar;]
    SLE16
    Factory[openSUSE Factory]
    Leap16[openSUSE Leap 16.0]

    subgraph GitHub
      MB0
      MB1
      MB2
      RB
    end

    subgraph OBS
        sAD
        sAR
        Factory
        Leap16
    end

    subgraph IBS
        DYAH
        DYAR
        SLE16
    end

    MB2 -->|GitHub Action<br>submits to| sAD
    RB -->|GitHub Action<br>submits to| sAR

    MB0 -->|BetaX released, started BetaX+1 development<br>remove the #quot;pre#quot; version suffix | MB1
    MB1 -->|branched before releasing next Beta| RB
    MB1 -->|bump the Agama version in #quot;master#quot; to Y+1.pre| MB2
    MB2-. next development cycle .-> MB0

    sAD -->|linked to| DYAH
    sAR  -->|linked to| DYAR

    DYAR -->|manually submitted to | SLE16
    %% DYAH -->|"automatically submitted between Beta releases (TBD)"| SLE16
    sAR -->|manually submitted to| Factory
    SLE16 -->|automatically<br>inherited to | Leap16

    linkStyle 5 color:gray;
Loading

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

Comments