Dashboard for Packit

Project Recap

  • Packit-as-a-Service is an installable app for git forges like GitHub, Pagure, etc that helps developers continuously ensure that their project works in Fedora.
  • Packit Service validates pull requests by building that project in Fedora so that others can install and test those built rpms before merging.
  • My task was to build/expand the API for Packit Service, use that API to build a dashboard, write deployment scripts and make tests.
  • Stack: Python, Flask, PostgreSQL, SQLAlchemy/Alembic, JavaScript, React, Containers, Ansible, OpenShift.

Packit Service

API deployed at prod.packit.dev/api

Pull Request Merged On
#433 Control packit-service with the command embedded in a comment 3 March 2020
#443 Store the date/time of triggering new copr build 5 March 2020
#474 Fix valueerror when no-action-needed PR comment is followed by a space 9 March 2020
#479 Rewrite the copr-builds part of the API using PostgresSQL instead of Redis 13 March 2020
#493 Fix error in API when old data exists 17 March 2020
#501 Move Whitelist from Redis to Postgres 20 March 2020
#521 Minor API Bugfixes 26 March 2020
#534 Log Package Versions 7 April 2020
#561 Optionally Disable Sentry 16 April 2020
#567 Tests for the API and other changes 20 April 2020
#674 Merge chroots and do pagination (API) in SQL instead of python 15 June 2020
#678 Add API endpoint for fetching testing farm results 16 June 2020
#690 Add CORS Headers to the API 18 June 2020
#707 Use thread-local sqlalchemy session 30 June 2020
#716 Add project based endpoints to the API 10 July 2020
#746 Add /api/project/…/branches endpoint 22 July 2020
#748 Revert JobTriggerModel.get(…) 23 July 2020
#754 Misc API Changes 1 Aug 2020
#766 Use integer response code values 6 Aug 2020
#768 Link SRPMBuildModel to JobTriggerModel 11 Aug 2020
#775 Add /api/srpm-builds endpoint 13 Aug 2020
#788 Fix crash in /api/srpm-builds if job trigger doesnt exist 25 Aug 2020
#791 Make the koji builds endpoint more consistent with the copr endpoint WIP

Packit Dashboard

Older version (from 3 Aug 2020 as on 29 Aug 2020) deployed at dashboard.packit.dev

Pull Request Merged On
#9 Add Copr Builds to the dashboard 25 Feb 2020
#20 Display a list of projects instead of the raw python object 5 March 2020
#24 Modularize project with flask blueprints 6 March 2020
#25 Add unit tests, make a dockerfile for running tests, and modify makefile to run them 16 March 2020
#39 Basic react, webpack, flask setup and deployment scripts 16 June 2020
#43 Jobs Page 26 June 2020
#44 Cache API requests and wait before retrying Discarded because we found a better solution
#46 Projects and related views 22 July 2020
#49 Unrelated Misc Changes 1 Aug 2020
#51 Replace hardcoded URL with env var API URL 28 July 2020
#55 View SRPM Builds, improved search, PR Links, icons, more 26 Aug 2020

Events

  • Nest with Fedora (7 Aug - 9 Aug) - Fedora’ s annual conference Flock could not be conducted due to COVID 19 this year so it was replaced by a virtual conference called Nest. I attended multiple sessions and workshops. I also spoke at and interacted with the other Fedora interns at the Social Hour with Fedora Summer Coding Interns session.
  • Call with the Fedora Council (13 Aug) - I gave a presentation about my summer project to the Fedora Council and saw the projects of the other GSoC/Outreachy interns.

Blog Posts

Takeaways

  • Tests are very important.
  • Good commit messages.
  • Working with a team on a real world project.
  • Better programming practices.

Conclusion

I’m really happy that I contributed to Fedora this summer. As always, the Fedora community is awesome and I’d love to part of the community even after GSoC. I’d like to thank Hunor Csomortáni, Tomas Tomecek, František Lachman, Jiri Popelka and the rest of the Packit team for all the help and support they’ve provided me. And thank you Vipul, Sumantro and Marie for organizing great events.