Overview#

This page describes the process to release nuxwdog on Fedora.

A simple and neat workflow for this process would be:

  1. Commit changes locally on the local upstream (github) repo

  2. Tagging upstream repo locally

  3. Generate source tarball using git (rather than tar)

  4. Importing into fedpkg using fedpkg new-sources

  5. Committing the source package repo

  6. Building in COPR (testing)

  7. Push to upstream (github) repo

  8. Tag upstream (github) repo

  9. Push changes to source package repo

  10. Create koji build

  11. Tag source package repo

  12. Submit for bodhi update (if required)

  13. Make a GH release

Authentication#

Obtain a Kerberos ticket for FEDORAPROJECT.ORG account and COPR authentication token.

Getting Source Package#

The repository for nuxwdog source package for Fedora is located at https://src.fedoraproject.org/rpms/nuxwdog. To clone the repository locally:

$ fedpkg clone nuxwdog
$ cd nuxwdog

The repository can be forked for development. To add the fork into the local repository:

$ git remote add ``\ `` ``\ ```ssh:// <ssh://>`__@pkgs.fedoraproject.org/forks//rpms/nuxwdog.git
``$ git fetch ``

Updating Version and Release Numbers#

Follow this guideline to update the version number, release number, and phase in the spec template:

  • version: ..

  • release: 0.1, 0.2, …, 1, 2, …

  • phase: a1, a2, …, b1, b2, …

For pre-releases, set the version number to ..0, set the release number to 0., and phase to -:

Version:        1.0.0
Release:        0.1%{?_timestamp}%{?_commit_id}%{?dist}
%global         _phase -a1

For initial release, keep the version number as ..0, set the release number to 1, and comment out the phase:

Version:        1.0.0
Release:        1%{?_timestamp}%{?_commit_id}%{?dist}
# %global       _phase -a1

For upstream updates (i.e. upstream bug fixes), increment the in the version number, set the release number to 1:

Version:        1.0.1
Release:        1%{?_timestamp}%{?_commit_id}%{?dist}
# %global       _phase -a1

For downstream patches (e.g. platform-specific patches), keep the version number as .., increment the release number:

Version:        1.0.1
Release:        2%{?_timestamp}%{?_commit_id}%{?dist}
# %global       _phase -a1

See also:

Merging Spec Changes#

To merge the spec template with the actual spec files:

$ meld ``\ ``nuxwdog/nuxwdog.spec ``\ ``Fedora/nuxwdog/nuxwdog.spec

In the actual spec files, add a change log entry for the new release in downstream spec file (unless there is one already that has not been released):

* Tue May 29 2018 Dogtag PKI Team <pki-devel@redhat.com> - 1.0.4-1
- Rebased to Nuxwdog 1.0.4

Notes:

  • Do not override changes that were done downstream unless they were done improperly.

  • Do not add a change log entry in the upstream spec template.

  • There might be changes that cannot be merged. This is OK.

Commit Upstream Changes#

Commit all changes to upstream:

$ git commit -a -m "Updated version number to x.y.z-r"

Create a local tag with the following commands:

$ git tag v1.0.4

For pre-releases, append the phase name to the version number, e.g. v1.0.4-a1.

Update Source Tarball#

Generate a tarball with the following commands:

$ cd ``\ ``nuxwdog
$ git -C . archive --format=tar.gz --prefix nuxwdog-`` -o nuxwdog-\ ``.tar.gz v-

Import the source tarball with the following commands:

$ cd ``\ ``Fedora/nuxwdog
$ fedpkg new-sources ``\ ``nuxwdog/release/dist/rpmpkg/SOURCES/nuxwdog-1.0.4.tar.gz

Then verify with the following commands:

$ fedpkg local
$ fedpkg lint

Creating Test Build#

Create a COPR build with the following command:

$ cd ``\ ``Fedora/nuxwdog
$ fedpkg copr-build ``\ ``/`` –nowait``

or create a scratch build (testing in Koji) with the following commands:

  • If you have updated sources using the above command fedpkg new-sources, then skip this step

$ cp ``\ ``nuxwdog/release/dist/rpmpkg/SOURCES/nuxwdog-1.0.4.tar.gz

Generate source rpm (srpm):

$ fedpkg srpm
$ fedpkg scratch-build --nowait --srpm nuxwdog-1.0.4-2.fc29.src.rpm

Once the test build is complete, push the changes and tag upstream:

$ cd ``\ ``nuxwdog
$ git push origin master
$ git push origin v1.0.4

Koji Release#

Commit Source Package Changes#

Commit the changes to master (i.e. rawhide):

$ cd ``\ ``Fedora/nuxwdog
$ git commit -m "Rebased to nuxwdog 1.0.4"
$ git push origin master

Creating Koji Build for Rawhide#

Create an official Koji build:

$ cd ``\ ``Fedora/nuxwdog
$ fedpkg build --nowait

If necessary, the task can be monitored with the following command:

``$ koji watch-task ``

Once the build is complete, tag the source package repository:

$ git tag nuxwdog-1.0.4-2.fc29
$ git push origin nuxwdog-1.0.4-2.fc29

Creating GitHub Release#

Go to dogtagpki/nuxwdog and draft a new release (if required).

Include links to the new releases: