diff options
Diffstat (limited to 'doc/user/project/working_with_projects.md')
-rw-r--r-- | doc/user/project/working_with_projects.md | 631 |
1 files changed, 330 insertions, 301 deletions
diff --git a/doc/user/project/working_with_projects.md b/doc/user/project/working_with_projects.md index 3c82e544e26..b5b3f2d2085 100644 --- a/doc/user/project/working_with_projects.md +++ b/doc/user/project/working_with_projects.md @@ -4,35 +4,59 @@ group: Workspace info: "To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments" --- -# Working with projects **(FREE)** +# Manage projects **(FREE)** Most work in GitLab is done in a [project](../../user/project/index.md). Files and code are saved in projects, and most features are in the scope of projects. -## Explore projects +## View projects -You can explore other popular projects available on GitLab. To explore projects: +To explore projects: 1. On the top bar, select **Menu > Projects**. 1. Select **Explore projects**. -GitLab displays a list of projects, sorted by last updated date. To view -projects with the most [stars](#star-a-project), click **Most stars**. To view -projects with the largest number of comments in the past month, click **Trending**. +The **Projects** page shows a list of projects, sorted by last updated date. + +- To view projects with the most [stars](#star-a-project), select **Most stars**. +- To view projects with the largest number of comments in the past month, select **Trending**. NOTE: -By default, `/explore` is visible to unauthenticated users. However, if the +The **Explore projects** tab is visible to unauthenticated users unless the [**Public** visibility level](../admin_area/settings/visibility_and_access_controls.md#restrict-visibility-levels) -is restricted, `/explore` is visible only to signed-in users. +is restricted. Then the tab is visible only to signed-in users. + +### Who can view the **Projects** page + +When you select a project, the project landing page shows the project contents. + +For public projects, and members of internal and private projects +with [permissions to view the project's code](../permissions.md#project-members-permissions), +the project landing page shows: + +- A [`README` or index file](repository/index.md#readme-and-index-files). +- A list of directories in the project's repository. + +For users without permission to view the project's code, the landing page shows: + +- The wiki homepage. +- The list of issues in the project. + +### Access a project page with the project ID + +> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/53671) in GitLab 11.8. + +To 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. ## Explore topics -You can explore popular project topics available on GitLab. To explore project topics: +To explore project topics: 1. On the top bar, select **Menu > Projects**. 1. Select **Explore topics**. -GitLab displays a list of topics sorted by the number of associated projects. +The **Projects** page shows list of topics sorted by the number of associated projects. To view projects associated with a topic, select a topic from the list. You can assign topics to a project on the [Project Settings page](settings/index.md#topics). @@ -44,290 +68,280 @@ If you're an instance administrator, you can administer all project topics from To create a project in GitLab: -1. In your dashboard, select **New project** or use the **New...** **{plus-square}** icon -on the top bar. The **New project** page opens. +1. On the top bar, select **Menu > Project**. +1. Select **Create new project**. 1. On the **New project** page, choose if you want to: - - Create a [blank project](#blank-projects). - - Create a project using one of the available [project templates](#project-templates). - - [Import a project](../../user/project/import/index.md) from a different repository, - if enabled on your GitLab instance. Contact your GitLab administrator if this is unavailable. - - Run [CI/CD pipelines for external repositories](../../ci/ci_cd_for_external_repos/index.md). **(PREMIUM)** + - Create a [blank project](#create-a-blank-project). + - Create a project from a: + - [built-in template](#create-a-project-from-a-built-in-template). + - [custom template](#create-a-project-from-a-custom-template). + - [HIPAA audit protocol template](#create-a-project-from-the-hipaa-audit-protocol-template). + - [Import a project](../../user/project/import/index.md) + from a different repository. Contact your GitLab administrator if this option is not available. + - [Connect an external repository to GitLab CI/CD](../../ci/ci_cd_for_external_repos/index.md). NOTE: For a list of words that can't be used as project names see -[Reserved project and group names](../../user/reserved_names.md). - -### Blank projects - -To create a new blank project on the **New project** page: - -1. Click **Create blank project** -1. Provide the following information: - - The name of your project in the **Project name** field. You can't use - special characters, but you can use spaces, hyphens, underscores, or even - emoji. When adding the name, the **Project slug** auto populates. - The slug is what the GitLab instance uses as the URL path to the project. - If you want a different slug, input the project name first, - then change the slug after. - - The path to your project in the **Project slug** field. This is the URL - path for your project that the GitLab instance uses. If the - **Project name** is blank, it auto populates when you fill in - the **Project slug**. - - The **Project description (optional)** field enables you to enter a - description for your project's dashboard, which helps others - understand what your project is about. Though it's not required, it's a good - idea to fill this in. - - Changing the **Visibility Level** modifies the project's - [viewing and access rights](../../public_access/public_access.md) for users. - - Selecting the **Initialize repository with a README** option creates a - README file so that the Git repository is initialized, has a default branch, and - can be cloned. -1. Click **Create project**. - -### Project templates - -Project templates can pre-populate a new project with the necessary files to get you -started quickly. - -There are two main types of project templates: - -- [Built-in templates](#built-in-templates), sourced from the following groups: - - [`project-templates`](https://gitlab.com/gitlab-org/project-templates) - - [`pages`](https://gitlab.com/pages) -- [Custom project templates](#custom-project-templates), for custom templates - configured by GitLab administrators and users. - -#### Built-in templates - -Built-in templates are project templates that are: - -- Developed and maintained in the [`project-templates`](https://gitlab.com/gitlab-org/project-templates) - and [`pages`](https://gitlab.com/pages) groups. -- Released with GitLab. -- Anyone can contribute a built-in template by following [these steps](https://about.gitlab.com/community/contribute/project-templates/). - -To use a built-in template on the **New project** page: - -1. Click **Create from template** +[reserved project and group names](../../user/reserved_names.md). + +## Create a blank project + +To create a blank project: + +1. On the top bar, select **Menu > Project**. +1. Select **Create new project**. +1. Select **Create blank project**. +1. Enter the project details: + - In the **Project name** field, enter the name of your project. You can use spaces, hyphens, + underscores, and emoji. You cannot use special characters. After you enter the name, + the **Project slug** populates. + - In the **Project slug** field, enter the path to your project. The GitLab instance uses the + slug as the URL path to the project. To change the slug, first enter the project name, + then change the slug. + - In the **Project description (optional)** field, enter the description of your project's dashboard. + - To modify the project's [viewing and access rights](../../public_access/public_access.md) for + users, change the **Visibility Level**. + - To create README file so that the Git repository is initialized, has a default branch, and + can be cloned, select **Initialize repository with a README**. + - To analyze the source code in the project for known security vulnerabilities, + select **Enable Static Application Security Testing (SAST)**. +1. Select **Create project**. + +## Create a project from a built-in template + +A built-in project template populates a new project with files to get you started. +Built-in templates are sourced from the following groups: + +- [`project-templates`](https://gitlab.com/gitlab-org/project-templates) +- [`pages`](https://gitlab.com/pages) + +Anyone can contribute a built-in template by following [these steps](https://about.gitlab.com/community/contribute/project-templates/). + +To create a project from a built-in template: + +1. On the top bar, select **Menu > Project**. +1. Select **Create new project**. +1. Select **Create from template**. 1. Select the **Built-in** tab. -1. From the list of available built-in templates, click the: - - **Preview** button to look at the template source itself. - - **Use template** button to start creating the project. -1. Finish creating the project by filling out the project's details. The process is - the same as creating a [blank project](#blank-projects). +1. From the list of templates: + - To view a preview of the template, select **Preview**. + - To use a template for the project, select **Use template**. +1. Enter the project details: + - In the **Project name** field, enter the name of your project. You can use spaces, hyphens, + underscores, and emoji. You cannot use special characters. After you enter the name, + the **Project slug** populates. + - In the **Project slug** field, enter the path to your project. The GitLab instance uses the + slug as the URL path to the project. To change the slug, first enter the project name, + then change the slug. + - In the **Project description (optional)** field, enter the description of your project's dashboard. + - To modify the project's [viewing and access rights](../../public_access/public_access.md) for users, + change the **Visibility Level**. +1. Select **Create project**. + +## Create a project from a custom template **(PREMIUM)** -##### Enterprise templates **(ULTIMATE)** - -GitLab is developing Enterprise templates to help you streamline audit management with selected regulatory standards. These templates automatically import issues that correspond to each regulatory requirement. - -To create a new project with an Enterprise template, on the **New project** page: +> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/6860) in [GitLab Premium](https://about.gitlab.com/pricing/) 11.2. -1. Click **Create from template** +Custom project templates are available at: + +- The [instance-level](../../user/admin_area/custom_project_templates.md) +- The [group-level](../../user/group/custom_project_templates.md) + +1. On the top bar, select **Menu > Project**. +1. Select **Create new project**. +1. Select **Create from template**. +1. Select the **Instance** or **Group** tab. +1. From the list of templates: + - To view a preview of the template, select **Preview**. + - To use a template for the project, select **Use template**. +1. Enter the project details: + - In the **Project name** field, enter the name of your project. You can use spaces, hyphens, + underscores, and emoji. You cannot use special characters. After you enter the name, + the **Project slug** populates. + - In the **Project slug** field, enter the path to your project. The GitLab instance uses the + slug as the URL path to the project. To change the slug, first enter the project name, + then change the slug. + - The description of your project's dashboard in the **Project description (optional)** field. + - To modify the project's [viewing and access rights](../../public_access/public_access.md) for users, + change the **Visibility Level**. +1. Select **Create project**. + +## Create a project from the HIPAA Audit Protocol template **(ULTIMATE)** + +> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/13756) in GitLab 12.10 + +The HIPAA Audit Protocol template contains issues for audit inquiries in the +HIPAA Audit Protocol published by the U.S Department of Health and Human Services. + +To create a project from the HIPAA Audit Protocol template: + +1. On the top bar, select **Menu > Project**. +1. Select **Create new project**. +1. Select **Create from template**. 1. Select the **Built-in** tab. -1. From the list of available built-in Enterprise templates, click the: - - **Preview** button to look at the template source itself. - - **Use template** button to start creating the project. -1. Finish creating the project by filling out the project's details. The process is the same as creating a [blank project](#blank-projects). +1. Locate the **HIPAA Audit Protocol** template: + - To view a preview of the template, select **Preview**. + - To use the template for the project, select **Use template**. +1. Enter the project details: + - In the **Project name** field, enter the name of your project. You can use spaces, hyphens, + underscores, and emoji. You cannot use special characters. After you enter the name, + the **Project slug** populates. + - In the **Project slug** field, enter the path to your project. The GitLab instance uses the + slug as the URL path to the project. To change the slug, first enter the project name, + then change the slug. + - In the **Project description (optional)** field, enter the description of your project's dashboard. + - To modify the project's [viewing and access rights](../../public_access/public_access.md) for users, + change the **Visibility Level**. +1. Select **Create project**. + +## Push to create a new project -Available Enterprise templates include: +> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/26388) in GitLab 10.5. -- HIPAA Audit Protocol template ([introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/13756) in GitLab 12.10) +Use `git push` to push a local project repository to GitLab. After you push a repository, +GitLab creates your project in your chosen namespace. -NOTE: -You can improve the existing built-in templates or contribute new ones in the -[`project-templates`](https://gitlab.com/gitlab-org/project-templates) and -[`pages`](https://gitlab.com/pages) groups by following [these steps](https://gitlab.com/gitlab-org/project-templates/contributing). +You cannot use `git push` to create projects with project paths that: -##### Custom project templates **(PREMIUM)** +- Have previously been used. +- Have been [renamed](settings/index.md#renaming-a-repository). -> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/6860) in [GitLab Premium](https://about.gitlab.com/pricing/) 11.2. +Previously used project paths have a redirect. The redirect causes push attempts to redirect requests +to the renamed project location, instead of creating a new project. To create a new project for a previously +used or renamed project, use the [UI](#create-a-project) or the [Projects API](../../api/projects.md#create-project). -Creating new projects based on custom project templates is a convenient option for -quickly starting projects. +Prerequisites: -Custom projects are available at the [instance-level](../../user/admin_area/custom_project_templates.md) -from the **Instance** tab, or at the [group-level](../../user/group/custom_project_templates.md) -from the **Group** tab, on the **Create from template** page. +- To push with SSH, you must have [an SSH key](../../ssh/index.md) that is +[added to your GitLab account](../../ssh/index.md#add-an-ssh-key-to-your-gitlab-account). +- You must have permission to add new projects to a namespace. To check if you have permission: -To use a custom project template on the **New project** page: + 1. On the top bar, select **Menu > Project**. + 1. Select **Groups**. + 1. Select a group. + 1. Confirm that **New project** is visible in the upper right + corner. Contact your GitLab + administrator if you require permission. -1. Click **Create from template** -1. Select the **Instance** tab or the **Group** tab. -1. From the list of available custom templates, click the: - - **Preview** button to look at the template source itself. - - **Use template** button to start creating the project. -1. Finish creating the project by filling out the project's details. The process is - the same as creating a [blank project](#blank-projects). +To push your repository and create a project: -## Push to create a new project +1. Push with SSH or HTTPS: + - To push with SSH: -> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/26388) in GitLab 10.5. + ```shell + git push --set-upstream git@gitlab.example.com:namespace/myproject.git master + ``` -When you create a new repository locally, you don't have to sign in to the GitLab -interface to create a project and -[clone its repository](../../gitlab-basics/start-using-git.md#clone-a-repository). -You can directly push your new repository to GitLab, which creates your new project -without leaving your terminal. - -To push a new project: - -1. Identify the [namespace](../group/index.md#namespaces) you want to add the new - project to, as you need this information in a future step. To determine if you have - permission to create new projects in a namespace, view the group's page in a - web browser and confirm the page displays a **New project** button. - - NOTE: - As project creation permissions can have many factors, contact your - GitLab administrator if you're unsure. - -1. If you want to push using SSH, ensure you have [created a SSH key](../../ssh/index.md) and - [added it to your GitLab account](../../ssh/index.md#add-an-ssh-key-to-your-gitlab-account). -1. Push with one of the following methods. Replace `gitlab.example.com` with the - domain name of the machine that hosts your Git repository, `namespace` with the name of - your namespace, and `myproject` with the name of your new project: - - To push with SSH: `git push --set-upstream git@gitlab.example.com:namespace/myproject.git master` - - To push with HTTPS: `git push --set-upstream https://gitlab.example.com/namespace/myproject.git master` - Optional: to export existing repository tags, append the `--tags` flag to your `git push` command. -1. When the push completes, GitLab displays a message: - - ```plaintext - remote: The private project namespace/myproject was created. - ``` + - To push with HTTPS: -1. (Optional) To configure the remote, alter the command - `git remote add origin https://gitlab.example.com/namespace/myproject.git` - to match your namespace and project names. + ```shell + git push --set-upstream https://gitlab.example.com/namespace/myproject.git master + ``` -You can view your new project at `https://gitlab.example.com/namespace/myproject`. -Your project's visibility is set to **Private** by default, but you can change it -in your [project's settings](../../public_access/public_access.md#change-project-visibility)). + - For `gitlab.example.com`, use the domain name of the machine that hosts your Git repository. + - For `namespace`, use the name of your [namespace](../group/index.md#namespaces). + - For `myproject`, use the name of your project. + - Optional. To export existing repository tags, append the `--tags` flag to your `git push` command. +1. Optional. To configure the remote: -This feature does not work for project paths that have previously been in use and -[renamed](settings/index.md#renaming-a-repository). A redirect exists over the previous project path -that causes push attempts to redirect requests to the renamed project location, instead of creating -a new project. To create a new project, use the [Web UI](#create-a-project) or the -[Projects API](../../api/projects.md#create-project). + ```shell + git remote add origin https://gitlab.example.com/namespace/myproject.git + ``` -## Fork a project +When the push completes, GitLab displays the message: -A fork is a copy of an original repository that you put in another namespace -where you can experiment and apply changes that you can later decide whether or -not to share, without affecting the original project. +```shell +remote: The private project namespace/myproject was created. +``` -It takes just a few steps to [fork a project in GitLab](repository/forking_workflow.md#creating-a-fork). +To view your new project, go to `https://gitlab.example.com/namespace/myproject`. +Your project's visibility is set to **Private** by default. To change project visibility, adjust your +[project's settings](../../public_access/public_access.md#change-project-visibility). ## Star a project -You can star a project to make it easier to find projects you frequently use. -The number of stars a project has can indicate its popularity. +You can add a star to projects you use frequently to make them easier to find. -To star a project: +To add a star to a project: -1. Go to the home page of the project you want to star. -1. In the upper right corner of the page, click **Star**. +1. On the top bar, select **Menu > Project**. +1. Select **Your projects** or **Explore projects**. +1. Select a project. +1. In the upper right corner of the page, select **Star**. -To view your starred projects: +## View starred projects -1. On the top bar, select **Menu > Projects**. -1. Select **Starred Projects**. +1. On the top bar, select **Menu > Project**. +1. Select **Starred projects**. 1. GitLab displays information about your starred projects, including: - - Project description, including name, description, and icon - - Number of times this project has been starred - - Number of times this project has been forked - - Number of open merge requests - - Number of open issues + - Project description, including name, description, and icon. + - Number of times this project has been starred. + - Number of times this project has been forked. + - Number of open merge requests. + - Number of open issues. ## Delete a project -To delete a project, first navigate to the home page for that project. +After you delete a project, projects in personal namespaces are deleted immediately. To delay deletion of projects in a group +you can [enable delayed project removal](../group/index.md#enable-delayed-project-deletion). -1. Navigate to **Settings > General**. +To delete a project: + +1. On the top bar, select **Menu > Project**. +1. Select **Your projects** or **Explore projects**. +1. Select a project. +1. Select **Settings > General**. 1. Expand the **Advanced** section. 1. Scroll down to the **Delete project** section. -1. Click **Delete project** -1. Confirm this action by typing in the expected text. +1. Select **Delete project** +1. Confirm this action by completing the field. -Projects in personal namespaces are deleted immediately on request. For information on delayed deletion of projects in a group, please see [Enable delayed project removal](../group/index.md#enable-delayed-project-removal). +## View project activity -## Project settings +To view the activity of a project: -Set the project's visibility level and the access levels to its various pages -and perform actions like archiving, renaming or transferring a project. +1. On the top bar, select **Menu > Project**. +1. Select **Your projects** or **Explore projects**. +1. Select a project. +1. On the left sidebar, select **Project information > Activity**. +1. Select a tab to view the type of project activity. -Read through the documentation on [project settings](settings/index.md). +## Leave a project -## Project activity +If you leave a project you are no longer a project +member and cannot contribute. -To view the activity of a project: +To leave a project: -1. On the left sidebar, select **Project information > Activity**. -1. Select a tab to view **All** the activity, or to filter it by any of these criteria: - - **Push events** - - **Merge events** - - **Issue events** - - **Comments** - - **Team** - - **Wiki** - -### Leave a project - -**Leave project** only displays 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 are no longer a project -member, and cannot contribute. - -## Use your project as a Go package - -Any project can be used as a Go package. GitLab responds correctly to `go get` -and `godoc.org` discovery requests, including the -[`go-import`](https://golang.org/cmd/go/#hdr-Remote_import_paths) and -[`go-source`](https://github.com/golang/gddo/wiki/Source-Code-Links) meta tags. - -Private projects, including projects in subgroups, can be used as a Go package, -but may require configuration to work correctly. GitLab responds correctly -to `go get` discovery requests for projects that *are not* in subgroups, -regardless of authentication or authorization. -[Authentication](#authenticate-go-requests) is required to use a private project -in a subgroup as a Go package. Otherwise, GitLab truncates the path for -private projects in subgroups to the first two segments, causing `go get` to -fail. - -GitLab implements its own Go proxy. This feature must be enabled by an -administrator and requires additional configuration. See [GitLab Go -Proxy](../packages/go_proxy/index.md). - -### Disable Go module features for private projects - -In Go 1.12 and later, Go queries module proxies and checksum databases in the -process of [fetching a -module](../../development/go_guide/dependencies.md#fetching). This can be -selectively disabled with `GOPRIVATE` (disable both), -[`GONOPROXY`](../../development/go_guide/dependencies.md#proxies) (disable proxy -queries), and [`GONOSUMDB`](../../development/go_guide/dependencies.md#fetching) -(disable checksum queries). - -`GOPRIVATE`, `GONOPROXY`, and `GONOSUMDB` are comma-separated lists of Go -modules and Go module prefixes. For example, -`GOPRIVATE=gitlab.example.com/my/private/project` disables queries for that -one project, but `GOPRIVATE=gitlab.example.com` disables queries for *all* -projects on GitLab.com. Go does not query module proxies if the module name or a -prefix of it appears in `GOPRIVATE` or `GONOPROXY`. Go does not query checksum -databases if the module name or a prefix of it appears in `GONOPRIVATE` or -`GONOSUMDB`. - -### Authenticate Go requests - -To authenticate requests to private projects made by Go, use a [`.netrc` -file](https://everything.curl.dev/usingcurl/netrc) and a [personal access -token](../profile/personal_access_tokens.md) in the password field. **This only -works if your GitLab instance can be accessed with HTTPS.** The `go` command -does not transmit credentials over insecure connections. This authenticates -all HTTPS requests made directly by Go, but does not authenticate requests made -through Git. +1. On the top bar, select **Menu > Project**. +1. Select **Your projects** or **Explore projects**. +1. Select a project. +1. Select **Leave project**. The **Leave project** option only displays +on the project dashboard when a project is part of a group under a +[group namespace](../group/index.md#namespaces). -For example: +## Use a project as a Go package + +Prerequisites: + +- Contact your administrator to enable the [GitLab Go Proxy](../packages/go_proxy/index.md). +- To use a private project in a subgroup as a Go package, you must [authenticate Go requests](#authenticate-go-requests-to-private-projects). Go requests that are not authenticated cause +`go get` to fail. You don't need to authenticate Go requests for projects that are not in subgroups. + +To use a project as a Go package, use the `go get` and `godoc.org` discovery requests. You can use the meta tags: + +- [`go-import`](https://pkg.go.dev/cmd/go#hdr-Remote_import_paths) +- [`go-source`](https://github.com/golang/gddo/wiki/Source-Code-Links) + +### Authenticate Go requests to private projects + +Prerequisites: + +- Your GitLab instance must be accessible with HTTPS. +- You must have a [personal access token](../profile/personal_access_tokens.md). + +To authenticate Go requests, create a [`.netrc`](https://everything.curl.dev/usingcurl/netrc) file with the following information: ```plaintext machine gitlab.example.com @@ -335,95 +349,110 @@ login <gitlab_user_name> password <personal_access_token> ``` -NOTE: On Windows, Go reads `~/_netrc` instead of `~/.netrc`. -### Authenticate Git fetches +The `go` command does not transmit credentials over insecure connections. It authenticates +HTTPS requests made by Go, but does not authenticate requests made +through Git. -If a module cannot be fetched from a proxy, Go falls back to using Git (for -GitLab projects). Git uses `.netrc` to authenticate requests. You can also -configure Git to either: +### Authenticate Git requests -- Embed specific credentials in the request URL. -- Use SSH instead of HTTPS, as Go always uses HTTPS to fetch Git repositories. +If Go cannot fetch a module from a proxy, it uses Git. Git uses a `.netrc` file to authenticate requests, but you can +configure other authentication methods. -```shell -# Embed credentials in any request to GitLab.com: -git config --global url."https://${user}:${personal_access_token}@gitlab.example.com".insteadOf "https://gitlab.example.com" +Configure Git to either: -# Use SSH instead of HTTPS: -git config --global url."git@gitlab.example.com".insteadOf "https://gitlab.example.com" -``` +- Embed credentials in the request URL: -### Fetch Go modules from Geo secondary sites + ```shell + git config --global url."https://${user}:${personal_access_token}@gitlab.example.com".insteadOf "https://gitlab.example.com" + ``` + +- Use SSH instead of HTTPS: + + ```shell + git config --global url."git@gitlab.example.com".insteadOf "https://gitlab.example.com" + ``` + +### Disable Go module fetching for private projects + +To [fetch modules or packages](../../development/go_guide/dependencies.md#fetching), Go uses +the [environment variables](../../development/go_guide/dependencies.md#proxies): -As Go modules are stored in Git repositories, you can use the [Geo](../../administration/geo/index.md) -feature that allows Git repositories to be accessed on the secondary Geo servers. +- `GOPRIVATE` +- `GONOPROXY` +- `GONOSUMDB` -In the following examples, the primary's site domain name is `gitlab.example.com`, -and the secondary's is `gitlab-secondary.example.com`. +To disable fetching: -`go get` will initially generate some HTTP traffic to the primary, but when the module -download commences, the `insteadOf` configuration sends the traffic to the secondary. +1. Disable `GOPRIVATE`: + - To disable queries for one project, disable `GOPRIVATE=gitlab.example.com/my/private/project`. + - To disable queries for all projects on GitLab.com, disable `GOPRIVATE=gitlab.example.com`. +1. Disable proxy queries in `GONOPROXY`. +1. Disable checksum queries in `GONOSUMDB`. -#### Use SSH to access the Geo secondary +- If the module name or its prefix is in `GOPRIVATE` or `GONOPROXY`, Go does not query module +proxies. +- If the module name or its prefix is in `GONOPRIVATE` or `GONOSUMDB`, Go does not query +Checksum databases. -To fetch Go modules from the secondary using SSH: +### Fetch Go modules from Geo secondary sites + +Use [Geo](../../administration/geo/index.md) to access Git repositories that contain Go modules +on secondary Geo servers. + +You can use SSH or HTTP to access the Geo secondary server. + +#### Use SSH to access the Geo secondary server + +To access the Geo secondary server with SSH: 1. Reconfigure Git on the client to send traffic for the primary to the secondary: - ```plaintext + ```shell git config --global url."git@gitlab-secondary.example.com".insteadOf "https://gitlab.example.com" git config --global url."git@gitlab-secondary.example.com".insteadOf "http://gitlab.example.com" ``` -1. Ensure the client is set up for SSH access to GitLab repositories. This can be tested on the primary, - and GitLab will replicate the public key to the secondary. + - For `gitlab.example.com`, use the primary site domain name. + - For `gitlab-secondary.example.com`, use the secondary site domain name. + +1. Ensure the client is set up for SSH access to GitLab repositories. You can test this on the primary, + and GitLab replicates the public key to the secondary. + +The `go get` request generates HTTP traffic to the primary Geo server. When the module +download starts, the `insteadOf` configuration sends the traffic to the secondary Geo server. #### Use HTTP to access the Geo secondary -Using HTTP to fetch Go modules does not work with CI/CD job tokens, only with -persistent access tokens that are replicated to the secondary. +You must use persistent access tokens that replicate to the secondary server. You cannot use +CI/CD job tokens to fetch Go modules with HTTP. -To fetch Go modules from the secondary using HTTP: +To access the Geo secondary server with HTTP: -1. Put in place a Git `insteadOf` redirect on the client: +1. Add a Git `insteadOf` redirect on the client: - ```plaintext + ```shell git config --global url."https://gitlab-secondary.example.com".insteadOf "https://gitlab.example.com" ``` + - For `gitlab.example.com`, use the primary site domain name. + - For `gitlab-secondary.example.com`, use the secondary site domain name. + 1. Generate a [personal access token](../profile/personal_access_tokens.md) and - provide those credentials in the client's `~/.netrc` file: + add the credentials in the client's `~/.netrc` file: - ```plaintext + ```shell machine gitlab.example.com login USERNAME password TOKEN machine gitlab-secondary.example.com login USERNAME password TOKEN ``` -## Access project page with project ID +The `go get` request generates HTTP traffic to the primary Geo server. When the module +download starts, the `insteadOf` configuration sends the traffic to the secondary Geo server. -> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/53671) in GitLab 11.8. +## Related topics -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. - -## Project's landing page - -The project's landing page shows different information depending on -the project's visibility settings and user permissions. - -For public projects, and to members of internal and private projects -with [permissions to view the project's code](../permissions.md#project-members-permissions): - -- The content of a - [`README` or an index file](repository/index.md#readme-and-index-files) - is displayed (if any), followed by the list of directories in the - project's repository. -- If the project doesn't contain either of these files, the - visitor sees the list of files and directories of the repository. - -For users without permissions to view the project's code, GitLab displays: - -- The wiki homepage, if any. -- The list of issues in the project. +- [Import a project](../../user/project/import/index.md). +- [Connect an external repository to GitLab CI/CD](../../ci/ci_cd_for_external_repos/index.md). +- [Fork a project](repository/forking_workflow.md#creating-a-fork). +- [Adjust project visibility and access levels](settings/index.md#sharing-and-permissions). |