summaryrefslogtreecommitdiffstats
path: root/docs/release-instructions.txt
blob: e3c43f744a1c6e92f71231fb7c67eb0e09f63f3f (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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
# Work in progress...

A note on mock versions: 

  There are now two main branches to be aware of:
  	- mock-1.0 (pre-F13 and EPEL5)
	- mock-1.1+ (F-13+ and EPEL6+)
  In the upstream git tree, mock-1.0 is tracked on the branch origin/mock-1.0,
  while mock-1.1+ is in the master branch. Please be careful when
  updating the various distro to use the correct branch and version
  number when generating tarfiles for RPM generation.

Note that we've now switched over to using git for the package
repositories (as opposed to the old CVS repositories). To make use of
the new format, you must install the fedora-packager package and clone
the mock package repository:

    $ sudo yum install fedora-packager
    $ fedpkg clone mock
    $ mv mock mock-fedora.git

The last step is not strictly required, but I do it to keep from
confusing the package repository with the upstream (source) repository

=====================================================================

Release checklist overview:

   1) upstream git tree: pull, merge, checkin, tag and push
   2) koji git tree: for each release: checkin tarball and spec, kick off builds
   3) bodhi: schedule releases

=====================================================================
For a mock 1.1+ release

In the upstream git tree:

   0) fetch updates from origin and fast forward your local master
      $ git fetch origin
      $ git checkout master
      $ git merge origin/master
   1) create a branch from master (e.g. 'prerelease') and switch to it
      $ git branch prelease master
      $ git checkout prerelease
   2) fetch remotes and merge remote updates
      $ git fetch jkeating
      $ git merge jkeating/updates-for-clark
   3) merge any local branch work and reolve any conflicts
      $ git merge work
   4) update configure.ac with new version info (don't commit yet)
   5) update the %changelog section of mock.spec.in
   6) run 'autogen.sh' to update autoconf files
   7) run 'configure' to generate Makefile and mock.spec
   8) run 'make rpm' to generate binary RPM and propagate version
      changes (Note this also generates a tar file for use later).
   9) verify that docs/runtests.sh uses a supported config file
      (i.e. released fedora minus one). If not, edit and commit
  10) run 'make check' and fix any reported failures until it passes
  11) check in any changes from above
  12) remove ChangeLog and AUTHORS
  13) run 'make dist' to generate ChangeLog and AUTHORS files
  14) commit configure.ac and any other changes with a
      version bump message:
     $ git commit -m 'version bump' configure.ac
  15) tag the git tree:
     $ git tag -u <your key> mock-<version>
  16) checkout master and merge your work directory:
      $ git checkout master
      $ git merge prerelease
  16) push to main git repo (only from master branch):
     $ git push --tags origin master  

In the fedora git (koji) tree

   1) cd to the previously cloned mock package repository
       $ cd ../mock-fedora.git
   2) upload the new source tarball from the upstream git tree
       $ fedpkg new-sources ../mock.git/mock-1.1.3.tar.gz
   3) copy in the new specfile that matches the tarball
       $ cp ../mock.git/mock.spec .
   4) create a clog from the new specfile
       $ fedpkg clog
   5) commit and push the new sources
       $ fedpkg commit -F clog -p
   6) initiate a koji build
       $ fedpkg build --notwait
   7) switch branches to the latest released fedora
       $ fedpkg switch-branch f14
   8) repeat steps 2 through 6 for the new branch
   9) repeat for all supported fedora releases and EPEL releases
      (e.g. f14, f13, el6)

At this point you should push the just built packages to their
respective testing repositories. This can be done either with the
Bodhi WebUI at https://admin.fedoraproject.org/updates/ or if there
are no other package dependencies, using the 'make update' target of
the CVS Makefile. Note that you do not need to do this for the devel
branch since it automatically gets pushed to testing.

=====================================================================
For a mock 1.0 release

In the git tree:

   0) fetch updates from origin and fast forward your local mock-1.0
      $ git fetch origin
      $ git checkout mock-1.0
      $ git merge origin/mock-1.0
   1) create a branch from mock-1.0 (e.g. 'prerelease') and switch to it
      $ git branch prelease mock-1.0
      $ git checkout prerelease
   2) fetch remotes and merge remote updates
      $ git fetch jkeating
      $ git merge jkeating/mock-1.0-updates
   3) merge any local branch work and reolve any conflicts
      $ git merge work
   4) update configure.ac with new version info (don't commit yet)
   5) update the %changelog section of mock.spec.in
   6) run 'autogen.sh' to update autoconf files
   7) run 'configure' to generate Makefile and mock.spec
   8) run 'make rpm' to generate binary RPM and propagate version
      changes (Note this also generates a tar file for use later).
   9) verify that docs/runtests.sh uses a supported config file
      (i.e. epel5 or F11/F12). If not, edit and commit
  10) run 'make check' and fix any reported failures until it passes
  11) check in any changes from above
  12) remove ChangeLog and AUTHORS
  13) run 'make dist' to generate ChangeLog and AUTHORS files
  14) commit configure.ac and any other changes with a
      version bump message:
     $ git commit -m 'version bump' configure.ac
  15) tag the git tree:
     $ git tag -u <your key> mock-<version>
  16) checkout master and merge your work directory:
      $ git checkout master
      $ git merge prerelease
  16) push to main git repo (only from master branch):
     $ git push --tags origin master  

In the fedora git (koji) tree

    1) cd to the previously cloned mock package repository
       $ cd mock-fedora.git
    2) switch to the EPEL5 branch
       $ fedpkg switch-branch el5
    3) install a new tarball from the upstream git tree
       $ fedpkg new-source ../mock.git/mock-1.0.9.tar.gz
    4) copy the matching specfile
       $ cp ../mock.git/mock.spec .
    5) create a changelong entry file (clog)
       $ fedpkg clog
    6) commit and push the new tarball and specfile
       $ fedpkg commit -F clog -p
    7) initiate a koji build
       $ fedpkg build --nowait