Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add gitlab documentation #701

Merged
merged 4 commits into from
Dec 8, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@
* [Health notifications](administration/integrations/notifications.md)
* [New Relic](administration/integrations/new-relic.md)
* [GitHub](administration/integrations/github.md)
* [GitLab](administration/integrations/gitlab.md)
* [HipChat](administration/integrations/hipchat.md)
* [Tideways](administration/integrations/tideways.md)
* [Web hooks](administration/integrations/webhooks.md)
Expand Down
64 changes: 64 additions & 0 deletions src/administration/integrations/gitlab.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# GitLab

The [GitLab](https://gitlab.com) integration allows you to manage your Platform.sh environments directly from your GitLab repository.

Features supported:

* Create a new environment when creating a branch or opening a pull request on GitLab.
* Rebuild the environment when pushing new code to GitLab.
* Delete the environment when merging a pull request.

## Setup

### 1. Generate a token

To integrate your Platform.sh project with an existing GitLab repository, you first need to generate a token on your GitLab user profile. Simply go to your Settings page on GitLab and click `Access Tokens`.

Fill the `Name` field for example with "Platform.sh Integration" and optionally set an expiration time.

Give it a description and then ensure the token has the following scopes:

* `api` - Access your API
* `read_user` - Read user information
* `read_registry` - Read Registry

Copy the token and make a note of it (temporarily).

Note that for the integration to work, your GitLab user needs to have permission to push code to the repository.

### 2. Enable the integration

Note that only `project owner` or `project admin` can manage the integrations.

Open a terminal window (you need to have the Platform.sh CLI installed). Enable the GitLab integration as follows:

```bash
platform integration:add --type=gitlab --token=THE-TOKEN-YOU-WROTE-DOWN --base-url=https://THE-URL-OF-YOUR-GITLAB/ --gitlab-project=MY-NAMESPACE/MY-PROJECTNAME
```

Optional parameters:
* `--fetch-branches`: Track and deploy branches (true by default)
* `--build-merge-requests`: Track and deploy merge-requests (true by default)
* `--merge-requests-clone-parent-data` : should merge requests clone the data from the parent environment (true by default)

### 3. Add the webhook
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't add the hook automatically?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't believe so. If we can that would be a very good thing (also for github etc.. there is a ticket for that)


The previous command, if succesful should output the configuration of the integration. The last element would look like:

```
| hook_url | https://{region}.platform.sh/api/projects/{projectid}/integrations/{hook_id}/hook |
```

Now, copy the hook URL.

Go to your GitLab repository and click `Settings > Integrations` and paste the Payload URL, in the Triggers section choose
`Push events`, `Tag push events` and `Merge Request events`. And click on `Add webhook`.

You can now start pushing code, creating new branches or opening merge requests directly on your GitLab repository. You will see environments get automatically created and updated on the Platform.sh side.


## Types of environments

Environments based on GitLab **merge requests** will have the correct 'parent' environment on Platform.sh; they will be activated automatically with a copy of the parent's data (unless you have set the option `merge-requests-clone-parent-data` to false).

However, environments based on (non-merge-request) **branches** cannot have parents; they will inherit directly from `master` and start inactive by default.