-
Notifications
You must be signed in to change notification settings - Fork 461
OBS Major Release HOWTO
- Create a new branch for the release, eg. '2.9'
- Protect the git version branch
- Go to the 'Settings' tab
- Select 'Branches' from the list menu
- Choose the newly created branch
- Enable the 'Protect this branch' checkbox and save
- Commit the changes to the git version branch
- Add a new ReleaseNotes-$VERSION file in the root of the git version branch
- Go to the hakiri configuration page
- Click on 'Follow Branch' button for the newly, created branch.
-
Get our stable project meta example.
wget https://raw.githubusercontent.com/openSUSE/open-build-service/master/dist/stable_project_meta.xml.example -
Adapt the example file. Basically replace
$VERSIONwith the major version and check that the openSUSE/SLE versions it builds against are the latest ones. -
Create the project using the meta file
osc meta prj -e OBS:Server:$VERSION:Staging -F stable_project_meta.xml.example
-
Get our staging project meta example.
wget https://raw.githubusercontent.com/openSUSE/open-build-service/master/dist/staging_project_meta.xml.example -
Adapt the example file. Basically replace
$VERSIONwith the major version and check that the openSUSE/SLE versions it builds against are the latest ones. -
Create the project using the meta file
osc meta prj -e OBS:Server:$VERSION:Staging -F staging_project_meta.xml.example -
Copy the prjconf file from OBS:Server:Unstable and apply the needed modification
osc meta prjconf OBS:Server:Unstable > prjconf_$VERSION -
Apply the current prjconf
osc meta prjconf OBS:Server:$VERSION:Staging -F prjconf_$VERSION -
Adjust the project conf, eg. remove checks for repositories and architectures we don't support in our stable release.
-
Update the project description to reflect that this is a development project (or an alpha/beta release):
This is the development version 2.9 of OBS.
-
At least we will need the following packages to build obs-server correctly
deltarpm libarchive libmemcached memcached perl-BSSolv perl-Devel-Cover perl-common-sense perl-Diff-LibXDiff perl-File-Sync perl-GD perl-JSON-XS perl-Socket-MsgHdr phantomjs containment-rpm-docker obs-signd createrepo build ruby-common ruby2.4 rubygem-bundler rubygem-gem2rpm rubygem-hoe rubygem-rake-compiler yum sphinx travis-deps nodejs obs-server
-
Copy those packages from
Unstableosc copypac OBS:Server:Unstable $PACKAGE OBS:Server:$VERSION:Staging
-
Checkout obs-server package to have it locally
osc co OBS:Server:$VERSION:Staging obs-server -
Change the
versionformatandrevisioninside the _service file to $VERSION<service name="obs_scm" mode="disabled"> <param name="versionformat">$VERSION~pre.git%cd.%h</param> <param name="revision">$VERSION</param> ... </service>
-
Copy the changelog file from the previous version. So for example, for 2.9 we use 2.8:
osc cat OBS:Server:2.8 obs-server obs-server.changes > obs-server.changes osc addremove -
Create a changelog entry from the ReleaseNotes-$VERSION file:
osc vc obs-server.changes -
Check in the changes and make it build
osc ci osc r -v OBS:Server:$VERSION:Staging obs-server
-
Get an list of rubygem package dependencies:
docker-compose run --rm --no-deps frontend script/rubygem_package_names.rb > rubygem_dependencies.txt -
Use that list to copy those dependencies from the Unstable project:
for PACKAGE in `cat rubygem_dependencies.txt`; do osc copypac OBS:Server:Unstable $PACKAGE OBS:Server:$VERSION:Staging; done
-
At least we will need the following packages, and its dependencies, to build obs-server correctly:
OBS-Appliance OBS-Appliance-docker OBS-Appliance-qcow2 OBS-Appliance-vdi OBS-Appliance-vmdk apache2-mod_xforward changelog-generator-data rubygem-passenger rubygem-changelog-generator -
Copy the appliance packages from
Unstable:osc copypac OBS:Server:Unstable $PACKAGE OBS:Server:$VERSION:Staging
-
Checkout the
OBS-Appliancepackage:osc co OBS:Server:$VERSION:Staging OBS-Appliance -
Set the version tag inside the
OBS-Appliance.kiwifile to$VERSION:<version>$VERSION</version> -
Set the version in the repository section inside the
config.shfile with the correct$VERSION:#====================================== # Add Default Repositories #-------------------------------------- zypper ar http://download.opensuse.org/distribution/leap/42.3/repo/oss/ openSUSE:Leap:42.3 ... zypper ar http://download.opensuse.org/repositories/OBS:/Server:/$VERSION/openSUSE_42.3/ OBS:Server:$VERSION
-
Check in the changes and make it build:
osc ci osc r -v OBS:Server:$VERSION:Staging OBS-Appliance
- Add a new "Medium type" in openqa.opensuse.org with the name of the new version. You need admin rigths in openQA. For example, for version 2.9:
Distri Version Flavor Arch Settings Actions obs 2.9 Appliance x86_64 - Add a new line to (or adjust) the dist/schedule-obs.sh script with the new version to be tested. Have a look at openQA-Setup for locating the script.
-
Release the staging project with
osc release OBS:Server:$VERSION:Staging- Wait until the staging project gets released.
-
Write a mail like this to our public mailing list.
-
Consider writing a blog post on our blog.
-
Tag the released code. Add a
-betasuffix for beta releases.git fetch upstream git checkout upstream/$VERSION git tag -a $NEW_VERSION git push upstream $VERSION --tags
- Development Environment Overview
- Development Environment Tips & Tricks
- Spec-Tips
- Code Style
- Rubocop
- Testing with VCR
- Test in kanku
- Authentication
- Authorization
- Autocomplete
- BS Requests
- Events
- ProjectLog
- Notifications
- Feature Toggles
- Build Results
- Attrib classes
- Flags
- The BackendPackage Cache
- Maintenance classes
- Cloud uploader
- Delayed Jobs
- Staging Workflow
- StatusHistory
- OBS API
- Owner Search
- Search
- Links
- Distributions
- Repository
- Data Migrations
- Package Versions
- next_rails
- Ruby Update
- Rails Profiling
- Remote Pairing Setup Guide
- Factory Dashboard
- osc
- Setup an OBS Development Environment on macOS
- Run OpenQA smoketest locally
- Responsive Guidelines
- Importing database dumps
- Problem Statement & Solution
- Kickoff New Stuff
- New Swagger API doc
- Documentation and Communication
- GitHub Actions
- Brakeman
- How to Introduce Software Design Patterns
- Query Objects
- Services
- View Components
- RFC: Core Components
- RFC: Decorator Pattern
- RFC: Backend models
- RFC: Hotwire Turbo Frames Pattern