About CSE GitLab
GitLab offers web-based git repository management, code reviews, issue tracking, activity feeds, wikis and more. CSE GitLab is a locally run instance of GitLab CE. You can access the CSE GitLab portal via the following URL:www.gitlab.com for more information about their commercial platform.
We also support GitLab CI (GitLab's Continuous Integration service).
CSE's GitLab service is available to all current Computer Science & Engineering students, staff, and faculty with CSENetIDs, as well as UW students enrolled in a CSE course. Access to the service can also be granted to UWNetIDs by request (to support@cs). Non-UW collaborators can be accommodated through the Research Guest facility.
Every user on the system has a personal namespace based on their CSE username in which they can create a project/repository of whatever name they wish.
Users also have the ability to create groups. Groups are meant to hold related projects and make delegation of permissions easier. Projects in a group also have the ability to persist even after the originator of the project is no longer active. Group names must be unique across the system as GitLab uses a flat namespace for groups. As such, please observe the following group naming guidelines:
- No generic group names i.e. "My Project Group," "Group1," "Super Awesome Research Group."
- For research groups try to keep group names descriptive and succinct, prefixed by an area of research. For Example: "Robotics_DART" or "Wifi_Backscatter" might be appropriate group names for research projects. Keep in mind, these names will also form part of the project/git repo URL.
- For instructional use, similar guidelines apply. Students can create their projects in their own namespace and give permissions to them. Alternatively, if a project site for the whole class is desired, or groups needed for persistent work teams, please name the group, prefixed with pattern course-yrterm, eg. cse101-15wi. This will help to avoid naming collisions in future quarters.
- Moving projects: GitLab allows you to move projects between groups and personal spaces if you have appropriate rights in both places. As such, a personal project can be moved into a group quite easily or a project moved between groups if the project expands beyond its original context.
- Login into the system at the URL provided above.
- Git is built up around the idea of using ssh keys for interaction with the repository. It's a good idea to create/add ssh keys to the system immediately. For more information: https://docs.gitlab.com/ee/user/ssh.html#use-ssh-keys-to-communicate-with-gitlab
- Please see the following document around assigning permissions and what access is provided: https://gitlab.cs.washington.edu/help/user/permissions.md
- You will only be able to assign permissions to people who have logged into the system at least once, as user accounts are created on demand at first login.
- Check out the Gitlab-CI Runners page! https://www.cs.washington.edu/lab/gitlab/runners
- If you're looking to create a large number of student repositories for a course, or give a large list of students (such as an entire course) access to a particular repo, look no further than our Gitlab Bulk Tools: https://gitlab.cs.washington.edu/gitlab-sync/
- It's recommended that instructors make a GitLab Group (csexxx-19wi for example) to hold course specific repositories. You can then add other course staff or students to the group for access to the repositories.
HTTPS push with CSE Gitlab (worse case scenario, not for everyday use)
Note: You should never really need to do this, ssh keys are the preferred and fully supported method of interacting with git.
Login into Gitlab, visit your profile, then select "Password" on the left side menu. Click the "Forgot Password" link and follow the instructions."
Why use this? Why not just use GitHub or Bitbucket?
- CSE GitLab also makes it very easy to share a project with someone within CSE without having to divine some cloud service specific username. Just search for them and they should pop-up (assuming they've logged into the service at least once). Running a local instance also gives us vastly more control over the environment than running on Gitlab.com would. For some people who need to protect IP or are otherwise worried about public/private access to their source code, this is a big advantage.
- If you ever want to use GitLab for instructional purposes, we have some custom tailored tools to make setup of student groups and repositories a one-click operation.
- The seamless integration of GitLab-Ci (a distributed build service) is another big advantage of using Gitlab over some other solutions. Again, running this locally give us some significant control and customization options at an organizational level.
- GitHub is obviously the major competitor to GitLab, here is a feature comparison between the two if you're interested on "why GitLab" in a more general sense (NOTE: we run the Community Edition of GitLab, which has most *but not all* the features of the Enterprise Edition):
- Many people have remarked that git operations against CSE GitLab are several times faster than against other cloud providers. This is due to the fact that we're all connected on a 1GB network and the machine has enough RAM to keep nearly ALL the git repos in cache, as well as being backed by a multi-disk SSD array.
Can I set up 2 Factor Authentication?
- While 2FA is a feature offered by Gitlab, it is currently incompatible with our Shibboleth authentication system. If you enable 2FA for you account, you may see a 500 error when you attempt to login. If this happens, please email email@example.com and we can disable it so you may login again.
- GitLab Community Edition documentation
- Digital Ocean has also created a nice writeup of managing projects with the gitlab UI
- Article: "How GitHub rival GitLab is building a business with just 0.1% paying customers"