GSoC 2020 Final Progress Report: Dashboard for Packit (Fedora Project)

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 RequestMerged On
#433 Control packit-service with the command embedded in a comment3 March 2020
#443 Store the date/time of triggering new copr build5 March 2020
#474 Fix valueerror when no-action-needed PR comment is followed by a space9 March 2020
#479 Rewrite the copr-builds part of the API using PostgresSQL instead of Redis13 March 2020
#493 Fix error in API when old data exists17 March 2020
#501 Move Whitelist from Redis to Postgres20 March 2020
#521 Minor API Bugfixes26 March 2020
#534 Log Package Versions7 April 2020
#561 Optionally Disable Sentry16 April 2020
#567 Tests for the API and other changes20 April 2020
#674 Merge chroots and do pagination (API) in SQL instead of python15 June 2020
#678 Add API endpoint for fetching testing farm results16 June 2020
#690 Add CORS Headers to the API18 June 2020
#707 Use thread-local sqlalchemy session30 June 2020
#716 Add project based endpoints to the API10 July 2020
#746 Add /api/project/…/branches endpoint22 July 2020
#748 Revert JobTriggerModel.get(…)23 July 2020
#754 Misc API Changes1 Aug 2020
#766 Use integer response code values6 Aug 2020
#768 Link SRPMBuildModel to JobTriggerModel11 Aug 2020
#775 Add /api/srpm-builds endpoint13 Aug 2020
#788 Fix crash in /api/srpm-builds if job trigger doesnt exist25 Aug 2020
#791 Make the koji builds endpoint more consistent with the copr endpointWIP

Packit Dashboard

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

Pull RequestMerged On
#9 Add Copr Builds to the dashboard25 Feb 2020
#20 Display a list of projects instead of the raw python object5 March 2020
#24 Modularize project with flask blueprints6 March 2020
#25 Add unit tests, make a dockerfile for running tests, and modify makefile to run them16 March 2020
#39 Basic react, webpack, flask setup and deployment scripts16 June 2020
#43 Jobs Page26 June 2020
#44 Cache API requests and wait before retryingDiscarded because we found a better solution
#46 Projects and related views22 July 2020
#49 Unrelated Misc Changes1 Aug 2020
#51 Replace hardcoded URL with env var API URL28 July 2020
#55 View SRPM Builds, improved search, PR Links, icons, more26 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.


Last modified on 2020-08-29