mirror of https://gerrit.osmocom.org/osmo-ci
Add one new job for building source packages and sending them to obs.osmocom.org. Trigger it from all master-* jobs. I've also considered adding one job per existing master job that would only update one package at a time (master-libosmocore-obs, master-osmo-bsc-obs, ...). With some additional development effort it should be possible, and it would make each individual master OBS job faster. But given that with the current implementation it only takes 20s to 30s for *all* packages if there are no changes, as it compares git remote HEAD with the version currently on OBS before starting to clone repositories and building the source packages (similar to Osmocom_OBS_latest_obs.osmocom.org), it didn't seem worth optimizing. Set concurrent to false as the triggers from master-builds will likely cause it to run multiple times in parallel otherwise. Related: https://jenkins.osmocom.org/jenkins/view/OBS/job/Osmocom_OBS_master_obs.osmocom.org/ Related: https://obs.osmocom.org/project/show/osmocom:master Related: OS#2385 Change-Id: I53a494f13f81ae837f2d362c54e1bdf13f121db3 |
||
---|---|---|
.. | ||
data | ||
lib | ||
README | ||
build_srcpkg.py | ||
update_obs_project.py |
README
Usage Example: Submitting source packages to Osmocom's OBS build server ======================================================================= I want to test changes to the packaging of osmo-hnbgw. They are committed on a private branch osmo-hnbgw.git:neels/pkg. I want to test this in my OBS "Home Project" called home:nhofmeyr:test. Here are the steps of what I do: OBS home project ---------------- Sign up / sign in to obs.osmocom.org and create the "test" project under the "Home Project" link (right next to the "Logout" link on the OBS web interface), so that https://obs.osmocom.org/project/show/home:nhofmeyr:test exists. Make sure I can list the project using the 'osc' tool. That requires an osc config file. Easiest is to let osc create one: $ osc -A https://obs.osmocom.org list home:nhofmeyr:test Username: nhofmeyr Password: ************ Select credentials manager: 4 Verify that it worked: $ osc list home:nhofmeyr:test libosmo-pfcp osmo-hnbgw FYI, the config file (oscrc) will look like this: [general] apiurl = https://obs.osmocom.org [https://obs.osmocom.org] user=nhofmeyr pass=*********** credentials_mgr_class=osc.credentials.PlaintextConfigFileCredentialsManager Publish patches in private branch --------------------------------- (Optional: bypassing gerrit.osmocom.org explained in next section below.) Push my private branch to Osmocom's git repository at gerrit.osmocom.org -- not submit for review, just push a private branch. Why is that? The obs scripts here potentially maim a git tree, so it uses a separate git clone, which is cloned from gerrit.osmocom.org. When my private branch is pushed there, I can trivially use it. cd ~/osmo-dev/src/osmo-hnbgw git push --set-upstream origin neels/pkg Optional: fetch from local git repos ------------------------------------ Instead of using gerrit.osmocom.org, I can change the config of a locally cached repository, so that the branch is fetched from my local working copy. That is useful if I want to avoid pushing my branch upstream. Create initial git clone in _cache/: cd ~/osmo-dev/src/osmo-ci/scripts/obs/ ./build_srcpkg.py osmo-hnbgw Set the 'origin' of the './_cache/osmo-hnbgw' git clone to my local working copy in '~/osmo-dev/src/osmo-hnbgw': git -C _cache/osmo-hnbgw remote set-url origin '~/osmo-dev/src/osmo-hnbgw' After this, no need to push to Osmocom's git, i just commit patches on my local branch in my git clone in '~/osmo-dev/src/osmo-hnbgw'. The obs script will fetch my local branch, known as 'origin/neels/pkg' in its cached git tree. Verify: $ git -C _cache/osmo-hnbgw remote -v origin ~/osmo-dev/src/osmo-hnbgw (fetch) origin ~/osmo-dev/src/osmo-hnbgw (push) Build and upload source package to OBS -------------------------------------- cd ~/osmo-dev/src/osmo-ci/scripts/obs/ ./update_obs_project.py -b neels/pkg home:nhofmeyr:test osmo-hnbgw The -b option chooses a custom branch to build. See results ----------- I can now see my hnbgw package listed: $ osc list home:nhofmeyr:test libosmo-pfcp osmo-hnbgw I could query things via the osc tool: $ osc results home:nhofmeyr:test osmo-hnbgw neels_test2 x86_64 unresolvable neels_test x86_64 failed Or point my web browser at https://obs.osmocom.org/project/show/home:nhofmeyr:test Repeat ------ The dev cycle of rebuilding a change is: * Commit changes on private branch (and push to Osmocom's git server if necessary), * Re-run './update_obs_project.py -g -b origin/...' as above.