Slide 1

Slide 1 text

Journey in Implementing CI/CD Imam Muslim Aldi Doanta Kurnia

Slide 2

Slide 2 text

Our Missions 1. Establish data-driven policy making 2. Accelerate government digital transformation 3. Simplify people’s lives with digital technology

Slide 3

Slide 3 text

OKR Organization Values Continuous learning Aligned autonomy Metric-driven & Impact-oriented Agile development Encourage automation Innovative Data-driven Service oriented Responsive Adaptive Dynamic Engineering Culture Engineering Practice Scrum CI/CD TechTalk 360o Feedback

Slide 4

Slide 4 text

Continuous learning Aligned autonomy Metric-driven & Impact Agile development Encourage automation Engineering Culture Engineering Practice CI/CD

Slide 5

Slide 5 text

Cloud Native Application 1. Elasticity = grow and shrink to fit in available resource 2. Resilience = fast automatic and recovery from failure 3. Agility = fast deployment, iteration and reconfiguration Cloud Native Landscape and Trail Map (https://github.com/cncf/trailmap)

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

Containerization vs Virtual Machine

Slide 9

Slide 9 text

Containerization vs Virtual Machine Pic Credits: edureka.co

Slide 10

Slide 10 text

Containerization Pic Credits: aws.amazon.com

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

CI/CD Pic Credits: edureka.co

Slide 13

Slide 13 text

Benefits and Challenges Benefits: - Automated, repeatable, reliable - Improvement in software quality and delivery speed - Engineer’s confidence and peace of mind Challenges: - Learning curve - Long-term result

Slide 14

Slide 14 text

Why We Use GitLab CI and Jenkins JDS is using GitLab CI dan Jenkins Jenkins GitLab CI - Open Source - Simple and easy to use - Many plugins to use - Complete documentation - Easy to Maintain - Free, 2000 minutes/month - Any Platform Git - Running locally

Slide 15

Slide 15 text

versioning: stage: versioning only: - branches script: - export VER=1.0 code_quality: stage: code_quality dependencies: - versioning script: - script GitLab CI Example stages: - versioning - code_quality - build - test - deploy_staging - deploy_prod deploy_staging_aws: stage: deploy_staging only: - master script: - script deploy_staging_eks: stage: deploy_staging only: - master script: - script deploy_prod_eks: stage: deploy_prod when: manual only: - master script: - script JOBS STAGES

Slide 16

Slide 16 text

Challenges

Slide 17

Slide 17 text

Learning YAML syntax for GitLab CI

Slide 18

Slide 18 text

Increasing complexity in config file April 2019 1 stage File size: 482 B December 2019 6 stages File size: 14 KB

Slide 19

Slide 19 text

Challenges Others: - Managing environment variables - GitLab Runner performance limitations - CI/CD optimization in pipeline duration

Slide 20

Slide 20 text

Case Study: Sapawarga Sapawarga API Total: 2164 pipelines, Successful: 1283 pipelines, Failed: 394 pipeline Success ratio: 76%

Slide 21

Slide 21 text

Case Study: Sapawarga Sapawarga CI/CD Checklist Sapawarga API CI/CD Pipeline on GitLab

Slide 22

Slide 22 text

Resources JDS Engineering Culture https://docs.google.com/presentation/d/10bNVWLJ5LgqZ4eMHb0iEAmxPV4xSQakwLRMa7AS3hP4/edit#slide=id.g 4cfeba9e2f_0_644 Cloud Native Trail Map https://github.com/cncf/trailmap Getting Started with GitLab CI/CD https://docs.gitlab.com/ee/ci/quick_start/ Jenkins User Documentation https://jenkins.io/doc/

Slide 23

Slide 23 text

No content