Introduction ● Tadashi Nemoto ● Exawizards, Inc. ● Platform Engineer (DevOps Engineer) ○ Introduce and improve CI / CD pipelines ○ Maintain production / develop environments ○ Introduce Test Automation
Previous CI / CD・Deployment flows ● Hashicorp Nomad on AWS ○ develop, staging, production environments ○ Difficult to create multiple development environments ● Git Flow as branching strategy ○ Usages are slightly different depending on teams ● Jenkins on AWS ○ Some deployments to production depend on us
Jenkins ● Maintenance cost ○ Update versions, plugins ○ Add machines, scale ○ Authority management, Security, etc. ● Need dedicated members or teams ● Not suitable for autonomous deployments
GitHub Actions self-hosted runners ● GitHub Actions provides self-hosted runners ● No additional charge ● Compatible both self-hosted and GitHub-hosted runners ○ Deploy → self-hosted runners ○ Test → GitHub-hosted runners ● No need to maintain the management part of a CI / CD workflow (like a Jenkins master instance)
Git Flow ● Works well for projects with fixed release timing ○ Mobile apps(1 release / 1~2 weeks) ● Less beneficial for projects API / Frontend projects ● More complex branch management, and not suitable for deploying to production frequently ○ Creating release branches, Hotfix branches, Tags
GitLab Flow ● feature branch → merge to master branch ○ Same as GitHub Flow ● GitLab Flow allows to have branch for a release ○ master branch → staging env ○ production branch → production env ○ Merge to production branch for production release Staging env Prod env