What is GitLab?
GitLab is a private, web-based version control service hosted locally at UCT, similar to GitHub, the open-source, web-based public service. It offers distribution version control and source code management (SCM) amongst many other features. GitLab at UCT is designed to help teams manage and optimize their software delivery lifecycle with effective central management of code and user access. The application lets you manage and secure your work across all stages of the DevOps lifecycle. From planning to monitoring, GitLab covers every stage of the lifecycle, enabling concurrent DevOps and provides unmatched visibility, higher levels of efficiency, and comprehensive project governance. This can make the software lifecycle 200% faster, radically improving the speed of operations. The platform includes access control and many collaboration features such as bug tracking, feature requests, and task management.
This service is available to all UCT staff and researchers who engage with software development themselves, or through third party contractors.
Why use GitLab instead of GitHub?
GitLab provides the same functionality as GitHub, however all code submitted to GitHub is publicly available, unless you subscribe to the paid-for service to keep your code private. UCT doesn't have any administrative control over individual private GitHub accounts, and could thus not assist with code recovery or project continuation should the account be closed, deleted or become corrupted. With GitLab, the rights to the source code are owned by UCT and are private and for internal use only.
Researchers benefit from making use of the instituational GitLab repository as their work retains UCT intellectual property status (it is not deleted or orphaned when owners of the repository are no longer contactable). It allows for code to be published to and shared via Zivahub. Access to code versions can be controlled throughout the development lifecyle, and offers a choice of which versions are published for selective or public consumption via Zivahub. It also offers the capacity for restores to be performed when necessary.
Getting access to GitLab
Project owners must register their projects, and request access for users by logging a request in ServiceNow. Project access can also be requested for additional UCT users as well as for external contributors on existing projects.
ICTS Application Services will activate user access. For external contributors, accounts will be created, and login details will be sent to the relevant parties.
The project owner must then assign roles to each user within the GitLab system.
User roles
Five different user roles that can be assigned:
- Guest – A Guest can view issues, leave comments, see jobs, and view wiki pages.
- Reporter – A Reporter has the same roles as the Guest, but also has access to code features, excluding the code-commit features.
- Developer – A Developer has all the rights of the Guest and Reporter users as well as access to all code features, including commit rights to all code.
- Maintainer - A Maintainer has all the rights of the Guest, Reporter, and Developer users as well as access to creating of branches, and adding new members to the project.
- Owner – An owner has full access to their projects and all features of the projects they own. Owners may create groups and assign different access levels to members.
Using the platform
The GitLab system is accessible via a web portal at https://gitlab.uct.ac.za.
NOTE: the portal can only be accessed on campus using the UCT internal network or off campus by using the UCT VPN connection.
Logging in
For UCT staff:
- Go to https://gitlab.uct.ac.za.
- Enter your UCT user credentials (staff number and password).
For external contractors, a GitLab local user account will be created:
- Go to https://gitlab.uct.ac.za.
- Enter the account details you have been provided with.
New users can only see projects once the project owner has added them to the project and assigned the appropriate role.
Help and Information
To learn how to use the system and for general research and troubleshooting, refer to the support website. Consult the documentation to learn how to add members to a project and assign the required access. You can also learn more about project settings and configurations in the GitLab documentation.
For any additional assistance with the application, log a request in ServiceNow.
There is also a useful training video on Git for teams, available on LinkedIn Learning.
Changing roles and revoking access
Revoking access will be done if the following conditions apply:
- The user leaves UCT
- If the user leaves UCT, their active directory account will be disabled by ICTS. This will eliminate their access to the GitLab system automatically.
- The user is no longer working on the project
- The project owner will remove the user's access from within the GitLab portal.
- Change of project owner
- If ownership of a project changes, the current project owner must request a change of ownership in ServiceNow.
- If a project owner is not available to process the request, the department manager must submit the request.
- Inactive user accounts.
- As a standard procedure, any inactive user accounts will be disabled by ICTS.
Reporting faults with the portal
To report any system faults, log a call in ServiceNow and the application administrator will investigate and resolve the fault.
System maintenance
ICTS will implement monthly software updates and patches on the GitLab system. Communications will be sent out in advance regarding maintenance, as these implementations may cause system downtime.