Projects
Introduction
We maintain our projects in the public gitlab-da group. This group has access to an Ultimate subscription.
The group organizes use cases, workshops, tutorials, maintained open source projects, demo playgrounds, thought leadership research, and more learning resources.
Organisation Structure
All projects are organized in sub-groups on the top level. No projects are allowed on the top-level namespace gitlab.com/gitlab-da
.
Group | DRI | Description |
---|---|---|
conferences | @fjdiaz | Group for public demos for team members at conferences, events, meetups, etc. |
playground | all | Test projects, simple demo cases, code snippets, etc. without support. Please move them into the corresponding use-cases groups when linking from a blog post. |
use-cases | all | Use cases for specific topics for product demos, talks, thought leadership, research |
projects | @abuango | Production projects maintained by the team. For blog projects and demos, use the specific use-cases groups. |
projects/devrel-bot | @abuango | Issue triage and automation workflows for Developer Advocacy and Developer Relations workflows. |
projects/hide-duo-beta-trial | @abuango | Chrome extension to hide Beta/Trial widgets in the GitLab UI. |
projects/discourse-assets | @sugaroverflow @dnsmichi | GitLab Discourse forum assets and customizations. |
tutorials | all | |
tutorials/security-and-governance | @fjdiaz | This group contains different projects as well as documentation around GitLab’s security and governance tools. |
unmaintained | - | Projects, tutorials, use cases that are not maintained anymore but kept public for transparency |
workshops | all | Workshop groups and projects provided by the team |
Use cases overview:
Group | DRI | Description |
---|---|---|
use-cases/ai | all | GitLab Duo workflows, coffee chats, learning AI, use cases |
use-cases/ai/ai-applications | @sugaroverflow | Example applications using GitLab Duo |
use-cases/ai/ai-workflows | @dnsmichi | GitLab Duo prompts and challenges with exercise source code and self-learning modules, linked from the documentation |
use-cases/ai/ai-research | @dnsmichi | AI research with local LLMs (Ollama ), RAG, AI agents, etc. |
use-cases/ai/ai-workshops | @dnsmichi | GitLab Duo and AI workshops and live-programming sessions with customers |
use-cases/ai/gitlab-duo-coffee-chat | @dnsmichi | GitLab Duo coffee chats |
use-cases/ai/learn-with-ai | @dnsmichi @sugaroverflow | Learning a programming language with GitLab Duo (AI), blog series |
use-cases/ai/test-ai | all | Test playground for AI and GitLab Duo |
use-cases/cicd-components-catalog | @iganbaruch | GitLab CI/CD Components Catalog use cases |
use-cases/code-experiments | @warias @csaavedra1 | Code experiments with automation and quality assessments |
use-cases/coverage-reports | all | Code coverage reports examples |
use-cases/devsecops-platform | @warias | End-to-end DevSecOps platform demo environment |
use-cases/efficiency | @dnsmichi | Efficiency use cases (CI/CD, container images, workflows, CLI, etc.) |
use-cases/gitlab-api | @dnsmichi | GitLab API use cases with libraries and scripts |
use-cases/observability | @dnsmichi | Observability uses cases and research (OpenTelemetry, eBPF, etc.) |
use-cases/remote-development | @dnsmichi @iganbaruch | Workspaces environments and Web IDE use cases |
use-cases/scientific-research | @abuango | Scientific research projects and integrations |
Access
Access is limited to team members in the gitlab-da
group. Adding/removing members requires an issue to document the change.
Allowed exceptions are workshop sub-groups that invite external users into their workshop projects temporarily. All temporarily added users must use a membership expiration date of 7 days.
Add a new project or group
- Define the scope of your project, and add it into one of the top-level groups.
- When unsure, create the project in the playground group first, and transfer it to its production location later in the project settings.
Do not create new top-level groups without first proposing the change in an issue/MR.
README
Always add a README.md
file that explains the purpose of the project/group (copy the text into Settings > General > Description
), and links all resources (issues, direction pages, blog posts, etc.). GitLab supports Group READMEs next to project READMEs.
Optional but recommended: Add a project/group avatar image that illustrates the topic. Use an official GitLab brand image, or download a free asset from Unsplash. Add the credits to the README.md
file.
Tip: You can resize images using the following CLI command:
find . -type f -exec sh -c 'convert {} -resize 150 {}' \;
Group: Use Cases
- Blog posts or thought leadership research usually describe a use case or specific topic. Review the existing use-cases, add a new project or sub-group.
- If your use case is new, create a new subgroup, add a description, and update the handbook organization structure. Add yourself as DRI to the table.
Group: Tutorials and Workshops
- Tutorials provide helpful content to learn specific topics and have a DRI assigned to maintain the projects. Tutorials are referenced in blog posts, webinars, etc.
- Workshops provide self-contained learning resources in the form of exercises, solutions, etc. in a single repository.
When unsure where to start, create a new tutorial sub group first, and later decide to migrate the content to a workshop for example.
Group: Projects
The projects group contains all projects that are used in production. They require extended documentation in the team handbook, since the team depends on the functionality for workflows and efficiency. We also maintain microsites that are served with GitLab Pages and custom domains.
Remove a project/group
Our demo projects are referenced in blog posts and other public content. Moving these projects/groups into the unmaintained is recommended to signal their deprecation to users instead of archiving/deleting the projects.
Project Resources
Some projects require access to Kubernetes clusters, self-managed CI/CD Runners, cloud VMs, domains, etc. The team has access to Google Cloud or AWS cloud resources that allow hosting these types of external infrastructure dependencies for GitLab.com SaaS demos.
Workflow
- Document the project setup in its README file (or a in a docs/ structure in the Git repository).
- Shutdown resources when not needed (i.e. Kubernetes clusters).
- Always add security scanning as default, unless it competes with the demo cases.
For demos that require debugging the deployments, prefer shared resources, for example in Google Cloud.
- Document access in the 1Password vault if not available via SSO login.
- A GitLab app requires oauth setup from an account. Use a group shared account (e.g. DE Bot) for production apps (Code challenge, etc.)
Shared cloud resources examples:
- All team members can manage resources in Google Cloud in the community-group project and
Editor
role. Create an access request to add/remote team members. - Google Cloud/AWS also allows you to register domains that are not trademarked (no
gitlab
in the name!) and use the domains for demo setups.
For individual short-lived tutorials or demo setups for a blog post, prefer the Cloud Sandbox Realm. This provides automated shutdown, generated domains for easier access, etc.
flowchart TD; A{Shared resource access required?} A -->|Yes| B[Use cloud group resources] A -->|No| C{Short-lived} C --> |Yes| D[Use individual Cloud Sandbox projects] C --> |No| B
Workspaces
Status: Inactive. Kubernetes cluster needs to be re-created.
The remote-development sub group has an agent for Kubernetes installed, which is documented in the agent-kubernetes-gke project. This includes troubleshooting when the agent becomes unresponsive, and workspaces are not created.
Assigned resources:
- The Kubernetes cluster
de-remote-development-1
is running in GKE. Current resources: 3 nodes. Total 6 vCPU, 12 GB memory. - The domain
remote-dev.dev
has been purchased through the Google DNS service and points to the Kubernetes cluster’s public IP. - The TLS certificates have been generated manually with Let’s Encrypt and need to be renewed quarterly (2023-08-15), following the documentation steps.
Product Adoption Initiatives
GitLab Duo Adoption
FY25 Developer Relations epic (internal).
GitLab Duo Coffee Chat
Live learning session with AI-powered workflows throughout the DevSecOps lifecycle, with the help of GitLab Duo. We discuss, explore, research, learn, debug, create product feedback and feature ideas, and discover new features and workflows.
Goal: The coffee chats help our customers learn how to use GitLab Duo and adopt best practices – by example, making mistakes, trying different routes, and achieving better results and DevSecOps efficiency.
Maintainer: Michael Friedrich, @dnsmichi
- YouTube playlist
- GitLab group with projects
- GitLab Duo
- Talk: Efficient DevSecOps Workflows with a little help from AI - content epic
- Organization issue
- Slide templates and resources for recording video editing.
The recordings are also linked from the GitLab Duo Use Cases documentation.
Process
- Define the scope of the session (for example, 30 minutes writing an application, or exploring a new programming language like COBOL). Duo Challenges require staying in the IDE or GitLab UI context only.
- Invite guests to collaborate (optional)
- Start the Zoom recording, give a short introduction about the goal of the session. When alone, you can also use OBS to record the session.
- Start the session, ask Duo Chat how to get started, follow-up with Code Suggestions, etc.
- When finished/stopping because time, breath and provide a recap summary of what we learned today.
- Export the video.
- Take a screenshot from the session (or IDE) that highlights the learning. Add the screenshot to the slide placeholder, edit the text with the session details, and again create a slides screenshot. This will serve as a video introduction in Premiere Pro.
Video editing in Adobe Premiere Pro:
- Create a new project in Adobe Premiere Pro.
- Import the recording and intro/outro image assets.
- Drag the video into a new sequence.
- Add the intro screenshot into the first 3-5 seconds. Right-click > Scale to fit frame size.
- Use the razor icon to cut the video after the intro sequence. Select the first part and delete the sequence.
- Add an ending screenshot to the last 3-5 seconds. Right-click > Scale to fit the frame size.
- Use the razor icon to cut the video before the ending sequence, and remove any silence parts. Select the last part and delete the sequence.
- Export the raw video:
File > Export > Media
.
Video upload:
- Log into GitLab Unfiltered account on YouTube and upload the video file.
- Edit the title of the session:
GitLab Duo Coffee Chat: Challenge - Explain and Refactor COBOL programs
or similar. - Edit the video description with 2-3 sentences of what to expect. Add all docs/blog URLs as
Resources
entry. - Open the video preview in a new window and scroll over the sections. Note the timestamps, and write down a TOC into the video description. The table of content helps viewers to navigate quickly.
- Add to
Playlist
-GitLab Duo Coffee Chat
- Add tags:
gitlab
,gitlab-duo
,ai
,development
, etc. - Publish the video.
Distribution
- Add the video to the GitLab Use Case documentation, Highspot, blog posts, social posts, etc.
CI/CD Adoption
FY25 Developer Relations epic (internal)
CI/CD Components Catalog
Collaborate with product and engineering to help seed the CI/CD component catalog through CI/CD template migration for GitLab-maintained components. Help maintain and review contributions from community competition and hackathons. Repurpose the learnings into content and story-telling (content epic).
This initiative is part of the CI Adoption WG and contributions by Developer Relations (epic).
Goal: Help customers with CI/CD components for DevSecOps Efficiency. Learn best practices and share them in blog posts, tutorials, workshops.
Maintainers: Michael Friedrich, @dnsmichi, Itzik Gan Baruch, @iganbaruch
LinkedIn Lives in Collaboration with the Social team
GitLab hosts a monthly LinkedIn Live broadcast, generally on the fourth Thursday of every month, to highlight our monthly release, and share product updates and thought leadership. Each broadcast features GitLab team members and special guests to discuss the latest in AI-powered software development. This is a collaborative project between Developer Advocacy and the Social Media teams.
Episodes generally run for 30 minutes and feature 4-5 panelists and a moderator to discuss a predetermined topic or product update. In certain instances, the conversations are pre-recorded.
Episode Title | Views | Month |
---|---|---|
GitLab 16.11 | 5.6K | 2024/04 |
GitLab 17.0 | 6.8K | 2024/05 |
GitLab 17 Release event recap | 7.3K | 2024/06 |
Harnessing AI: GitLab’s Insights & Innovations | 6.3K | 2024/07 |
Information for Panelists
Before the Broadcast/Recording
- You will be added to a temporary Slack channel with the social media team and other panelists to discuss the agenda, logistics, and promotion.
- You will be asked to be available for a 30-minute walkthrough before the recording/broadcast to do a tech check, walk through the talking points, and meet the other panelists.
- You will be added as a speaker to the LinkedIn event page so your network is notified that you will be going live on LinkedIn.
- Please help us promote the event by sharing any LinkedIn posts promoting the event with your network.
During the Broadcast/Recording
- Please confirm you have a strong wifi signal and are in a well-lit area that is free from distractions.
- Ideally, use a virtual background.
- If you have GitLab swag, please wear it!
- Use a headset as your microphone.
After the Broadcast
- Please engage with people who commented on the broadcast.
- Please re-share the event video with your network.
Learning Collections
Our Work Environments
- Michael’s dotfiles covered in this blog post
log4j-resources
The log4j-resources project provides a collection of resources to learn about, detect and mitigate the impact of the log4j vulnerability, more formally known as CVE-2021-44228.
Maintainers: Developer Advocacy team
Workshops
DevOps and GitLab
DevOps with GitLab CI Course - Build Pipelines and Deploy to AWS
Published: 2022.
GitLab Hero Valentin Despa created the 5h course in collaboration Michael Friedrich, who helped with the course outline review.
Efficient DevSecOps Pipelines in a Cloud Native World
Published: 2021.
The slides provide a 10+ hours workshop created by Michael Friedrich for the Open Source Automation Days 2021. The exercises in the slides refer to a workshop project which also includes the solutions.
The following topics will be practiced:
- Introduction: CI/CD meets Dev, Sec and Ops
- CI/CD: Terminology and first steps
- Analyse & Identify
- Learn using the GitLab CI Pipeline Exporter to monitor the exercise project throughout the workshop.
- Efficiency actions
- Config Efficiency: CI/CD Variables in variables, job templates (YAML anchors, extends), includes (local, remote), rules and conditions (if, dynamic variables, conditional includes),
!reference
tags (script, rules), maintain own CI/CD templates (include templates, override config values), parent-child pipelines, multi project pipelines, better error messages to fix failures fast - Resource Use Efficiency: Identification, max pipeline duration analysis, fail fast with stages grouping, fail fast with async needs, analyse blocking stages pipeline (solution with needs), matrix builds for parallel execution (pratice: combine matrix and
extends
, combine matrix and!reference
),extends
merge strategies (with and without!reference
) - CI/CD Infrastructure Efficiency: Optimization ideas, custom build images, optimize builds with C++ as example, GitLab Runner resource analysis (sharing, tags, external dependencies, Kubernetes), local runner exercise, resource groups, storage usage analysis, caching (Python dependency exercise, including
when:always
on failed jobs) - Auto-scaling: Overview, AWS auto-scaling with GitLab Runner with Terraform, insights into Spot Runners on AWS Graviton
- Config Efficiency: CI/CD Variables in variables, job templates (YAML anchors, extends), includes (local, remote), rules and conditions (if, dynamic variables, conditional includes),
- Group discussion
- Deployment Strategies: IaC, GitOps, Terraform, Kubernetes, registries
- Security: Secrets in CI/CD variables, Hashicorp Vault, secrets scanning, vulnerability scanning
- Observability: CI/CD Runner monitoring, SLOs, quality gates, CI/CD Tracing
- More efficiency ideas: Auto DevOps, Fast vs Resources, Conclusion and tips
Template: Basics and CI/CD with the Go Tanuki
The slides provide the step-by-step instructions as exercises for the GitLab CI/CD Go Tanuki workshop:
- First Steps with GitLab
- CI/CD: Getting Started
- CI/CD: Go Project and Tests
- Security with GitLab
- Deliver and Deploy
- What’s next
- Exercises for async practice
- Efficiency practice
Recent Recordings
Published: 2021.
Recordings of past workshops and other videos from the Developer Advocacy team can be found on our team playlist on GitLab Unfiltered.
Past Meetup Workshops
Meetup workshops are available in the workshops group in the GitLab Developer Advocacy group. Note that the content, exercises and source code evolved over time :)
Basics and CI/CD
- TalentQL Pipeline workshop in October 2021
- 1. Swiss Meetup 2021 January
- Morehouse College CI CD Lecture
- CI Community Day 2020
- KDE Akademy Workshop 2020
- LA / SoCal / Orange County Meetup 2020
- Collision from Home GitLab CI workshop
- Linuxing London Meetup - GitLab Introduction
- First virtual GitLab meetup - intro to CI
German language:
Monitoring and Security
Thought Leadership: Observability
Kubernetes Observability workshop for Kube Simplify
Published: 2022.
Michael Friedrich provides a 3.5 hours live workshop on Kubernetes Observability for the Kube Simplify workshop series as a free learning resource. After an introduction, the workshop starts with an overview of monitoring, metrics with Prometheus, and how to build and use dashboards in Kubernetes. Alerts, incidents and SLOs are practiced by example, building the bridge into more Observability data with tracing, logs and more event types. Chaos engineering is practiced with Chaos Mesh to trigger alerts when DNS errors force an app to leak memory. This allows users to practice the KubeCon EU 2022 demo themselves. Scaling, long term storage, security workflows as well as new innovative ideas with OpenTelemetry and eBPF are discussed too. The workshop includes exercises and solutions ready for production environments afterwards.
Resources:
Recording:
OSS Projects
The Developer Advocate team maintains OSS projects as part of community activities.
CodeChallenge.dev
Maintainer: Abubakar Siddiq Ango
CodeChallenge.dev
is an app that you can use to create challenges that are tied to actions in GitLab. For example, you can create a challenge that teaches folks how to make merge requests, add issues, or use other GitLab features. Currently in the beta release, the Code Challenge software was first used at KubeCon EU 2022.
Homepage: CodeChallenge.dev
Documentation: docs.codechallenge.dev
Project: codechallenge
Advocate Dashboards
Maintainer: Abubakar Siddiq Ango
The dashboard is the SSoT to collect all metrics for the Developer Advocate. This includes Twitter, CFPs, YouTube/Google Analytics, etc. Next to the dashboard component, the data component ensures to collect all data from different APIs and sources, and gets deployed to GitLab Pages.
Project: Dashboards
Developer Relations Bot
Maintainer: Abubakar Siddiq Ango
This bot aims to automate the team tasks such as:
- Create release evangelism issues for team members.
- Triage issues following the Developer Advocacy workflows.
- Generate an issue letter (created, closed, open CFPs) on every Monday.
Project: DevRel Bot
Developer Advocate Dashboard
Maintainer: Abubakar Siddiq Ango
This custom dashboard is built using GitLab Pages and presents an overview of Developer Advocate issues. The requests are synced in a specified interval.
Project: DE Dashboard
YouTube2Sheets
Maintainer: Abubakar Siddiq Ango
This project is used internally at GitLab to retrieve the list of videos from specified playlists on YouTube onto a specified Google Sheet. Pipeline is scheduled to run at midnight and noon UTC.
Project: YouTube2Sheets
Events Project
Maintainer: Abubakar Siddiq Ango
The Developer Advocate Team at GitLab tracks events happening across the industry for attendance, speaking engagements, or just to keep them on the radar. This is also a major need across the industry. The Events project aims to provide an open and collaborative place where members of the wider GitLab community can add and track events happening in the industry.
Project: DE Events Project
EveryoneCanContribute cafe
Maintainer: Michael Friedrich
everyonecancontribute.com serves as the main website for a community formed around tech coffee chats called #EveryoneCanContribute cafe
(active) and #EveryoneCanContribute Kaeffchen
(retired).
The coffee chats are organized as meetup.com group events and are open for topic or theme suggestions from everyone.
- Try out newly announced projects together.
- Do pair programming/debugging sessions.
- Start discussions and share ideas on the latest technology.
The sessions are hosted by Michael Friedrich. Developer Advocate team members are assigned as alternative hosts in Zoom. The meetups are hosted in Zoom with a waiting room as default, the Zoom URL is hidden in the meetup group event. team members can access the URL in the Developer Advocate team calendar. For joining the group, users need a profile picture and provide their name for joining an event. This is to protect against Zoom bombing and otherwise harmful intentions.
Next to Zoom, everyone can hangout with text or audio in Discord.
The website’s About page covers more details including the exact date and time.
Insights:
- The website is built using GitLab Pages.
- Organization happens in the GitLab group everyonecancontribute. This group has applied for an Ultimate license for OSS projects.
- #everyonecancontribute cafe (English) YouTube playlist.
- #everyonecancontribute Kaeffchen (German)YouTube playlist.
everyonecancontribute.dev hosts a demo page with funny animations featuring the Tanuki, Clippy, and more. It is deployed in a container environment and provides a Prometheus node exporter for monitoring demos and talks. Michael created the website for the job application presentation panel at GitLab.
Metrics and Insights
In order to track the sessions, create a monthly issue report with linking the blog post, recording, social shares etc.
everyonecancontribute cafe groups
- Kubernetes with hands-on workshop series.
- Keptn, GitLab, Prometheus to collaborate on a deeper integration.
- 5minprod.app to drive the 5 minute production app with community resources.
a637bf26
)