Pipeline Templates
SHIP-HATS Pipeline templates are reusable configuration files that developers can use to configure instead of building from the scratch. The templates help agencies to incorporate best practices for security compliance and performance metrics.
SHIP-HATS Templates aims to help you construct their CI/CD pipelines efficiently by providing blackbox building blocks for you to include in their pipelines. It favours “write once, use anywhere”, and is open for InnerSourcing.
Types
Following types of templates will be provided:
- End-to-End Reference templates: An end-to-end CI/CD workflow for a specific use case such as .Net application hosted in Azure App Service, Java application hosted in AWS EC2, etc.

- Modular templates: A stand-alone basic template for invoking build, test, deploy tools, etc.

List of Templates
After you have onboarded to SHIP-HATS 2.0, you can log in to GitLab to refer to complete list of SHIP-HATS Templates. For GitLab CI/CD examples, refer to https://docs.gitlab.com/ee/ci/examples/.
| Template | Type |
|---|---|
| Common templates | Modular template |
| Testing/scanning templates | Modular template |
| Nexus Repo templates | Modular template |
| E2E templates | End-to-end template |
Important note for E2E template users
The SHIP-HATS team will discontinue active maintenance of the E2E Templates after v1.1.0.
While you can continue using the E2E Templates, note that the existing features may become deprecated in the future.
If you need customizations or modifications to the E2E templates, we encourage you to contribute to these templates through Innersource. The SHIP-HATS team can help with releasing any updated versions that you contribute. Refer to the CONTRIBUTING page before start contribute.
Referencing SHIP-HATS templates
We have moved GitLab projects for SHIP-HATS Templates, SHIP-HATS Compliance, and E2E Templates to the Innersource/SGTS/SHIP-HATS group.
While these projects/groups will remain accessible for reference, starting from the upcoming releases, versioned tags will be implemented for projects in the InnerSource Group, beginning with the release of SHIP-HATS templates v1.1.0.
To ensure you can reference subsequent releases of SHIP-HATS Templates, SHIP-HATS Compliance, and SHIP-HATS E2E Templates from v1.1.0 onward, refer to the below table and update the paths in your YAML files as applicable.
| Projects | Project/Group Paths in WOG | Project/Group Paths in InnerSource | Instruction |
|---|---|---|---|
| SHIP-HATS Templates | WOG/GVT/ship/ship-hats-templates | innersource/sgts/ship-hats/ship-hats-templates | Replace “WOG/GVT/ship” with “innersource/sgts/ship-hats” |
| SHIP-HATS Compliance | WOG/ship-hats-compliance | innersource/sgts/ship-hats/ship-hats-compliance | Replace “WOG” with “innersource/sgts/ship-hats” |
| SHIP-HATS E2E Templates | WOG/GVT/ship/e2e-templates | innersource/sgts/ship-hats/e2e-templates | Replace “WOG/GVT/ship” with “innersource/sgts/ship-hats” |
| SHIP-HATS E2E Examples | WOG/GVT/ship/e2e-templates/examples | innersource/sgts/ship-hats/e2e-templates/examples | Replace “WOG/GVT/ship” with “innersource/sgts/ship-hats” |
Reference pipelines
Following reference pipelines are available for use. You can also refer to Common Prerequisites to Using Reference Pipelines.
- javaap
- javadockerapp
- netapp
- netdocker
- nodetsapp
FAQs
GitLab and SHIP-HATS features
Yes, you can build and store your custom image in your GitLab Project container registry.
You can also contribute your custom image to the Pipeline COE (innersource). For more details, refer to Pipeline COE.
Yes, GitLab Pages feature is available on SHIP-HATS. This feature allows you to publish static websites directly from a repository in GitLab, making it easier to share your work with others. [Learn more]
Yes. Viewers of the GitLab wiki page must have access to your Confluence link to route from GitLab to Confluence.
Pipeline management
Creating a project token allows users to access the Command Line Interface (CLI) but not the User Interface (UI). For UI access, users will still need to authenticate using TechPass, which is licence-based.
You will need to define needs:project in a job of your subsequent pipeline. In this case, you will need to have a different branch (i.e., main branch for the subsequent pipeline and branch-A for the previous pipeline). Refer to GitLab documentation.
We are working on compliance version release management. You will be able to upgrade at your own convenience by changing the version to reference. Compliance Framework
GitLab account management
Yes. From GitLab 18.11 onwards, GitLab supports self-service creation of service accounts. For details, including any applicable prerequisites, see GitLab service accounts.
Your role was changed to Guest because you do not have a valid GitLab licence provisioned through SHIP-HATS. Users without a GitLab licence can only be assigned the Guest role. If a higher role is assigned to them, SHIP-HATS automatically changes their role back to Guest.
If you need the Developer, Maintainer, or Owner role, ask your SHIP-HATS Subscription Admin (SA) to provision a GitLab licence for you. If you are a GovTech Public officer, go to the Equip portal to check whether you are eligible for a GitLab licence. If you are eligible, you can request one there.
Note: SHIP-HATS may block your account if a role higher than Guest is repeatedly assigned to you without a valid GitLab licence. If your account is blocked, you cannot sign in to GitLab, even if you have an active TechPass. To unblock your account, contact us.
Your GitLab account may be deactivated for one of the following reasons:
Inactive account: Your account has been inactive for an extended period, in accordance with the GitLab policy. Expired invitation: You did not accept your GitLab invitation within 7 days.
Note: This is different from an account being blocked because of repeated attempts to assign a role higher than Guest to a user without a valid GitLab licence.
If you need your account reactivated, contact your SHIP-HATS Subscription Administrator (SA).
To reactivate your GitLab account, log in to GitLab with your TechPass ID.
GitLab tokens
To enhance security and manage risk, SHIP-HATS is reducing the default expiry period for GitLab tokens from 365 days to 180 days, effective 15 October 2024. Depending on when your token was created, here’s what you need to know:
Use case 1: Token expiring after 15 October 2024
- Scenario: A user created a GitLab token on 05 November 2023, with a 365-day expiry.
- Analysis: The token’s expiry date is 04 November 2024. As of 15 October 2024, there are 21 days remaining until the token expires. This is within the new 180-day limit.
- Action: No immediate action is required. When the token expires on 04 November 2025, the user should generate a new token with a maximum 180-day expiry.
Use case 2: Token expiring after the new 180-day limit
- Scenario: A user created a GitLab token on 05 August 2024, with a 365-day expiry.
- Analysis: The token’s expiry date is 04 August 2025. As of 15 October 2024, there are 294 days remaining until the token expires. As this exceeds the new 180-day limit, the token becomes invalid.
- Action: The user must generate a new token with a maximum 180-day expiry before 15 October 2024, to avoid token invalidation.
Use case 3: Token expiring exactly at the 180-Day limit
- Scenario: A user created a GitLab token on 13 April 2024, with a 365-day expiry.
- Analysis: The token’s expiry date is 12 April 2025. As of 15 October 2024, there are exactly 180 days remaining until the token expires. This aligns with the new limit.
- Action: No immediate action is required. When the token expires on 12 April 2025, the user should generate a new token with a maximum 180-day expiry.
Errors and troubleshooting
Consider using ship-hats-templates to overcome these errors. Refer to Common Functions in GitLab.
Cloudflare offers a root certificate, which could potentially address the issue. You may try installing the Cloudflare root certificate to your system and Git application.
Make sure that Need artefact:path is defined.
Baseline configuration limits each repo size to 2GB. GitLab repositories are code repositories. Therefore, it is recommended that they do not store binaries like executables, pictures, or videos, etc.
If your GitLab repo size exceeds 2GB, consider reducing size. For further support, raise a service request with your requirement.
Status pages
As GitLab is hosted on AWS, the traffic between GitLab and S3 will be transmitted over the AWS global network backbone. For more details, refer to AWS questions.
Project management and permissions
Yes, the groups have reporter roles, limiting their access to viewing data only. The collected data is used solely for improving GitLab services and is handled securely.
Yes, you can remove individual users who do not belong to the specified WOG groups. By addressing these common questions, the FAQs provide clear and concise information to users about the inherited WOG groups.
Owner or Maintainer (i.e., Project Admin) can assign the roles for GitLab project members. For more details, refer to GitLab documentation.
Note that when GitLab licences are provisioned to users via Console, the PA must invite the required users to GitLab groups or projects within 7 days.
Refer to GitLab roles and permissions documentation. You can configure Project Settings in GitLab for additional changes, such as restricting certain groups/users to merge a merge request or push commit on a protected branch and merge request approval.
Disaster recovery and backup
Yes, SHIP-HATS GitLab has a disaster recovery plan in place. For more details, refer to GitLab Dedicated SLAs: Disaster Recovery Plan.
Currently, having a second region for disaster recovery is pending.
Yes, there is a soft deletion period of 7 days for groups and projects.