Allow option to change path for cloning in CI
## Description
Hello, So I was setting up a pipeline for my go application last weekend, and ran some issues with the GOPATH to build the application and such
### Problem
The issue I was having was that the repository was not getting cloned to the correct directory so packages just failed. Now I noticed that it is getting cloned into a specific path `Cloning into '/builds/team-name/repo'...` and then when I try to run `go build` I start getting the following errors
```bash
main.go:3:8: cannot find package "gitlab.com/team-name/agent/agent" in any of:
/usr/local/go/src/gitlab.com/team-name/agent/agent (from $GOROOT)
/go/src/gitlab.com/team-name/agent/agent (from $GOPATH)
```
Now I get the error of course because the directory structure is not set correctly. For me to fix this issue is that I had to add some scripts in the `before_scripts` inside of my `.gitlab-ci.yml` like the following
```yml
before_script:
- mkdir -p /go/src/gitlab.com/team-name/
- mv ../agent /go/src/gitlab.com/team-name/
- cd /go/src/gitlab.com/team-name/agent
```
Now doing the above works fine, until it comes to the end of the job, the runner by default `cd` back to the `/builds/team-name/repo` which understandably gives me the following error. Now I understand the reason it is doing this is to upload the artifacts it generates (speculation)
```bash
/bin/bash: line 44: cd: /builds/team-name/repo: No such file or directory
ERROR: Build failed: exit code 1
```
So in every step, I want to run I have to remember to add the step below
```yml
- mv ../agent /builds/team-name/repo
```
*Benefits*
Cleaner `.gitlab-ci.yml` file
(Include problem, use cases, benefits, and/or goals)
## Proposal
Allow the user to change the default location to where the repository getting cloned so for example in my case it clones the repository to `/go/src/gitlab.com/team-name/`.
We can use another variable name just like the variable name you use to change the git strategy for example
`GIT_LOCATION` or something that reflects what it is doing better
## Links / references
My `.gitlab-ci.yml` file
```yml
image: docker:latest
services:
- docker:dind
before_script:
- mkdir -p /go/src/gitlab.com/team-name/
- mv ../agent /go/src/gitlab.com/team-name/
- cd /go/src/gitlab.com/team-name/agent
stages:
- build
- test
build:
image: digitalrealms/golang-glide:latest
stage: build
script:
- glide install
- go build -v -o app
- mv ../agent /builds/team-name/repo
artifacts:
untracked: true
test:
image: digitalrealms/golang-glide:latest
stage: test
script:
- go test $(glide nv)
- mv ../agent /builds/digital-realms/agent
dependencies:
- build
```
issue