osmo-ci/scripts/obs
Neels Hofmeyr cf0d92ff21 obs/lib/config.py: add osmo-upf
Depends: libosmo-pfcp 0.1.2 I6ae6cf59e769214e11447107316d38fe5fad583d
Depends: osmo-upf 0.1.1 I1d73255f8cc30feabd3c251bdc3af1682ed4694a
Change-Id: Ia65508eaf241b799b5d4b1b81eebdeaa40f4381e
2022-08-24 16:58:42 +02:00
..
data scripts/obs: rewrite pushing source pkgs to OBS 2022-08-01 16:29:20 +02:00
lib obs/lib/config.py: add osmo-upf 2022-08-24 16:58:42 +02:00
README obs: prepend origin/ to branch selected with -b 2022-08-18 13:18:25 +00:00
build_srcpkg.py obs: add explicit --git-branch arg 2022-08-17 15:32:07 +02:00
update_obs_project.py obs: add explicit --git-branch arg 2022-08-17 15:32:07 +02:00

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 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.