Skip to content
Snippets Groups Projects
README.md 7.13 KiB
Newer Older
Logan Stucker's avatar
Logan Stucker committed
# Tanuki Racing Application

Main project for all GitLab hands on events, main project here: https://gitlab.com/gitlab-learn-labs/sample-projects/tanuki-racing/-/edit/main/README.md.

This project consists of 5 workshops that can be run synchronously or self-paced, and can be customized on a per-customer basis. Additionally, it contains Golden Demos which model the best practices demonstrated via the hands-on workshops. There is also an AI Sandbox subdirectory in /ai-sandbox which contains sample files that you can use to evaluate the output of GitLab Duo Code Suggestions as well.
**Note:** Only GitLab employees are permitted to contribute to this project.

##### GitLab Fundamentals

This workshop introduces participants to the basics of working with GitLab. In this lab, participants will learn how to set up a project, work with GitLab project management tools, deploy basic CI/CD pipelines, and learn about security and compliance features offered in our platform.
[Deck | Google Slides](https://drive.google.com/drive/search?q=title:%22MAIN%20COPY%20GitLab%20Basics%20Workshop%22%20parent:1L_kd6QudSWcvAKDM-h6oPvvC6LiNj_ER)\
[Lab | GitLab Repo](https://gitlab.com/gitlab-learn-labs/sample-projects/tanuki-racing/-/tree/main/Courses/Workshops/Basics?ref_type=heads)

##### Advanced CI

This workshop focuses on diving deeper with GitLab CI, and teaches core concepts of GitLab CI, including the following topics:

-   Sequential/Parallel Execution Order
-   Directed Acyclic Graphs (DAGs)
-   Caching, Rules-based Job Execution, Failure Handling
-   Templates and Artifacts
-   Parent-Child Pipelines

[Deck | Google Slides](https://drive.google.com/drive/search?q=title:%22MAIN%20COPY%20Tanuki%20Racing%20CI%20Workshop%22%20parent:1L_kd6QudSWcvAKDM-h6oPvvC6LiNj_ER)\
[Lab | GitLab Repo](https://gitlab.com/gitlab-learn-labs/sample-projects/tanuki-racing/-/tree/main/Courses/Workshops/CICD?ref_type=heads)

##### Project Management

This workshop teaches core concepts surrounding Project Management within GitLab. In this session, participants will learn about organizing, tracking and defining work using GitLab Project Management constructs such as Epics, Issues, Roadmaps, Milestones and Iterations. Participants will also learn about using labels to triage and assign work to appropriate teams and stakeholders.
[Deck | Google Slides](https://drive.google.com/drive/search?q=title:%22MAIN%20COPY%20Tanuki%20Racing%20PM%20Workshop%22%20parent:1L_kd6QudSWcvAKDM-h6oPvvC6LiNj_ER)\
[Lab | GitLab Repo](https://gitlab.com/gitlab-learn-labs/sample-projects/tanuki-racing/-/tree/main/Courses/Workshops/Project_Management?ref_type=heads)

##### Security and Compliance

This workshop focuses on GitLab's Security and Compliance featureset, and discusses how GitLab facilitates shifting Security Left, building Compliance Frameworks within GitLab, managing Scan Execution and Result policies, generating SBOMs within GitLab, and managing Audit Events within GitLab.
[Deck | Google Slides](https://drive.google.com/drive/search?q=title:%22MAIN%20COPY%20Tanuki%20Racing%20Security%20%26%20Compliance%20Workshop%22%20parent:1L_kd6QudSWcvAKDM-h6oPvvC6LiNj_ER)\
[Lab | GitLab Repo](https://gitlab.com/gitlab-learn-labs/sample-projects/tanuki-racing/-/tree/main/Courses/Workshops/Security?ref_type=heads)

##### GitLab Duo/AI

This workshop focuses on our Generative AI portfolio of features currently offered on GitLab SaaS. In this workshop, participants will get hands-on with GitLab Duo features such as Suggested Reviewers, Code Suggestions, Duo Chat, and Summarize/Resolve this Vulnerability. This workshop is designed to introduce participants to our approach to Generative AI and improve their understanding of how they can utilize our Duo features in their daily workflows.
[Deck | Google Slides](https://drive.google.com/drive/search?q=title:%22MAIN%20COPY%20Tanuki%20Racing%20AI%20Workshop%22%20parent:1L_kd6QudSWcvAKDM-h6oPvvC6LiNj_ER)\
Bartholomew Zhang's avatar
Bartholomew Zhang committed
[Lab | GitLab Repo](https://gitlab.com/gitlab-learn-labs/sample-projects/tanuki-racing/-/tree/main/Courses/Workshops/AI?ref_type=heads) 
Logan Stucker's avatar
Logan Stucker committed

## Contribution Guidelines
Logan Stucker's avatar
Logan Stucker committed

**Tanuki Racing** is actively maintained by the Demo Architecture and GitLab teams. To get started, click the **Request Access** button at the top of the page. Once access is granted, you're welcome to contribute to the project by opening a merge request (MR) to address any of the following:

- Fixing a broken pipeline or piece of code  
- Adding a new course or improving an existing one  

## Steps for Contributing

1. **Request Access**  
   Click the **Request Access** button at the top of the repository page.

2. **Create a Merge Request (MR)**  
   - Address the issue or enhancement in your branch.
   - Open an MR describing the changes.  

3. **Assign the MR**  
   Assign your MR to **@lfstucker** for review. 

---

## Versioning and Automated Release Generation

We use **Semantic Release** to automate versioning and release generation, following a customized **conventional commit** specification. This ensures releases are generated automatically based on the type and scope of changes.

### Commit Types and Their Impact on Releases

The release process is driven by commit messages structured as per **conventional commits**, with an added custom `content` prefix to address content-related changes.

#### Supported Commit Types

- **`feat`**: Adds a new feature (triggers a **minor** version bump).  
- **`fix`**: Fixes a bug (triggers a **patch** version bump).  
- **`content`**: Updates content such as courses, labs, or instructional material (triggers a **patch** version bump).  
- **`docs`**: Updates or improves documentation.  
- **`chore`**, **`style`**, **`refactor`**, **`perf`**, **`test`**: Used for internal changes and hidden from release notes.

#### Commit Format

A conventional commit follows this structure:

`<type>(<scope>): <short summary>`
- **`<type>`**: The type of change (e.g., `feat`, `fix`, `content`, `docs`).  
- **`<scope>`** (optional): The area of the project affected (e.g., `course`, `pipeline`, `docs`).  
- **`<short summary>`**: A brief description of the change.

#### Examples

- `feat(course): add advanced GitLab CI course`  
- `fix(pipeline): resolve Docker build issue`  
- `content(course): update lab instructions for GitLab basics`  
- `docs: clarify contribution guidelines`

---

## Semantic Release Configuration

We’ve configured Semantic Release with the following key features:

1. **Automated Versioning**  
   Semantic Release analyzes commit messages to determine the appropriate version bump:
   - **Major**: Not configured for automatic bumps (requires manual intervention).  
   - **Minor**: Triggered by `feat`.  
   - **Patch**: Triggered by `fix` or `content`.  

2. **Changelog Updates**  
   Updates the `CHANGELOG.md` file with detailed release notes based on commit types.

3. **GitLab Integration**  
   Automatically publishes releases and attaches assets (e.g., `CHANGELOG.md`) to the GitLab release page.

4. **Custom Prefix for Content**  
   The `content` commit type ensures updates to educational or instructional material are clearly tracked and included in release notes under "Content Updates."

---

**Note:** Only GitLab employees are permitted to contribute to this project.