#########
Templates
#########
You can request templates for different type of files:
* License files
* .gitignore files
* GitLab CI configuration files
* Dockerfiles
License templates
=================
Reference
---------
* v4 API:
+ :class:`gitlab.v4.objects.License`
+ :class:`gitlab.v4.objects.LicenseManager`
+ :attr:`gitlab.Gitlab.licenses`
* GitLab API: https://docs.gitlab.com/api/templates/licenses
Examples
--------
List known license templates::
licenses = gl.licenses.list(get_all=True)
Generate a license content for a project::
license = gl.licenses.get('apache-2.0', project='foobar', fullname='John Doe')
print(license.content)
.gitignore templates
====================
Reference
---------
* v4 API:
+ :class:`gitlab.v4.objects.Gitignore`
+ :class:`gitlab.v4.objects.GitignoreManager`
+ :attr:`gitlab.Gitlab.gitignores`
* GitLab API: https://docs.gitlab.com/api/templates/gitignores
Examples
--------
List known gitignore templates::
gitignores = gl.gitignores.list(get_all=True)
Get a gitignore template::
gitignore = gl.gitignores.get('Python')
print(gitignore.content)
GitLab CI templates
===================
Reference
---------
* v4 API:
+ :class:`gitlab.v4.objects.Gitlabciyml`
+ :class:`gitlab.v4.objects.GitlabciymlManager`
+ :attr:`gitlab.Gitlab.gitlabciymls`
* GitLab API: https://docs.gitlab.com/api/templates/gitlab_ci_ymls
Examples
--------
List known GitLab CI templates::
gitlabciymls = gl.gitlabciymls.list(get_all=True)
Get a GitLab CI template::
gitlabciyml = gl.gitlabciymls.get('Pelican')
print(gitlabciyml.content)
Dockerfile templates
====================
Reference
---------
* v4 API:
+ :class:`gitlab.v4.objects.Dockerfile`
+ :class:`gitlab.v4.objects.DockerfileManager`
+ :attr:`gitlab.Gitlab.gitlabciymls`
* GitLab API: https://docs.gitlab.com/api/templates/dockerfiles
Examples
--------
List known Dockerfile templates::
dockerfiles = gl.dockerfiles.list(get_all=True)
Get a Dockerfile template::
dockerfile = gl.dockerfiles.get('Python')
print(dockerfile.content)
Project templates
=========================
These templates are project-specific versions of the templates above, as
well as issue and merge request templates.
Reference
---------
* v4 API:
+ :class:`gitlab.v4.objects.ProjectLicenseTemplate`
+ :class:`gitlab.v4.objects.ProjectLicenseTemplateManager`
+ :attr:`gitlab.v4.objects.Project.license_templates`
+ :class:`gitlab.v4.objects.ProjectGitignoreTemplate`
+ :class:`gitlab.v4.objects.ProjectGitignoreTemplateManager`
+ :attr:`gitlab.v4.objects.Project.gitignore_templates`
+ :class:`gitlab.v4.objects.ProjectGitlabciymlTemplate`
+ :class:`gitlab.v4.objects.ProjectGitlabciymlTemplateManager`
+ :attr:`gitlab.v4.objects.Project.gitlabciyml_templates`
+ :class:`gitlab.v4.objects.ProjectDockerfileTemplate`
+ :class:`gitlab.v4.objects.ProjectDockerfileTemplateManager`
+ :attr:`gitlab.v4.objects.Project.dockerfile_templates`
+ :class:`gitlab.v4.objects.ProjectIssueTemplate`
+ :class:`gitlab.v4.objects.ProjectIssueTemplateManager`
+ :attr:`gitlab.v4.objects.Project.issue_templates`
+ :class:`gitlab.v4.objects.ProjectMergeRequestTemplate`
+ :class:`gitlab.v4.objects.ProjectMergeRequestTemplateManager`
+ :attr:`gitlab.v4.objects.Project.merge_request_templates`
* GitLab API: https://docs.gitlab.com/api/project_templates
Examples
--------
List known project templates::
license_templates = project.license_templates.list(get_all=True)
gitignore_templates = project.gitignore_templates.list(get_all=True)
gitlabciyml_templates = project.gitlabciyml_templates.list(get_all=True)
dockerfile_templates = project.dockerfile_templates.list(get_all=True)
issue_templates = project.issue_templates.list(get_all=True)
merge_request_templates = project.merge_request_templates.list(get_all=True)
Get project templates::
license_template = project.license_templates.get('apache-2.0')
gitignore_template = project.gitignore_templates.get('Python')
gitlabciyml_template = project.gitlabciyml_templates.get('Pelican')
dockerfile_template = project.dockerfile_templates.get('Python')
issue_template = project.issue_templates.get('Default')
merge_request_template = project.merge_request_templates.get('Default')
print(license_template.content)
print(gitignore_template.content)
print(gitlabciyml_template.content)
print(dockerfile_template.content)
print(issue_template.content)
print(merge_request_template.content)
Create an issue or merge request using a description template::
issue = project.issues.create({'title': 'I have a bug',
'description': issue_template.content})
mr = project.mergerequests.create({'source_branch': 'cool_feature',
'target_branch': 'main',
'title': 'merge cool feature',
'description': merge_request_template.content})