index.md 11.3 KB
Newer Older
1 2 3 4 5 6 7 8 9 10
# Projects

In GitLab, you can create projects for hosting
your codebase, use it as an issue tracker, collaborate on code, and continuously
build, test, and deploy your app with built-in GitLab CI/CD.

Your projects can be [available](../../public_access/public_access.md)
publicly, internally, or privately, at your choice. GitLab does not limit
the number of private projects you create.

11
## Project features
12 13 14 15

When you create a project in GitLab, you'll have access to a large number of
[features](https://about.gitlab.com/features/):

16
**Repositories:**
17 18 19

- [Issue tracker](issues/index.md): Discuss implementations with your team within issues
  - [Issue Boards](issue_board.md): Organize and prioritize your workflow
20
  - [Multiple Issue Boards](issue_board.md#multiple-issue-boards-starter): Allow your teams to create their own workflows (Issue Boards) for the same project **(STARTER)**
21
- [Repositories](repository/index.md): Host your code in a fully
22
  integrated platform
23 24
  - [Branches](repository/branches/index.md): use Git branching strategies to
  collaborate on code
25 26 27 28
  - [Protected branches](protected_branches.md): Prevent collaborators
  from messing with history or pushing code without review
  - [Protected tags](protected_tags.md): Control over who has
  permission to create tags, and prevent accidental update or deletion
29
  - [Signing commits](gpg_signed_commits/index.md): use GPG to sign your commits
30
  - [Deploy tokens](deploy_tokens/index.md): Manage project-based deploy tokens that allow permanent access to the repository and Container Registry.
31 32 33 34 35 36
- [Web IDE](web_ide/index.md)

**Issues and merge requests:**

- [Issue tracker](issues/index.md): Discuss implementations with your team within issues
  - [Issue Boards](issue_board.md): Organize and prioritize your workflow
37
  - [Multiple Issue Boards](issue_board.md#multiple-issue-boards-starter): Allow your teams to create their own workflows (Issue Boards) for the same project **(STARTER)**
38
- [Merge Requests](merge_requests/index.md): Apply your branching
39
  strategy and get reviewed by your team
40
  - [Merge Request Approvals](merge_requests/merge_request_approvals.md): Ask for approval before
41
  implementing a change **(STARTER)**
42 43 44 45 46 47
  - [Fix merge conflicts from the UI](merge_requests/resolve_conflicts.md):
  Your Git diff tool right from GitLab's UI
  - [Review Apps](../../ci/review_apps/index.md): Live preview the results
  of the changes proposed in a merge request in a per-branch basis
- [Labels](labels.md): Organize issues and merge requests by labels
- [Time Tracking](../../workflow/time_tracking.md): Track estimate time
48
  and time spent on
49 50 51
  the conclusion of an issue or merge request
- [Milestones](milestones/index.md): Work towards a target date
- [Description templates](description_templates.md): Define context-specific
52
  templates for issue and merge request description fields for your project
53
- [Slash commands (quick actions)](quick_actions.md): Textual shortcuts for
54
  common actions on issues or merge requests
55
- [Web IDE](web_ide/index.md)
56 57 58 59 60 61 62 63 64

**GitLab CI/CD:**

- [GitLab CI/CD](../../ci/README.md): GitLab's built-in [Continuous Integration, Delivery, and Deployment](https://about.gitlab.com/2016/08/05/continuous-integration-delivery-and-deployment-with-gitlab/) tool
  - [Container Registry](container_registry.md): Build and push Docker
  images out-of-the-box
  - [Auto Deploy](../../ci/autodeploy/index.md): Configure GitLab CI/CD
  to automatically set up your app's deployment
  - [Enable and disable GitLab CI](../../ci/enable_or_disable_ci.md)
65
  - [Pipelines](../../ci/pipelines.md): Configure and visualize
66 67 68
  your GitLab CI/CD pipelines from the UI
     - [Scheduled Pipelines](pipelines/schedules.md): Schedule a pipeline
     to start at a chosen time
69
     - [Pipeline Graphs](../../ci/pipelines.md#visualizing-pipelines): View your
70 71 72 73 74
     entire pipeline from the UI
     - [Job artifacts](pipelines/job_artifacts.md): Define,
     browse, and download job artifacts
     - [Pipeline settings](pipelines/settings.md): Set up Git strategy (choose the default way your repository is fetched from GitLab in a job),
     timeout (defines the maximum amount of time in minutes that a job is able run), custom path for `.gitlab-ci.yml`, test coverage parsing, pipeline's visibility, and much more
75
  - [Kubernetes cluster integration](clusters/index.md): Connecting your GitLab project
76
    with a Kubernetes cluster
77
  - [Feature Flags](operations/feature_flags.md): Feature flags allow you to ship a project in
78
    different flavors by dynamically toggling certain functionality **(PREMIUM)**
79
- [GitLab Pages](pages/index.md): Build, test, and deploy your static
80
  website with GitLab Pages
81 82 83

**Other features:**

84 85 86
- [Wiki](wiki/index.md): document your GitLab project in an integrated Wiki.
- [Snippets](../snippets.md): store, share and collaborate on code snippets.
- [Cycle Analytics](cycle_analytics.md): review your development lifecycle.
87 88
- [Insights](insights/index.md): configure the Insights that matter for your projects. **(ULTIMATE)**
- [Security Dashboard](security_dashboard.md): Security Dashboard. **(ULTIMATE)**
89
- [Syntax highlighting](highlighting.md): an alternative to customize
90
  your code blocks, overriding GitLab's default choice of language.
91 92
- [Badges](badges.md): badges for the project overview.
- [Releases](releases/index.md): a way to track deliverables in your project as snapshot in time of
93 94
  the source, build output, and other metadata or artifacts
  associated with a released version of your code.
95 96 97 98
- [Maven packages](packages/maven_repository.md): your private Maven repository in GitLab. **(PREMIUM)**
- [NPM packages](packages/npm_registry.md): your private NPM package registry in GitLab. **(PREMIUM)**
- [Code owners](code_owners.md): specify code owners for certain files **(STARTER)**
- [License Management](../application_security/license_management/index.md): approve and blacklist licenses for projects. **(ULTIMATE)**
99

100
### Project integrations
101 102 103 104 105 106 107 108 109 110 111 112 113

[Integrate your project](integrations/index.md) with Jira, Mattermost,
Kubernetes, Slack, and a lot more.

## New project

Learn how to [create a new project](../../gitlab-basics/create-project.md) in GitLab.

### Fork a project

You can [fork a project](../../gitlab-basics/fork-project.md) in order to:

- Collaborate on code by forking a project and creating a merge request
114
  from your fork to the upstream project
115 116
- Fork a sample project to work on the top of that

117 118
## Project settings

119 120 121
Set the project's visibility level and  the access levels to its various pages
and perform actions like archiving, renaming or transferring a project.

122 123
Read through the documentation on [project settings](settings/index.md).

124 125
## Import or export a project

126 127 128 129 130
- [Import a project](import/index.md) from:
  - [GitHub to GitLab](import/github.md)
  - [BitBucket to GitLab](import/bitbucket.md)
  - [Gitea to GitLab](import/gitea.md)
  - [FogBugz to GitLab](import/fogbugz.md)
131 132 133
- [Export a project from GitLab](settings/import_export.md#exporting-a-project-and-its-data)
- [Importing and exporting projects between GitLab instances](settings/import_export.md)

134
## CI/CD for external repositories **(PREMIUM)**
135 136 137 138

Instead of importing a repository directly to GitLab, you can connect your repository
as a CI/CD project.

139
Read through the documentation on [CI/CD for external repositories](../../ci/ci_cd_for_external_repos/index.md).
140

141
## Project members
142 143 144 145

Learn how to [add members to your projects](members/index.md).

### Leave a project
146 147 148 149 150 151

**Leave project** will only display on the project's dashboard
when a project is part of a group (under a
[group namespace](../group/index.md#namespaces)).
If you choose to leave a project you will no longer be a project
member, therefore, unable to contribute.
152 153 154 155 156 157 158 159 160

## Redirects when changing repository paths

When a repository path changes, it is essential to smoothly transition from the
old location to the new one. GitLab provides two kinds of redirects: the web UI
and Git push/pull redirects.

Depending on the situation, different things apply.

161
When [renaming a user](../profile/index.md#changing-your-username),
162
[changing a group path](../group/index.md#changing-a-groups-path) or [renaming a repository](settings/index.md#renaming-a-repository):
163 164 165 166 167 168 169 170 171

- Existing web URLs for the namespace and anything under it (e.g., projects) will
  redirect to the new URLs.
- Starting with GitLab 10.3, existing Git remote URLs for projects under the
  namespace will redirect to the new remote URL. Every time you push/pull to a
  repository that has changed its location, a warning message to update
  your remote will be displayed instead of rejecting your action.
  This means that any automation scripts, or Git clients will continue to
  work after a rename, making any transition a lot smoother.
172 173
- The redirects will be available as long as the original path is not claimed by
  another group, user or project.
Evan Read's avatar
Evan Read committed
174 175 176 177 178

## Use your project as a Go package

Any project can be used as a Go package including private projects in subgroups. To use packages
hosted in private projects with the `go get` command, use a [`.netrc` file](https://ec.haxx.se/usingcurl-netrc.html)
Evan Read's avatar
Evan Read committed
179
and a [personal access token](../profile/personal_access_tokens.md) in the password field.
Evan Read's avatar
Evan Read committed
180 181 182 183 184 185 186 187

For example:

```text
machine example.gitlab.com
login <gitlab_user_name>
password <personal_access_token>
```
188 189 190 191 192 193 194

## Access project page with project ID

> [Introduced](https://gitlab.com/gitlab-org/gitlab-ce/issues/53671) in GitLab 11.8.

To quickly access a project from the GitLab UI using the project ID,
visit the `/projects/:id` URL in your browser or other tool accessing the project.
195

196
## Project aliases **(PREMIUM ONLY)**
197

198
> [Introduced](https://gitlab.com/gitlab-org/gitlab-ee/issues/3264) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.1.
199

200 201 202 203
When migrating repositories to GitLab and they are being accessed by other systems,
it's very useful to be able to access them using the same name especially when
they are a lot. It reduces the risk of changing significant number of Git URLs in
a large number of systems.
204

205 206 207 208 209 210 211 212 213 214 215 216
GitLab provides a functionality to help with this. In GitLab, repositories are
usually accessed with a namespace and project name. It is also possible to access
them via a project alias. This feature is only available on Git over SSH.

A project alias can be only created via API and only by GitLab administrators.
Follow the [Project Aliases API documentation](../../api/project_aliases.md) for
more details.

Once an alias has been created for a project (e.g., an alias `gitlab-ce` for the
project `https://gitlab.com/gitlab-org/gitlab-ce`), the repository can be cloned
using the alias (e.g `git clone git@gitlab.com:gitlab-ce.git` instead of
`git clone git@gitlab.com:gitlab-org/gitlab-ce.git`).
217

218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236
## Project APIs

There are numerous [APIs](../../api/README.md) to use with your projects:

- [Badges](../../api/project_badges.md)
- [Clusters](../../api/project_clusters.md)
- [Discussions](../../api/discussions.md)
- [General](../../api/projects.md)
- [Import/export](../../api/project_import_export.md)
- [Issue Board](../../api/boards.md)
- [Labels](../../api/labels.md)
- [Markdown](../../api/markdown.md)
- [Merge Requests](../../api/merge_requests.md)
- [Milestones](../../api/milestones.md)
- [Services](../../api/services.md)
- [Snippets](../../api/project_snippets.md)
- [Templates](../../api/project_templates.md)
- [Traffic](../../api/project_statistics.md)
- [Variables](../../api/project_level_variables.md)
237
- [Aliases](../../api/project_aliases.md)