PageRenderTime 27ms CodeModel.GetById 32ms RepoModel.GetById 1ms app.codeStats 0ms

/docs/faq/README.md

https://gitlab.com/savitojs/gitlab-ci-multi-runner
Markdown | 301 lines | 212 code | 89 blank | 0 comment | 0 complexity | b1d432322b981cddca5fec2f165b9e58 MD5 | raw file
  1. # FAQ
  2. Some Frequently Asked Questions about GitLab Runner.
  3. ## What does `coordinator` mean?
  4. The `coordinator` is the GitLab installation from which a job is requested.
  5. In other words, runners are isolated (virtual) machines that pick up jobs
  6. requested by their `coordinator`.
  7. ## Where are logs stored when run as a service?
  8. + If the GitLab Runner is run as service on Linux/OSX the daemon logs to syslog.
  9. + If the GitLab Runner is run as service on Windows it logs to System's Event Log.
  10. ## Run in `--debug` mode
  11. Is it possible to run GitLab Runner in debug/verbose mode. From a terminal, do:
  12. ```
  13. gitlab-runner --debug run
  14. ```
  15. ## I get a PathTooLongException during my builds on Windows
  16. This is caused by tools like `npm` which will sometimes generate directory structures
  17. with paths more than 260 characters in length. There are two possible fixes you can
  18. adopt to solve the problem.
  19. ### a) Use Git with core.longpaths enabled
  20. You can avoid the problem by using Git to clean your directory structure, first run
  21. `git config --system core.longpaths true` from the command line and then set your
  22. project to use *git fetch* from the GitLab CI project settings page.
  23. ### b) Use NTFSSecurity tools for PowerShell
  24. The [NTFSSecurity](https://ntfssecurity.codeplex.com/) PowerShell module provides
  25. a *Remove-Item2* method which supports long paths. The Gitlab CI Multi Runner will
  26. detect it if it is available and automatically make use of it.
  27. ## I'm seeing `x509: certificate signed by unknown authority`
  28. Please [See the self-signed certificates](../configuration/tls-self-signed.md)
  29. ## I get `Permission Denied` when accessing the `/var/run/docker.sock`
  30. If you want to use Docker executor,
  31. and you are connecting to Docker Engine installed on server.
  32. You can see the `Permission Denied` error.
  33. The most likely cause is that your system uses SELinux (enabled by default on CentOS, Fedora and RHEL).
  34. Check your SELinux policy on your system for possible denials.
  35. ## The Docker executor gets timeout when building Java project.
  36. This most likely happens, because of the broken AUFS storage driver:
  37. [Java process hangs on inside container](https://github.com/docker/docker/issues/18502).
  38. The best solution is to change the [storage driver](https://docs.docker.com/engine/userguide/storagedriver/selectadriver/)
  39. to either OverlayFS (faster) or DeviceMapper (slower).
  40. Check this article about [configuring and running Docker](https://docs.docker.com/engine/articles/configuring/)
  41. or this article about [control and configure with systemd](https://docs.docker.com/engine/articles/systemd/).
  42. ## I get 411 when uploading artifacts.
  43. This happens due to fact that runner uses `Transfer-Encoding: chunked` which is broken on early version of Nginx (http://serverfault.com/questions/164220/is-there-a-way-to-avoid-nginx-411-content-length-required-errors).
  44. Upgrade your Nginx to newer version. For more information see this issue: https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/1031
  45. ## I can't run Windows BASH scripts; I'm getting `The system cannot find the batch label specified - buildscript`.
  46. You need to prepend `call` to your batch file line in .gitlab-ci.yml so that it looks like `call C:\path\to\test.bat`. Here
  47. is a more complete example:
  48. ```
  49. before_script:
  50. - call C:\path\to\test.bat
  51. ```
  52. Additional info can be found under issue [#1025](https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/1025).
  53. ## My gitlab runner is on Windows. How can I get colored output on the web terminal?
  54. **Short answer:**
  55. Make sure that you have the ANSI color codes in your program's output. For the purposes of text formatting, assume that you're
  56. running in a UNIX ANSI terminal emulator (because that's what the webUI's output is).
  57. **Long Answer:**
  58. The web interface for gitlab-ci emulates a UNIX ANSI terminal (at least partially). The `gitlab-runner` pipes any output from the build
  59. directly to the web interface. That means that any ANSI color codes that are present will be honored.
  60. Windows' CMD terminal (before Win10 ([source](http://www.nivot.org/blog/post/2016/02/04/Windows-10-TH2-(v1511)-Console-Host-Enhancements)))
  61. does not support ANSI color codes - it uses win32 ([`ANSI.SYS`](https://en.wikipedia.org/wiki/ANSI.SYS)) calls instead which are **not** present in
  62. the string to be displayed. When writing cross-platform programs, a developer will typically use ANSI color codes by default and convert
  63. them to win32 calls when running on a Windows system (example: [Colorama](https://pypi.python.org/pypi/colorama)).
  64. If your program is doing the above, then you need to disable that conversion for the CI builds so that the ANSI codes remain in the string.
  65. See issue [#332](https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/332) for more information.
  66. ## "warning: You appear to have cloned an empty repository."
  67. When running `git clone` using HTTP(s) (with GitLab Runner or manually for
  68. tests) and you see the following output:
  69. ```bash
  70. $ git clone https://git.example.com/user/repo.git
  71. Cloning into 'repo'...
  72. warning: You appear to have cloned an empty repository.
  73. ```
  74. Make sure, that the configuration of the HTTP Proxy in your GitLab server
  75. installation is done properly. Especially if you are using some HTTP Proxy with
  76. its own configuration, make sure that GitLab requests are proxied to the
  77. **GitLab Workhorse socket**, not to the **GitLab unicorn socket**.
  78. Git protocol via HTTP(S) is resolved by the GitLab Workhorse, so this is the
  79. **main entrypoint** of GitLab.
  80. If you are using Omnibus GitLab, but don't want to use the bundled Nginx
  81. server, please read [using a non-bundled web-server][omnibus-ext-nginx].
  82. In gitlab-recipes repository there are [web-server configuration
  83. examples][recipes] for Apache and Nginx.
  84. If you are using GitLab installed from source, please also read the above
  85. documentation and examples, and make sure that all HTTP(S) traffic is going
  86. through the **GitLab Workhorse**.
  87. See [an example of a user issue][1105].
  88. [omnibus-ext-nginx]: http://doc.gitlab.com/omnibus/settings/nginx.html#using-a-non-bundled-web-server
  89. [recipes]: https://gitlab.com/gitlab-org/gitlab-recipes/tree/master/web-server
  90. [1105]: https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/1105
  91. ## `"launchctl" failed: exit status 112, Could not find domain for`
  92. This message may occur when you try to install GitLab Runner on OSX. Make sure
  93. that you manage GitLab Runner service from the GUI Terminal application, not
  94. the SSH connection.
  95. ## `Failed to authorize rights (0x1) with status: -60007.`
  96. If your Runner is stuck on the above message when using OSX, there are two
  97. causes to why this happens:
  98. 1. Make sure that your user can perform UI interactions:
  99. ```bash
  100. DevToolsSecurity -enable
  101. sudo security authorizationdb remove system.privilege.taskport is-developer
  102. ```
  103. The first command enables access to developer tools for your user.
  104. The second command allows the user who is member of the developer group to
  105. do UI interactions, e.g., run the iOS simulator.
  106. ---
  107. 2. Make sure that your Runner service doesn't use `SessionCreate = true`.
  108. Previously, when running GitLab Runner as a service, we were creating
  109. `LaunchAgents` with `SessionCreate`. At that point (**Mavericks**), this was
  110. the only solution to make Code Signing work. That changed recently with
  111. **OSX El Capitan** which introduced a lot of new security features that
  112. altered this behavior.
  113. Since GitLab Runner 1.1, when creating a `LaunchAgent`, we don't set
  114. `SessionCreate`. However, in order to upgrade, you need to manually
  115. reinstall the `LaunchAgent` script:
  116. ```
  117. gitlab-runner uninstall
  118. gitlab-runner install
  119. gitlab-runner start
  120. ```
  121. Then you can verify that `~/Library/LaunchAgents/gitlab-runner.plist` has
  122. `SessionCreate` set to `false`.
  123. ## `The service did not start due to a logon failure` error when starting service on Windows
  124. When installing and starting the GitLab Runner service on Windows you can
  125. meet with such error:
  126. ```
  127. $ gitlab-runner install --password WINDOWS_MACHINE_PASSWORD
  128. $ gitlab-runner start
  129. $ FATA[0000] Failed to start GitLab Runner: The service did not start due to a logon failure.
  130. ```
  131. This error can occur when the user used to execute the service doesn't have
  132. the `SeServiceLogonRight` permission. In such case you need to add this
  133. permission for the chosen user and then try to start the service again.
  134. You can add `SeServiceLogonRight` in two ways:
  135. 1. Manually using Administrative Tools:
  136. - Go to _Control Panel > System and Security > Administrative Tools_,
  137. - open the _Local Security Policy_ tool,
  138. - chose the _Security Settings > Local Policies > User Rights Assignment_ on the
  139. list on the left,
  140. - open the _Log on as a service_ on the list on the right,
  141. - click on the _Add User or Group..._ button,
  142. - add the user ("by hand" or using _Advanced..._ button) and apply the settings.
  143. > **Notice:** According to [Microsoft's documentation][microsoft-manually-set-seservicelogonright]
  144. > this should work for: Windows Vista, Windows Server 2008, Windows 7, Windows 8.1,
  145. > Windows Server 2008 R2, Windows Server 2012 R2, Windows Server 2012, Windows 8
  146. > **Notice:** The _Local Security Policy_ tool may be not available in some
  147. > Windows versions - for example in "Home Edition" variant of each version.
  148. 1. From command line, using the `Ntrights.exe` tool:
  149. - Download tools from [Microsoft's download site][microsoft-ntrights-download],
  150. - execute `ntrights.exe ntrights +r SeServiceLogonRight -u USER_NAME_HERE` (remember,
  151. that you should provide a full path for `ntrights.exe` executable **or** add that
  152. path to system's `PATH` environment variable).
  153. > **Notice:** The tool was created in 2003 and was initially designed to use
  154. > with Windows XP and Windows Server 2003. On [Microsoft sites][microsoft-ntrights-usage-on-win7]
  155. > you can find an example of usage `Ntrights.exe` that applies to Windows 7 and Windows Server 2008 R2.
  156. > This solution is not tested and because of the age of the software **it may not work
  157. > on newest Windows versions**.
  158. After adding the `SeServiceLogonRight` for the user used in service configuration,
  159. the command `gitlab-runner start` should finish without failures
  160. and the service should be started properly.
  161. [microsoft-manually-set-seservicelogonright]: https://technet.microsoft.com/en-us/library/dn221981
  162. [microsoft-ntrights-download]: https://www.microsoft.com/en-us/download/details.aspx?id=17657
  163. [microsoft-ntrights-usage-on-win7]: https://technet.microsoft.com/en-us/library/dd548356(WS.10).aspx
  164. ## `zoneinfo.zip: no such file or directory` error when using `OffPeakTimezone`
  165. In `v1.11.0` we made it possible to configure the timezone in which `OffPeakPeriods`
  166. are described. This feature should work on most Unix systems out of the box. However on some
  167. Unix systems, and probably on most non-Unix systems (including Windows, for which we're providing
  168. Runner's binaries), when used, the Runner will crash at start with an error similar to:
  169. ```
  170. Failed to load config Invalid OffPeakPeriods value: open /usr/local/go/lib/time/zoneinfo.zip: no such file or directory
  171. ```
  172. The error is caused by the `time` package in Go. Go uses the IANA Time Zone database to load
  173. the configuration of the specified timezone. On most Unix systems, this database is already present on
  174. one of well-known paths (`/usr/share/zoneinfo`, `/usr/share/lib/zoneinfo`, `/usr/lib/locale/TZ/`).
  175. Go's `time` package looks for the Time Zone database in all those three paths. If it doesn't find any
  176. of them, but the machine has a configured Go development environment (with a proper `$GOPATH`
  177. present for Runner's process), then it will fallback to the `$GOROOT/lib/time/zoneinfo.zip` file.
  178. If none of those paths are present (for example on a production Windows host) the above error is thrown.
  179. In case your system has support for the IANA Time Zone database, but it's not available by default, you
  180. can try to install it. For Linux systems it can be done for example by:
  181. ```bash
  182. # on Debian/Ubuntu based systems
  183. sudo apt-get install tzdata
  184. # on RPM based systems
  185. sudo yum install tzdata
  186. # on Linux Alpine
  187. sudo apk add -U tzdata
  188. ```
  189. If your system doesn't provide this database in a _native_ way, then you can make `OffPeakTimezone`
  190. working by following the steps below:
  191. 1. Downloading the [`zoneinfo.zip`][zoneinfo-file]. Starting with version v9.1.0 you can download
  192. the file from a tagged path. In that case you should replace `latest` with the tag name (e.g., `v9.1.0`)
  193. in the `zoneinfo.zip` download URL.
  194. 1. Store this file in a well known directory. We're suggesting to use the same directory where
  195. the `config.toml` file is present. So for example, if you're hosting Runner on Windows machine
  196. and your config file is stored at `C:\gitlab-runner\config.toml`, then save the `zoneinfo.zip`
  197. at `C:\gitlab-runner\zoneinfo.zip`.
  198. 1. Set the `ZONEINFO` environment variable containing a full path to the `zoneinfo.zip` file. If you
  199. are starting the Runner using the `run` command, then you can do this with:
  200. ```bash
  201. ZONEINFO=/etc/gitlab-runner/zoneinfo.zip gitlab-runner run [other options ...]
  202. ```
  203. or if using Windows:
  204. ```powershell
  205. C:\gitlab-runner> set ZONEINFO=C:\gitlab-runner\zoneinfo.zip
  206. C:\gitlab-runner> gitlab-runner run [other options ...]
  207. ```
  208. If you are starting the Runner as a system service then you will need to update/override
  209. the service configuration in a way that is provided by your service manager software
  210. (unix systems) or by adding the `ZONEINFO` variable to the list of environment variables
  211. available for Runner's user through System Settings (Windows).
  212. [zoneinfo-file]: https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/latest/zoneinfo.zip