Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Freeze release workflow #242

Merged
merged 3 commits into from
Oct 30, 2022
Merged

Freeze release workflow #242

merged 3 commits into from
Oct 30, 2022

Conversation

keeshux
Copy link
Member

@keeshux keeshux commented Oct 30, 2022

Automate import of pending version hotfixes without blocking development on master.

Given a linear history in master:

master

A - B - C - G - H - I - ... (active development)
         \
          D - E - F (v3.0.0)

add a script that, later in master, is able to automate cherry-picking of v3.0.0 commits.

The script:

  1. Looks up the merge base of v3.0.0 (C)
  2. Infers all the commits/hotfixes that led up to the v3.0.0 release (D, E, F)
  3. Creates a merge branch from master
  4. Cherry-picks all commits from 2

Step 4 may rarely generate conflicts. However, the faster the release, the less likely.

At this point, the merge branch merge/v3.0.0 looks like the following:

master

A - B - C - G - H - I - ... (active development)
         \
          D - E - F (v3.0.0)

merge/v3.0.0

A - B - C - G - H - I - D' -  E' - F' (active development)

- Do not pull anything from master

- Do not push release commit to master

- Only push created version tag
1. Cherry-pick hotfixes from released version

2. Bump version to new version

Normally, 1 is only made of the release commit updating CHANGELOG
with the release date.

However, if a release branch was needed to apply hotfixes to the
latest release, cherry picking will account for the whole release
branch (i.e. multiple commits).
@keeshux keeshux added the enhancement New feature or request label Oct 30, 2022
@keeshux keeshux added this to the 2.1.0 milestone Oct 30, 2022
@keeshux keeshux self-assigned this Oct 30, 2022
@keeshux keeshux merged commit 7ef3288 into master Oct 30, 2022
@keeshux keeshux deleted the freeze-release-workflow branch October 30, 2022 11:56
josser pushed a commit to josser/passepartout-apple that referenced this pull request Nov 1, 2022
* Freeze release workflow

- Do not pull anything from master

- Do not push release commit to master

- Only push created version tag

* Refine scripts to start new version

1. Cherry-pick hotfixes from released version

2. Bump version to new version

Normally, 1 is only made of the release commit updating CHANGELOG
with the release date.

However, if a release branch was needed to apply hotfixes to the
latest release, cherry picking will account for the whole release
branch (i.e. multiple commits).

* Ignore more paths for unit testing
@keeshux keeshux added refactoring Improves software architecture and removed enhancement New feature or request labels May 27, 2023
optionalendeavors pushed a commit to optionalendeavors/passepartout-apple that referenced this pull request Feb 7, 2024
…ates, etc.

Merge commit '1b704d7d4aeb5765842422183c76f5f26f1d48d5'

* commit '1b704d7d4aeb5765842422183c76f5f26f1d48d5': (474 commits)
  Decouple VPNManager from TunnelKit (passepartoutvpn#248)
  Move refund detection inside ProductManager (passepartoutvpn#246)
  Full OpenVPN XOR patch (passepartoutvpn#245)
  Bump version
  Fix missing identity for beta tag
  Update CHANGELOG
  Ukrainian transaltion (passepartoutvpn#243)
  Attempt beta release
  Annotate public beta tags
  Bump version
  [ci skip] Set release date
  Update CHANGELOG
  Freeze release workflow (passepartoutvpn#242)
  Update TunnelKit with .killSwitch option
  Run tests on PR (passepartoutvpn#241)
  Retain original filename as imported profile name (passepartoutvpn#240)
  Upgrade project to Xcode 14
  Attempt beta release
  Revisit pull section in OpenVPN Endpoint
  Attempt beta release
  ...

# Conflicts:
#	CHANGELOG.1.ios.md
#	CHANGELOG.1.mac.md
#	Config.xcconfig
#	Passepartout.xcodeproj/project.pbxproj
#	Passepartout.xcodeproj/xcshareddata/xcschemes/Passepartout.xcscheme
#	Passepartout/App/Info.plist
#	Passepartout/App/iOS/fastlane/metadata/de-DE/release_notes.txt
#	Passepartout/App/iOS/fastlane/metadata/el/release_notes.txt
#	Passepartout/App/iOS/fastlane/metadata/en-US/release_notes.txt
#	Passepartout/App/iOS/fastlane/metadata/es-MX/release_notes.txt
#	Passepartout/App/iOS/fastlane/metadata/fr-FR/release_notes.txt
#	Passepartout/App/iOS/fastlane/metadata/it/release_notes.txt
#	Passepartout/App/iOS/fastlane/metadata/nl-NL/release_notes.txt
#	Passepartout/App/iOS/fastlane/metadata/pl/release_notes.txt
#	Passepartout/App/iOS/fastlane/metadata/pt-BR/release_notes.txt
#	Passepartout/App/iOS/fastlane/metadata/ru/release_notes.txt
#	Passepartout/App/iOS/fastlane/metadata/sv/release_notes.txt
#	Passepartout/App/macOS/App.entitlements
#	Passepartout/App/macOS/Info.plist
#	Passepartout/App/macOS/Launcher/AppDelegate.swift
#	Passepartout/App/macOS/fastlane/metadata/de-DE/release_notes.txt
#	Passepartout/App/macOS/fastlane/metadata/el/release_notes.txt
#	Passepartout/App/macOS/fastlane/metadata/en-US/release_notes.txt
#	Passepartout/App/macOS/fastlane/metadata/es-MX/release_notes.txt
#	Passepartout/App/macOS/fastlane/metadata/fr-FR/release_notes.txt
#	Passepartout/App/macOS/fastlane/metadata/it/release_notes.txt
#	Passepartout/App/macOS/fastlane/metadata/nl-NL/release_notes.txt
#	Passepartout/App/macOS/fastlane/metadata/pl/release_notes.txt
#	Passepartout/App/macOS/fastlane/metadata/pt-BR/release_notes.txt
#	Passepartout/App/macOS/fastlane/metadata/ru/release_notes.txt
#	Passepartout/App/macOS/fastlane/metadata/sv/release_notes.txt
#	Passepartout/Tunnel/Tunnel-iOS.entitlements
#	PassepartoutCore/Sources/PassepartoutConstants/AppConstants.swift
#	PassepartoutCore/Sources/PassepartoutConstants/GroupConstants.swift
#	PassepartoutCore/Sources/PassepartoutConstants/LocalProduct.swift
#	PassepartoutCore/Sources/PassepartoutCore/API
#	PassepartoutCore/Sources/PassepartoutCore/Model/ConnectionService+Migration.swift
#	PassepartoutCore/Sources/PassepartoutCore/Model/ProductManager.swift
#	PassepartoutCore/Tests/PassepartoutCoreTests/Resources/ConnectionService.json
#	Submodules/fastlane-ci-templates
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
refactoring Improves software architecture
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant