rpkg-ci

Created 6 years ago
Maintained by cqi
Scripts for making release of rpkg and fedpkg
Members 1
Chenxiong Qi committed 5 years ago

rpkg-ci scripts

This repository contains a few scripts used for making new release of both rpkg and fedpkg.

Here gives a brief introduction of what each script does. Passing -h or --help to get help from each script.

  • git-changelog: generate a changelog from project repository. This script must run under project root directory.
  • prepare-release.sh: prepare a new release, which bumps version in setup.py and insert changelog into CHANGELOG.rst.
  • make-release-sdist-wheel: make sdist and wheel packages for release.
  • start_official_build.sh: start to build packages in Koji after new release package PR is merged.
  • local-mockbuild-rpkg-and-test-install.py: local mockbuild on rawhide, all EPEL branches and supported Fedora release branches, then test installation.
  • local-mockbuild-fedpkg-and-test-install.py: local mockbuild on rawhide, all EPEL branches and supported Fedora release branches, then test installation.
  • mock-sources.sh: utility to generate sources content. It does not modify sources file directly. Output from this script should be redirected to sources file.
  • overrides-rpkg.sh: create rpkg overrides for building fedpkg packages. This is required when release rpkg and fedpkg together.
  • mockchain-build.sh: build rpkg and fedpkg in chain.

Prerequisite

  • FAS account.
  • Public key is added to FAS account in order to push package repository changes.
  • kinit [fas username]@FEDORAPROJECT.ORG for uploading sources files and build packages in Koji.
  • For local testing, Fedora staging Kerberos ticket is required by running kinit [fas username]@STG.FEDORAPROJECT.ORG.

Checklist for a release

  • [ ] Ensure all requires pull requests are merged and local master branch tracks the top HEAD.
  • [ ] Prepare a release. Script: prepare-release.sh.
  • [ ] Update release notes.
  • [ ] Update SPEC file.
  • [ ] Make a tarball from source code directory and mock sources inside package repository.
  • [ ] Build rpkg and fedpkg in chain locally. All supported Fedora and EPEL releases should be built. Script: start_official_build.
  • [ ] Run functional tests from directory functional-tests. Choose propery chain build result to run tests. Script: functional-tests-runner.py.
  • [ ] If all tests pass, create a release PR. Otherwise, fix the issue, make a PR and update release notes again after the fix is merged.

Following items will happen after release PR is merged.

  • [ ] Ensure local master branch tracks top HEAD.
  • [ ] Tag release inside source code repository. Scripts: tag-release.sh.
  • [ ] Make tarballs. Script: make-official-release-files.sh.
  • [ ] Push tags.
  • [ ] Upload tarball to Pagure releases directory.
  • [ ] Upload tarball and wheel packages to PyPI. Command: twine-3 upload --username username dist/release-version/*

Start to build packages in Koji.

  • [ ] Copy tarball to package repository.
  • [ ] Upload tarball to lookaside. Command: fedpkg new-sources tarball.
  • [ ] Make a package PR.
  • [ ] Verify package PR. Script: verify-distgit-pr.
  • [ ] Start to build package after merge. Script: start_official_build.
  • [ ] Tag package release inside package repository.

Build official packages

Note

fedpkg may need new release of rpkg. In this case, building rpkg and create override in Bodhi firstly, then continue to build fedpkg.

This should happen after package PR is merged.

To build rpkg, run python start_official_build.py rpkg.

To build fedpkg, then run python start_official_build.py fedpkg. If required rpkg packages haven't been pushed to Fedora repository, run overrides-rpkg.sh.