Packit Release Guide: Ogr, Specfile, Requre Updates

by Alex Johnson 52 views

This guide outlines the process for releasing new versions of Packit and its related RPM-packaged projects. Follow these steps to ensure a smooth and consistent release process. This article provides a comprehensive guide to releasing Packit, along with its related components like OGR, specfile, and requre. By following the instructions, you'll ensure a smooth and well-coordinated release process. Let's dive in!

[!CAUTION] DO NOT release Packit ≥ 1.0.0 to any of the Fedora releases that have already reached stable status by the time of the 1.0.0 release. This means Packit CANNOT be released to any Fedora ≤ 41 and EPEL ≤ 9.

Checking for Worthwhile Changes

Before initiating a release, it's crucial to determine if there are significant changes in each project that warrant a new release. Here are the projects to examine:

Carefully review the commit history, merged pull requests, and any reported issues for each project. Focus on identifying bug fixes, new features, performance improvements, and security updates. Prioritize changes that have a substantial impact on users or address critical problems. If the changes are minor or primarily internal, consider postponing the release until more significant updates accumulate. Ensuring that each release delivers tangible value to users is vital for maintaining project momentum and user satisfaction. Also, consider the impact of these releases on other dependent projects and the broader ecosystem.

Key Considerations

  • Impact Analysis: Evaluate the potential impact of each change on existing users and systems. Identify any breaking changes or compatibility issues that may require special attention.
  • User Feedback: Review user feedback and bug reports to identify areas where improvements are most needed.
  • Security: Prioritize security fixes and address any known vulnerabilities promptly.
  • Performance: Assess the performance impact of new features and optimizations.
  • Dependencies: Check for updates to dependencies and ensure compatibility with the latest versions.

Step-by-Step Release Process

[!NOTE] Packit is used as an example package below.

  1. Pending Updates: Before creating new releases, ensure that any pending updates have reached stable status in Bodhi. If not, request karma from team members and wait for the updates to propagate. This step is crucial to avoid conflicts and ensure consistency across different Fedora releases and EPEL.

  2. Prepare a New Release Workflow:

    • Run the Prepare a new release workflow by clicking the Run workflow button.
    • Choose the main branch.
    • Enter the correct version number for the new release.
    • This action will create a pull request in the repository.

    This workflow automates several tasks, including updating the version number in relevant files, generating changelogs, and preparing the release environment. By automating these steps, the workflow reduces the risk of human error and ensures that the release process is consistent and repeatable. Also, the pull request generated by the workflow provides a centralized location for reviewing and discussing the changes included in the release. Team members can collaborate on the pull request to identify potential issues, suggest improvements, and ensure that the release meets the required quality standards.

  3. Review the Pull Request: Carefully review the created pull request. Pay close attention to the changelog for grammar and accuracy. If needed, ask other team members for assistance. You can check out the PR locally, update it, and push the changes back to the upstream repository.

    • If the Check release notes required check doesn't run, force-push or edit the PR description to trigger it.
  4. Merge the Pull Request: Once you are satisfied with the content and there are no pending review requests, merge the pull request. Merging the pull request signals that the changes have been approved and are ready to be included in the release.

  5. Publish the Release:

    • Merging the PR triggers an action that creates a draft release in the releases list.
    • Edit the release to ensure the content is correct.
    • Publish the release by clicking Publish release.
  6. Verify PyPI Upload: Ensure that the package is uploaded to PyPI. This step makes the package available to Python developers and users who rely on PyPI for package management. Once the package is uploaded to PyPI, it can be easily installed using the pip package manager. Regular updates and releases on PyPI are essential for maintaining a healthy and active Python ecosystem.

[!CAUTION] Do not merge dist-git PRs for Packit project and older releases (F40, F41, EPEL9); they are opened due to this bug.

  1. Dist-Git Pull Requests: Wait a few minutes, then check and merge PRs in dist-git created by Packit.

    • Verify that both services proposed the same set of changes.
    • Merge those created by the stage instance via pull_from_upstream (this will automatically close the Bugzilla from Upstream Release Monitoring).
    • Close those created by the production instance and the production pull_from_upstream.

    The use of both staging and production instances ensures a robust and reliable release process. By first testing the changes in a staging environment, potential issues can be identified and resolved before they impact the production environment. This approach reduces the risk of introducing bugs or regressions into the live system. Also, the automated Bugzilla closure streamlines the release process and reduces the manual effort required to track and manage bug reports. This automation helps to improve the efficiency of the release process and ensures that bug reports are properly addressed.

  2. Sidetag Updates: If you haven't released all three packages, ensure that our sidetag has up-to-date builds for all our packages. Comment /packit-stg koji-tag --all-branches in any dist-git pull request of any package that hasn't been released to satisfy dependencies. This will bring the latest builds of each package into the sidetag. Once all three are updated, it will trigger a Koji build of packit and/or a Bodhi update: https://dashboard.stg.packit.dev/jobs/koji-tag-requests.

    • For example, if you are only releasing ogr, you need to comment once in a packit and a specfile dist-git PR.

    The sidetag serves as an integration environment where the packages can be tested together before being released to the main repositories. By ensuring that all packages are up-to-date in the sidetag, potential dependency issues can be identified and resolved before they impact users. This approach helps to improve the overall quality and stability of the released packages. Also, the automated triggering of Koji builds and Bodhi updates streamlines the release process and ensures that the packages are built and distributed in a timely manner.

  3. Verify Koji Builds: Wait a few minutes and verify that RPMs are built in Koji:

    Koji is the build system used by Fedora to build RPM packages from source code. Verifying that the RPMs are built in Koji ensures that the packages have been successfully built and are ready to be distributed to users. This step is crucial for ensuring the quality and integrity of the released packages. Also, Koji provides a centralized location for tracking the build status of packages and identifying any build failures or errors.

  4. Verify Bodhi Updates: Wait a bit and verify that updates have been created in Bodhi. Bodhi is the updates system used by Fedora to manage and distribute updates to users. Verifying that updates have been created in Bodhi ensures that the released packages are available to users through the Fedora updates system. This step is essential for ensuring that users receive the latest bug fixes, security updates, and new features. Also, Bodhi provides a centralized location for tracking the status of updates and managing user feedback.

  5. Celebrate! Celebrate another successful release! 🚀🎉

Summary

Releasing Packit and its related projects involves careful preparation, thorough review, and precise execution. Following this guide ensures a consistent and reliable release process. Each step, from verifying pending updates to celebrating the successful release, plays a crucial role in delivering high-quality software to the community. Regularly reviewing and refining this process will further enhance its efficiency and effectiveness. This comprehensive approach not only benefits the development team but also ensures that users receive timely and reliable updates.

By adhering to these guidelines, you contribute to the stability and improvement of the Packit ecosystem. Remember to communicate effectively with team members and the community throughout the release process. This collaborative approach fosters transparency and ensures that everyone is informed and aligned. Ultimately, a well-executed release process reflects positively on the project's reputation and fosters trust among users.

For more information on agile methodologies, check out this Agile Alliance link.