aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/obs/README
blob: 67d2a2b5157e9db94a14a7e569965581d2bfbbfb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
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.