Hi,

I'm right now using GoCD for automate our deployments. 

These are the versions I'm using.

    go-agent  17.10.0-5380
    go-server 17.10.0-5380


I'd like to expose a case that I wasn't able to fix just by configuring 
GoCD, I couldn't find anything that can help me out on that, most likely 
I'm missing something ;-)

Here's the case I'd like to achive:

We have a GIT repository: `frontend-app`

In that repo every developer can push changes to different branches 
following this naming convention: `dev-1`, `dev-2`, ...

The goal to achieve is that every time a developer pushes changes to 
`dev-1`, goCD will take those changes in that branch, build it and deploy 
to our environment `dev-1`.

If developer 2 pushes changes to `dev-2`, goCD will take those changes, 
build them and deploy to `dev-2` environment.

The first I've tried, to achieve this, is configure the pipeline using only 
1 material and try to use some glob pattern on branch names. As you can see 
in the attached screenshot.

[image: gocd-01.png]



However I couldn't get this working.

The second thing I tried is to use multiple materials. To be able to have 
multiple materials you need to configure the material giving to it a 
specific Destination directory. As you can see in the attached screenshot:

[image: gocd-02.png]



With this approach I was able to have goCD pulling for new changes and 
checking repo out on the specific Destination directory.

For my pipeline I have configured a template with a bunch of tasks to build 
the project, before deploying it, ie: `npm install`, `npm test`, `npm 
run-script build`, etc...

However, those tasks are then executed on the parent directory 
(`go-agent/pipelines/frontend-app/`), instead of in the Destination 
directory (dev-1, dev-2, ...)

    go-agent/pipelines/frontend-app/
      |_ dev-1
      |_ dev-2
      |_ ...

I've been reading about goCD environment variables and I couldn't find any 
variable that holds the destination directory, so I could reference it in 
my tasks.


Of course, as a solution, you can always create several pipelines in order 
to achieve this, ie:

frontend-app-dev-1, frontend-app-dev-2, etc...

But my problem is that I have 8 dev environments and also 10 projects. So 
as you can imagine is quite a job to configure all those things separately.

Specially if later we make any change, that's a lot of work to do it 
manually and prone to errors.

So my questions are:

 1. in case the first approach (branch glob pattern), can this goal be 
achieved by using Branch glob pattern ?

 2. if we use second approach (several materials), Does someone know if 
this can be achieved ? I think I'm almost there, but probably I'm missing 
something when configuring my tasks.

 3. Any other ideas to be able to get this working ?

 4. Is there any other way to achieve the things I need ?

Thanks in advance.

-- 
You received this message because you are subscribed to the Google Groups 
"go-cd" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/go-cd/1e103e59-2494-41fb-864f-c646170e1633%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to