mirror of https://gerrit.osmocom.org/osmo-ci
142 lines
4.3 KiB
Plaintext
142 lines
4.3 KiB
Plaintext
Overview
|
|
========
|
|
This directory contains the following scripts, related to building Osmocom
|
|
projects in OBS (Open Build Service) and building binary packages. Here is an
|
|
overview of the scripts, run them with -h to get a more detailed description.
|
|
|
|
* build_srcpkg.py: build one source package for an Osmocom project
|
|
* update_obs_project.py: generate source packages and upload them to OBS
|
|
* build_binpkg.py: build rpm/deb packages for one Osmocom project
|
|
* sync_obs_projects.py: sync projects from another instance (OS#6165)
|
|
|
|
Docker
|
|
------
|
|
The above scripts have a -d parameter, that allows running them inside docker.
|
|
This is how we run it in jenkins to avoid installing dependencies on the host.
|
|
|
|
Note that when building binary packages, libosmocore socket tests and possibly
|
|
others will fail unless docker has ipv6 configured:
|
|
https://osmocom.org/issues/4700#note-3
|
|
|
|
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.
|