7. Our Challenges
Small Development Team
Not enough time for everything
Maintenance of our Build Tools / Process
Build process is tough to understand
Jenkins is unstable and nonintuitive
Visibility of Development Status of Issues
Cost on Development Tools
10. Gather all Information
Ask yourself:
What could be possible with GitLab?
Share the insights with all members of our team
How could it affect our daily work?
What improvements could we achieve with a migration?
Ask for the needs of every role
Talk in specific rounds with your coworkers
Have several feedback loops
Commitment of the whole team to test GitLab
11. Interesting Features
GitLab CI/CD
Jobs based on docker containers
Integration of Sentry and Prometheus
Yaml based configuration file for pipelines
Issue Management and automated Support
A single Tool for the „Tool-Chain“
13. Small Projects first
Start with a simple Project
Not enough time for everything
Figure out new Ways of Building Software
Try different building solutions for your software (e.g. Gradle)
Find Solutions for your Challenges
Use GitLab for Docker Images and other features
We run GitLab-Runners in our Kubernetes Cluster to get into it
14. Maven vs Gradle
Gradle is easier to use
You can define custom tasks
Unit Tests
Integration Tests
Environment variables are injected automatically
15. Challenge with GitLab-Runner in our Kubernetes
Caching is having a huge impact on building times
Notice: we used a private cloud Kubernetes cluster
Cloud Caching Local CachingWithout Caching
Download / upload sources Download sources (if needed)Download sources
Stable duration Doubles duration of without
Could be unstable
Short duration
Connection errors… Not supported by provider
16. Changes to our Technical Landscape
Internet Build Tool Private Cloud
PreviousCurrent
19. Phase 1: Move the Repository
Step 1: Transfer the Repository to GitLab
Use the GitHub Import by GitLab
Step 2: Modify Scripts with new Origin
We had problems with migrating our Issues / Releases / Tags
Exchange GitHub API calls with their GitLab equivalent
20. Open Source:
GitHub Issue Migrator
CLI-Tool
Migrate the Issues from GitHub
Synchronize the contributers
Optional: Releases and Tags
@Phil404/github-issue-migrator
22. Phase 2: Migrate the CI/CD Pipeline
Challenge: our build process was far too complex for an easy Lift‘n‘Shift
23. Tip: Increase
the Log Limit
Useful if you have a lot of logs generated
by your job
Especially when you debug your build step
UI is the only view for logs
Standard size of logs: 4MiB
25. Phase 3: Time for Improvements
Split the different Steps
„One job does one thing perfectly“
Keep it small and simple
26. Phase 3: Time for Improvements
Change our Build Tool to Gradle
More flexibel for our DevOps strategy
Parallel Job Processing
Separate jobs for the same “goal“, like the test stage
Standard Docker Images
Improved building time a little bit
Use official images which fit our requirements
Less time for maintenance
Use Resources efficient
28. Phase 3: Key Learnings from Migration
Plan your Migration
With low maintenance and high customizability
Step by Step
Don‘t try it by a big bang. Keep your infrastructure running and deployable
Rethink your DevOps Strategy
Try out something new and question your existing pipelines / processes
Start with a small Project
29. Tip: Keep your
Pipeline User Friendly
Name your jobs clear to what they do
Style your config for a better overview
Write comments for variables and hard to
understand code pieces
31. Why GitLab suits us perfectly
Powerful CI/CD Solution
With low maintenance and high customizability
One Home for Everything
User Experience
Low Maintenance
Project Management