README.md 12.1 KB
Newer Older
F
Fatih Acet 已提交
1
# <img src="https://gitlab.com/fatihacet/gitlab-vscode-extension/raw/master/src/assets/logo.png" width="64" align="center" /> [GitLab VSCode Extension](https://gitlab.com/fatihacet/gitlab-vscode-extension)
F
Fatih Acet 已提交
2

F
Fatih Acet 已提交
3 4
[![Marketplace Version](https://vsmarketplacebadge.apphb.com/version/fatihacet.gitlab-workflow.svg)](https://marketplace.visualstudio.com/items?itemName=fatihacet.gitlab-workflow) [![Installs](https://vsmarketplacebadge.apphb.com/installs/fatihacet.gitlab-workflow.svg)](https://marketplace.visualstudio.com/items?itemName=fatihacet.gitlab-workflow)

M
Matthias Wirtz 已提交
5
This extension integrates GitLab to VSCode by adding GitLab specific options to VSCode command palette and status bar.
F
Fatih Acet 已提交
6 7


F
Fatih Acet 已提交
8 9 10 11 12
## Screencast

[![video-cover](https://gitlab.com/fatihacet/gitlab-vscode-extension/raw/master/src/assets/screencast-cover.jpg)](https://www.youtube.com/watch?v=XcxsF0lWBhA)


F
Fatih Acet 已提交
13 14 15 16 17 18 19
## Features

- See pipeline status, open MR and closing issue links in status bar. [Read more](#status-bar).
- Automatically updates pipeline status on status bar so you don't need to open GitLab to see your pipeline status.
- Advanced pipeline actions allows you to view pipeline on GitLab, create new pipeline, retry or cancel current pipeline. [Read more](#pipeline-actions).
- Issue and MR search including simple and advanced search. [Read more](#advanced-search).
- View MR and closing issue on GitLab with a single click from your status bar.
F
Fatih Acet 已提交
20
- Create public, internal or private snippet from entire file or selection. [Read more](#create-snippet).
F
Fatih Acet 已提交
21
- Compare your branch with master and view changes on GitLab. [Read more](#compare-with-master).
F
Fatih Acet 已提交
22
- View active file on GitLab with highlighting active line number and selected text block. [Read more](#open-active-file).
F
Fatih Acet 已提交
23
- Validate GitLab CI configuration file `.gitlab-ci.yml`. [Read more](#validate-gitlab-ci-configuration).
F
Fatih Acet 已提交
24 25 26 27 28
- Open MR of current branch on GitLab.
- Open issues assigned to you on GitLab.
- Open MRs assigned to you on GitLab.
- Open pipeline on GitLab.
- Open project on GitLab.
29 30
- Open issue page to create a new issue.
- Open merge request page to create a merge request.
F
Fatih Acet 已提交
31 32
- Set and remove your GitLab Personal Access Token. _Required step, see [Setup](#setup) section below._
- Supports multiple GitLab instances [Read more](#multiple-gitlab-instances).
F
Fatih Acet 已提交
33

34 35
**Curious to know what's next?** [See here](#whats-next)

F
Fatih Acet 已提交
36

F
Fatih Acet 已提交
37
## Setup
F
Fatih Acet 已提交
38

F
Fatih Acet 已提交
39
To use this extension, you need to create a GitLab Personal Access Token and give it to the extension.
F
Fatih Acet 已提交
40

F
Fatih Acet 已提交
41
##### Step 1: Create your Personal Access Token
42 43 44
- If you are using
  - GitLab.com [click to open Personal Access Tokens page](https://gitlab.com/profile/personal_access_tokens).
  - Self hosted GitLab instance go to "Settings" and click "Access Tokens" on the left navigation menu
F
Fatih Acet 已提交
45 46 47 48 49 50
- On "Add a personal access token" form
  - Give a name to your token.
  - Select and expiry date.
  - Select "api" and "read_user" permissions.
  - Hit "Create personal access token" button.
- Copy the token. _Remember you won't be able to see value of this token ever again for security reasons._
F
Fatih Acet 已提交
51

F
Fatih Acet 已提交
52 53 54
##### Step 2: Add token to GitLab Workflow Extension
- Open up Command Palette by pressing `Cmd+Shift+P`.
- Search for "GitLab: Set GitLab Personal Access Token" and hit Enter.
55
- Enter the URL to the Gitlab instance the PAT should apply to and hit Enter.
M
Matthias Wirtz 已提交
56
- Extension will ask for your PAT. Paste your PAT and hit Enter. _It won't be visible and accessible to others._
F
Fatih Acet 已提交
57

F
Fatih Acet 已提交
58
That's it. 🏁
F
Fatih Acet 已提交
59

F
Fatih Acet 已提交
60
You can start using this extension right away. If your project has a pipeline for last commit and a MR from your current branch, you should see them on VSCode status bar. 🎉
F
Fatih Acet 已提交
61

F
Fatih Acet 已提交
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
#### Multiple Gitlab instances

If you want to use multiple GitLab instances you may want to configure each workspace separately. See `gitlab.instanceUrl` config option in [Configuration Options](#configuration-options) section.


## Configuration options

**`gitlab.instanceUrl`** _(required: false, default: "https://gitlab.com")_

If you are using GitLab on a custom domain, you should add this to your user settings file. Example: `"gitlab.instanceUrl": "https://my-gitlab-domain.com"`

To enable Gitlab Workflow extension to work with different Gitlab instances, each token is assigned to a Gitlab instance URL. For the extension to selected the correct token for a specific workspace, the option [`gitlab.instanceUrl`](#configuration-options) can be used. This option can be set in the current workspace's `.vscode/settings.json` file.

**`gitlab.showIssueLinkOnStatusBar`** _(required: false, default: true)_

If you are not using GitLab's issue tracker, you may want to set this `false` to remove related issue link on status bar. You should restart your VSCode after updating this option.

**`gitlab.ca`** _(required: false, default: null)_

If your self hosted GitLab instance has a self signed SSL certificate you would probably need to set this option in to point your cetrificate file. More discussion can be found [in this issue](https://gitlab.com/fatihacet/gitlab-vscode-extension/issues/26).

**`gitlab.ignoreCertificateErrors`**  _(required: false, default: false)_

If you are using a self hosted GitLab instance with no SSL certificate or having certificate issues and unable to use the extension you may want to set this option to `true` to ignore certificate errors. More information can be found [here](https://gitlab.com/fatihacet/gitlab-vscode-extension/issues/26#note_61312786).

> You can open User Settings file by pressing `Cmd+,` on Mac OS or following `Code > Preferences > User Settings`. You can simply add extension configuration values to you User Settings file. This won't break or change anything on your VSCode.

89

F
Fatih Acet 已提交
90
## Usage
F
Fatih Acet 已提交
91
- Open up Command Palette by pressing `Cmd+Shift+P`.
F
Fatih Acet 已提交
92
- Search for `GitLab:` and you will see all commands provided by the extension.
F
Fatih Acet 已提交
93 94

![https://gitlab.com/fatihacet/gitlab-vscode-extension/raw/master/src/assets/gitlab-vscode.png](https://gitlab.com/fatihacet/gitlab-vscode-extension/raw/master/src/assets/gitlab-vscode.png)
F
Fatih Acet 已提交
95

F
Fatih Acet 已提交
96 97
![https://gitlab.com/fatihacet/gitlab-vscode-extension/raw/master/src/assets/pipeline-actions.png](https://gitlab.com/fatihacet/gitlab-vscode-extension/raw/master/src/assets/pipeline-actions.png)

F
Fatih Acet 已提交
98

F
Fatih Acet 已提交
99
## Features in depth
F
Fatih Acet 已提交
100

F
Fatih Acet 已提交
101 102
### Advanced Search
GitLab Workflow extension provides you two types of search. Basic and advanced search. Basic search is quick however advanced search is more powerful which allows you to filter issues by author, assignee, milestone, title etc.
F
Fatih Acet 已提交
103

F
Fatih Acet 已提交
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
To use basic search, in the search input, you can type your search term and hit Enter. This will search issues/MRs against their title and description fields. Example: `Inconsistent line endings for HEX files` or `Pipelines should ignore retried builds`.

You can perform advanced issue/MR search by using some predefined tokens. Full list below.

|Token|Description|Example|
|-|-|-|
|title|Search issues/MRs against their title and description. You don't need to add quotes around multiple words. See Important notes section.|discussions refactor|
|labels|Comma separated label list for multiple labels.|`labels: frontend, Discussion, performance`|
|label|To search with a single label. You can also have multiple `label` tokens.|`label: frontend` or `label:frontend label: Discussion`
|milestone|Milestone title without `%`.|`milestone: 9.5`|
|scope|Searches issues/MRs for the given scope. Values can be `created-by-me`, `assigned-to-me` or `all`. Defaults to `created-by-me`.|`scope: created-by-me` or `scope: assigned-to-me` or `scope: all`.|
|author|Username of the author without `@`.|`author: fatihacet`|
|assignee|Username of the assignee without `@`.|`assignee: timzallmann`|

**Examples**
- `title: new merge request widget author: fatihacet assignee: jschatz1 labels: frontend, performance milestone: 10.5`
- `title: multiple group page author: annabeldunstone assignee: timzallmann label: frontend`

**Important notes**
- `:` after token name is necessary. `label :` is not a valid token name and may return parsing error. Hence `label:` should be used. However space after token name is optional. Both `label: frontend` and `label:frontend` is valid. This rule is valid for all tokens above.
- You don't need to add quotes around multiple words for `title` token. `title:"new merge request widget"` may return parsing error. `title: new merge request widget` should be used.
- You can have `labels` and `label` tokens at the same time. `labels: fronted discussion label: performance` is a valid query and all labels will be included in search. This example is equal with `labels: fronted discussion performance`. You can also have multiple `label` tokens. `label: frontend label: discussion label: performance` is valid and equal to `labels: fronted discussion performance`.

![_advanced-search.gif](https://gitlab.com/fatihacet/gitlab-vscode-extension/raw/master/src/assets/_advanced-search.gif)


### Pipeline actions
One of the real power features of this extension is pipeline actions. This feature can be accessible from status bar by clicking the pipeline status text or command palette and allows you to,

M
Matthias Wirtz 已提交
133
- View latest pipeline on GitLab
F
Fatih Acet 已提交
134 135 136 137 138 139 140 141
- Create a new pipeline for your current branch
- Retry last pipeline
- Cancel last pipeline

![_pipeline_actions.gif](https://gitlab.com/fatihacet/gitlab-vscode-extension/raw/master/src/assets/_pipeline_actions.gif)


### Status bar
M
Matthias Wirtz 已提交
142
If your current project is a GitLab project, extension will do the following things:
F
Fatih Acet 已提交
143

F
Fatih Acet 已提交
144 145 146
- Fetch pipeline of last commit and show it on the status bar. Clicking this item will open pipeline actions menu.
- Show open MR for current branch and show it on the status bar. Clicking this item will open MR on GitLab.
- Fetch closing issue of that MR and show it on the status bar. Clicking this item will open Issue on GitLab.
F
Fatih Acet 已提交
147

F
Fatih Acet 已提交
148 149 150
![_status_bar.gif](https://gitlab.com/fatihacet/gitlab-vscode-extension/raw/master/src/assets/_status-bar.gif)


F
Fatih Acet 已提交
151 152 153 154 155 156
### Create snippet
You can create snippet from selection or entire file. You can also select visibility level of your snippet.

![_create-snippet.gif](https://gitlab.com/fatihacet/gitlab-vscode-extension/raw/master/src/assets/_create-snippet.gif)


F
Fatih Acet 已提交
157 158 159 160 161 162 163
### Compare with master
You can see changes in your branch by comparing with `master` and see them on GitLab.

![_compare-with-master.gif](https://gitlab.com/fatihacet/gitlab-vscode-extension/raw/master/src/assets/_compare-with-master.gif)

> Soon extension will support comparing with other branches.

F
Fatih Acet 已提交
164

F
Fatih Acet 已提交
165 166 167 168 169
### Open active file
This command allows you to see active file on GitLab. Extension sends active line number and selected text block to GitLab UI so you can see them highlighted.

![_open_active_file.gif](https://gitlab.com/fatihacet/gitlab-vscode-extension/raw/master/src/assets/_open_active_file.gif)

F
Fatih Acet 已提交
170

F
Fatih Acet 已提交
171 172 173 174 175
### Validate GitLab CI Configuration
Using this command, you can quickly validate GitLab CI configuration.

![_validate-ci-config.gif](https://gitlab.com/fatihacet/gitlab-vscode-extension/raw/master/src/assets/_validate-ci-config.gif)

F
Fatih Acet 已提交
176 177
-----

178 179 180
### Caveats and known issues
- The current version of the extension doesn't support multi-root workspaces. It's planned for the 1.0 major version.

F
Fatih Acet 已提交
181

F
Fatih Acet 已提交
182 183 184 185 186 187
## What's next?
- Open last commit on GitLab.
- MR actions picker which will allow you to
  - Go to specific MR tab, Discussions, Commits, Pipelines, Changes.
  - Assign MR to user.
  - View last commit.
F
Fatih Acet 已提交
188 189 190 191 192 193 194
- **[moonshot]** MR diff discussions on VSCode gutter with user avatars like we have in GitLab Changes tab.
- **Already Shipped**
  - `[v0.2.2]` Pipeline link to pipeline status bar item.
  - `[v0.2.2]` View last pipeline on GitLab.
  - `[v0.3.0]` Pipeline actions menu to quickly view, retry, cancel or create a new pipeline.
  - `[v0.4.0]` Issue and MR search.
  - `[v0.4.0]` Detailed issue and MR search.
F
Fatih Acet 已提交
195
  - `title:MR discussions refactor labels:frontend, discussions assignee:fatihacet`
F
Fatih Acet 已提交
196 197 198
  - `[v0.4.0]` Compare your changes with master on GitLab.
  - `[v0.5.0]` Create snippet from selected text
  - `[v0.5.0]` GitLab CI config file `(.gitlab-ci.yml)` validation
F
Fatih Acet 已提交
199 200 201


## Contribution
F
Fatih Acet 已提交
202
This extension is open source and [hosted on GitLab](https://gitlab.com/fatihacet/gitlab-vscode-extension). Contributions are more than welcome. Feel free to fork and add new features or submit bug reports.
F
Fatih Acet 已提交
203 204

[Here](https://gitlab.com/fatihacet/gitlab-vscode-extension/blob/master/CONTRIBUTORS.md) is the list of great people who contributed this project and make it even more awesome. Thank you all 🎉