CSC/ECE 517 Fall 2023 - G2352. Add GitLab support for using GraphQL to query repository information: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
Line 2: Line 2:


__TOC__
__TOC__
== GitLab ==
GitLab is more than just a version control system; it's your collaborative platform for the entire DevOps lifecycle. Imagine a centralized space where your team can seamlessly collaborate on code, manage projects, automate workflows, and deploy applications—all within a single application. GitLab makes this vision a reality. It serves as an integrated platform that hosts your source code repositories while offering a plethora of tools for project management, continuous integration (CI), and continuous delivery (CD). It's not just a version control system; it's your all-in-one solution for turning ideas into code and code into robust, scalable applications.


== Introduction ==
=== Key features ===
# Version Control System (VCS):GitLab provides a powerful and user-friendly version control system based on Git. It enables teams to manage and track changes to their codebase efficiently. Developers can collaborate seamlessly, branching and merging with ease.
# Issue Tracking and Project Management: GitLab's project management tools go beyond just code. You can track issues, plan sprints, and manage your entire project's lifecycle in a centralized space. This simplifies collaboration, ensuring everyone is on the same page from ideation to deployment.
# Integrated CI/CD: One of GitLab's standout features is its integrated Continuous Integration and Continuous Delivery capabilities. With built-in CI/CD pipelines, you can automate testing and deployment, ensuring that your applications are always in a deployable state.
# Code Review and Collaboration: Facilitate collaboration among your team members with GitLab's robust code review features. Conduct efficient peer reviews, comment on specific lines of code, and ensure the quality of your codebase before merging changes.
# Container Registry: GitLab includes a built-in container registry, allowing you to store, manage, and deploy Docker images directly from your GitLab instance. This streamlines the process of building and deploying containerized applications.
# Collaboration and Transparency: GitLab promotes collaboration and transparency by providing a centralized hub for your development efforts. Teams can communicate, contribute, and track progress within the same environment. The platform's open and accessible nature fosters a culture of openness and inclusivity.
# Community and Documentation: The GitLab community is vibrant and diverse. From beginners to seasoned developers, everyone can find resources, ask questions, and contribute to the platform's improvement. Extensive documentation and guides make it easy for users to get started and make the most of GitLab's features.
 
In essence, GitLab isn't just a tool; it's a platform that empowers teams to streamline their development processes. It unifies version control, project management, CI/CD, and more, offering a comprehensive solution for modern software development. With GitLab, your team can transform ideas into reality, collaborating efficiently at every step of the development journey.
 
== GraphQL ==
GraphQL is a revolutionary query language for APIs that challenges the traditional RESTful approach to fetching and updating data. Developed by Facebook, GraphQL provides a more efficient and flexible alternative for building APIs. Unlike REST, where clients often receive more data than needed, GraphQL allows clients to specify the exact data requirements, minimizing over-fetching and under-fetching issues. This adaptability makes GraphQL a powerful tool for developers seeking a more precise and streamlined approach to data retrieval.
 
At the heart of GraphQL is its schema and query language. The schema defines the types of data that can be queried and the relationships between them. Clients can then send queries to the GraphQL server, specifying the exact data they need. This level of granularity not only enhances performance but also simplifies the development process. Additionally, GraphQL supports real-time data with subscriptions, enabling applications to receive live updates as soon as data changes on the server.
 
At the heart of GraphQL is its schema and query language. The schema defines the types of data that can be queried and the relationships between them. Clients can then send queries to the GraphQL server, specifying the exact data they need. This level of granularity not only enhances performance but also simplifies the development process. Additionally, GraphQL supports real-time data with subscriptions, enabling applications to receive live updates as soon as data changes on the server.
 
== About the project ==
This project is dedicated to retrieving GitLab-specific data associated with a user by their project. Our objective was to fetch a comprehensive array of user-related information, including:
This project is dedicated to retrieving GitLab-specific data associated with a user by their project. Our objective was to fetch a comprehensive array of user-related information, including:


Line 11: Line 31:


Our goal is to get a comprehensive picture of a user's contributions and activities inside the GitLab ecosystem by streamlining the extraction process and utilizing GitLab's robust GraphQL APIs.
Our goal is to get a comprehensive picture of a user's contributions and activities inside the GitLab ecosystem by streamlining the extraction process and utilizing GitLab's robust GraphQL APIs.


== Problem Statement==
== Problem Statement==
Line 18: Line 37:
* Find the corresponding parts from GitLab
* Find the corresponding parts from GitLab
* Develop GraphQL queries to query the same or similar information from GitLab with its GraphQL API.
* Develop GraphQL queries to query the same or similar information from GitLab with its GraphQL API.


== Design Pattern ==
== Design Pattern ==

