Jenkins is fine, if you commit to maintaining it, but thats a non trivial task.
THe joy and pain of the gitlab runner is that the job is tied directly to the git repo its attached to. This means that unlike jenkins, the setup is versioned, meaning disaster recovery is much more simple (spin up new runner, attach to project. Done.)
You do then sacrifice multi-project pipelines, but even in very large companies, I've only missed that feature once. It also in no way makes up for having to look after 60+ jenkins masters. (dont ask)
Yes, you gitlab gives you less control over environment, but I would put forward that this is only an advantage when running on windows.
https://docs.gitlab.com/ee/ci/multi_project_pipelines.html
https://docs.gitlab.com/ee/ci/runners/#shared-specific-and-g...
We are focusing on improving the new user experience here, so OP if you decide to try out GitLab I'd love to hear what works well and what doesn't.
Features like https://gitlab.com/gitlab-org/gitlab/issues/39527 will make this easier and allow you to do similar troubleshooting in an interactive web terminal.
I should be able to install runner on developers machine and just run and debug pipeline there, with or without Gitlab server present.
EDIT: I should also mention, https://gitlab.com/groups/gitlab-org/-/epics/2072 is a big priority for us where we want to reduce the time to first green pipeline (not just for new users, but for new projects too). Feedback is welcome there as well.
I currently use task system with Gitlab to make any job in 1-3 lines. Then I can easily replicate build locally. The task engine is either installed on runner's host itself or run inside docker container.
I've seen companies with overly painful audit requirements, and making the process of generating artifacts for audit as easy as possible is a great way forward. Box ticking exercises should take minimal engineering time.
My current project doesn't use gitlab, but I love the constant innovation Gitlab pushes out.
- Finalize source
- Legal check `LICENSE-dist.txt`
- Update `CHANGELOG.md`
- Bump version in `Makefile` and `Core.json`
- Commit "Bump version".
- Build (three OS's can be done in parallel)
- `m clean`
- `git pull`
- Make sure you have the latest `Fundamental.zip` package in source root.
- `m dist`
- Manually test installer and fragile features (audio drivers, patch loading) for ~10 minutes.
- `m notarize` (on Mac)
- `m upload`
- `git tag vX.Y.Z`
- `git push --tags`
- Release
- Update version title and URLs in `Rack.pug`
- `m upload`
- At this point, normal users have access to new version.
- Update server version in `config.coffee`
- `m restart`
- At this point, normal users will swarm to download new version. Keep an eye on server bandwidth.
- Publicize
- Twitter https://twitter.com/home
- Facebook https://www.facebook.com/vcvrack/
- Share on group
- Forum https://community.vcvrack.com/c/announcementsMy only nitpick is the regex matching they do to mask protected environment variables from ci logs is not sufficient. It won't match + scrub aws secret keys in the logs, which seems like a pretty glaring problem in a cicd setup.
> masked so they are hidden in job logs, though they must match certain regexp requirements to do so
We've been able to work around it, but it did make that particular automation more difficult.
Throwing a .gitlab-ci.yml file into my repo is by far the easiest way to get CI/CD incorporated into a product. The configuration of test runners (or lack thereof) is both a breeze and extremely powerful.
I'm not even talking about the auto-devops thing that I haven't tried; writing your own gitlab-ci file worked in frictionless ways that CircleCI, Travis, and (especially) Jenkins didn't.