Revision as of 18:28, 12 November 2023

This wiki page is for information regarding the changes made for the G2352. Add GitLab support for using GraphQL to query repository information.

GitLab

GitLab is more than just a version control system; it's your collaborative platform for the entire DevOps lifecycle. Imagine a centralized space where your team can seamlessly collaborate on code, manage projects, automate workflows, and deploy applications—all within a single application. GitLab makes this vision a reality. It serves as an integrated platform that hosts your source code repositories while offering a plethora of tools for project management, continuous integration (CI), and continuous delivery (CD). It's not just a version control system; it's your all-in-one solution for turning ideas into code and code into robust, scalable applications.

Key features

  1. Version Control System (VCS):GitLab provides a powerful and user-friendly version control system based on Git. It enables teams to manage and track changes to their codebase efficiently. Developers can collaborate seamlessly, branching and merging with ease.
  2. Issue Tracking and Project Management: GitLab's project management tools go beyond just code. You can track issues, plan sprints, and manage your entire project's lifecycle in a centralized space. This simplifies collaboration, ensuring everyone is on the same page from ideation to deployment.
  3. Integrated CI/CD: One of GitLab's standout features is its integrated Continuous Integration and Continuous Delivery capabilities. With built-in CI/CD pipelines, you can automate testing and deployment, ensuring that your applications are always in a deployable state.
  4. Code Review and Collaboration: Facilitate collaboration among your team members with GitLab's robust code review features. Conduct efficient peer reviews, comment on specific lines of code, and ensure the quality of your codebase before merging changes.
  5. Container Registry: GitLab includes a built-in container registry, allowing you to store, manage, and deploy Docker images directly from your GitLab instance. This streamlines the process of building and deploying containerized applications.
  6. Collaboration and Transparency: GitLab promotes collaboration and transparency by providing a centralized hub for your development efforts. Teams can communicate, contribute, and track progress within the same environment. The platform's open and accessible nature fosters a culture of openness and inclusivity.
  7. Community and Documentation: The GitLab community is vibrant and diverse. From beginners to seasoned developers, everyone can find resources, ask questions, and contribute to the platform's improvement. Extensive documentation and guides make it easy for users to get started and make the most of GitLab's features.

In essence, GitLab isn't just a tool; it's a platform that empowers teams to streamline their development processes. It unifies version control, project management, CI/CD, and more, offering a comprehensive solution for modern software development. With GitLab, your team can transform ideas into reality, collaborating efficiently at every step of the development journey.

GraphQL

GraphQL is a revolutionary query language for APIs that challenges the traditional RESTful approach to fetching and updating data. Developed by Facebook, GraphQL provides a more efficient and flexible alternative for building APIs. Unlike REST, where clients often receive more data than needed, GraphQL allows clients to specify the exact data requirements, minimizing over-fetching and under-fetching issues. This adaptability makes GraphQL a powerful tool for developers seeking a more precise and streamlined approach to data retrieval.

At the heart of GraphQL is its schema and query language. The schema defines the types of data that can be queried and the relationships between them. Clients can then send queries to the GraphQL server, specifying the exact data they need. This level of granularity not only enhances performance but also simplifies the development process. Additionally, GraphQL supports real-time data with subscriptions, enabling applications to receive live updates as soon as data changes on the server.

At the heart of GraphQL is its schema and query language. The schema defines the types of data that can be queried and the relationships between them. Clients can then send queries to the GraphQL server, specifying the exact data they need. This level of granularity not only enhances performance but also simplifies the development process. Additionally, GraphQL supports real-time data with subscriptions, enabling applications to receive live updates as soon as data changes on the server.

About the project

This project is dedicated to retrieving GitLab-specific data associated with a user by their project. Our objective was to fetch a comprehensive array of user-related information, including:

  • Project contributors
  • Project contributor's contribution
  • Project contributors’ commit information

Our goal is to get a comprehensive picture of a user's contributions and activities inside the GitLab ecosystem by streamlining the extraction process and utilizing GitLab's robust GraphQL APIs.

Problem Statement

What needs to be done:

  • First, understand the given code, you can check the README.md file to help you understand how the code works. You can also run the demo.py file to see the response.
  • Find the corresponding parts from GitLab
  • Develop GraphQL queries to query the same or similar information from GitLab with its GraphQL API.

Design Pattern

File(s) Modified

  • Gitlab_contributors.py
  • Gitlab_contributors_contributions.py
  • Gitlab_commits.py
  • demo.py

Solutions/Details of Changes Made

Test Plan

Team

Mentor

  • Jialin Cui

Team Members

  • Chandana Mallu (cmallu)
  • Tanishq Virendrabhai Todkar (ttodkar)
  • Tripurashree Mysore Manjunatha (tmysore)