Pertemuan 5: Pipeline CI/CD Progress: 0%

Implementasi Pipeline CI/CD

Continuous Integration & Deployment dengan Tools Cloud-Native

Automation Focus: Pelajari implementasi pipeline otomatis untuk integrasi, testing, dan deployment aplikasi menggunakan tools cloud-native across multiple platforms.

Tujuan Pembelajaran

Memahami Konsep CI/CD

Continuous Integration, Continuous Deployment, dan manfaatnya dalam pengembangan modern

Membangun Pipeline Otomatis

Implementasi pipeline CI/CD menggunakan tools cloud-native di berbagai platform

Integrasi Multi-Platform

Setup pipeline untuk AWS, Huawei Cloud, dan OpenNebula dengan strategi yang optimal

Konsep CI/CD Pipeline

Code Commit

Developer push code ke repository

Build

Compile dan build aplikasi

Test

Automated testing suite

Deploy

Deployment ke environment

Monitor

Monitoring dan feedback

Faster Delivery

Automated processes mengurangi waktu deployment dari hari ke menit

  • Reduced manual errors
  • Consistent deployments
  • Rapid iteration

Improved Quality

Automated testing dan continuous validation

  • Early bug detection
  • Quality gates
  • Security scanning

Team Efficiency

Kolaborasi yang lebih baik antara development dan operations

  • Faster feedback loops
  • Reduced bottlenecks
  • Better communication

Tools & Platform CI/CD

Huawei CloudBuild

Services: CloudBuild, CloudDeploy, SWR

Integration: ECS, CCI, ServiceStage

Best For: Huawei Cloud environments

# Huawei CloudBuild Config version: "2.0" steps: - name: build_image action: build inputs: image_name: my-app image_tag: latest

Multi-Cloud Tools

Tools: Jenkins, GitLab CI, GitHub Actions

Integration: Cross-platform deployment

Best For: Hybrid cloud strategies

# GitHub Actions Workflow name: CI/CD Pipeline on: push: branches: [ main ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2

Implementasi Praktis

Step 1: Repository Setup

Setup version control dan konfigurasi akses untuk CI/CD tools

GitHub Repository Configuration
Multi-Platform
# .github/workflows/ci-cd.yml name: CI/CD Pipeline on: push: branches: [ main, develop ] pull_request: branches: [ main ] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: '18' - name: Install dependencies run: npm ci - name: Run tests run: npm test

Step 2: Containerization

Dockerize aplikasi dan setup container registry

Dockerfile
# Multi-stage Dockerfile FROM node:18-alpine as builder WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build FROM nginx:alpine COPY --from=builder /app/build /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
Docker Compose
# docker-compose.yml version: '3.8' services: app: build: . ports: - "3000:80" environment: - NODE_ENV=production database: image: postgres:13 environment: POSTGRES_DB: myapp POSTGRES_USER: user POSTGRES_PASSWORD: pass

Step 3: Automated Testing

Implementasi comprehensive testing suite dalam pipeline

Testing Strategy
Quality Gate
Unit Tests
Jest, Mocha
Integration Tests
Supertest, Cypress
Security Scan
Trivy, Snyk

OpenNebula CI/CD Implementation

OpenNebula OneFlow Automation

OpenNebula menyediakan OneFlow untuk orchestration service dan automation workflow yang dapat diintegrasikan dengan pipeline CI/CD.

OneFlow Service Template
# oneflow-service.yml name: ci-cd-pipeline deployment: straight roles: - name: build-node cardinality: 2 vm_template: build-template elasticity_policies: - type: "CHANGE" adjust: 1 min: 1 max: 4 scheduled_policies: - type: "PERIODIC" adjust: 1 min: 1 max: 3 start_time: "2024-01-01 00:00"
Contextualization Script
#!/bin/bash # contextualization.sh # Update system apt-get update && apt-get upgrade -y # Install Docker curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh # Install dependencies apt-get install -y git python3-pip # Clone repository git clone https://github.com/your-org/your-app.git cd your-app # Run build script chmod +x build.sh ./build.sh
Integration dengan External CI/CD
Hybrid
# GitHub Actions - OpenNebula Integration name: Deploy to OpenNebula on: push: branches: [ main ] jobs: deploy: runs-on: ubuntu-latest steps: - name: Deploy to OpenNebula uses: opennebula/github-action@v1 with: one_xmlrpc: ${{ secrets.ONE_XMLRPC }} one_username: ${{ secrets.ONE_USERNAME }} one_password: ${{ secrets.ONE_PASSWORD }} template_id: ${{ secrets.TEMPLATE_ID }} service_template: ./.oneflow/service.yaml

OpenNebula CI/CD Pipeline Demo

1

Code Push

Developer push code ke Git

2

CI Trigger

GitHub Actions triggered

3

Build & Test

Docker build dan testing

4

Deploy

OneFlow deploy ke OpenNebula

Tugas Praktikum & Assessment

Tugas Implementasi CI/CD Pipeline

Tugas 1: AWS CodePipeline

Implementasi pipeline untuk aplikasi web sederhana:

  • Setup CodeCommit repository
  • Configure CodeBuild spec
  • Deploy ke EC2/ECS
  • Implementasi rollback mechanism
Nilai: 30%

Tugas 2: OpenNebula Flow

Setup automated deployment di OpenNebula:

  • Create OneFlow service template
  • Implementasi contextualization
  • Integrasi dengan Git hooks
  • Auto-scaling configuration
Nilai: 30%

Tugas 3: Multi-Cloud Strategy

Design pipeline untuk hybrid deployment:

  • GitHub Actions workflow
  • Multi-environment deployment
  • Canary release strategy
  • Monitoring integration
Nilai: 40%

Deliverables & Timeline

📁
Source Code
Git repository
📊
Pipeline Configs
YAML files
🎥
Demo Video
5-7 menit
📝
Documentation
Architecture diagram

Kriteria Penilaian

Pipeline Functionality (60%)

  • Successful build & deployment
  • Automated testing integration
  • Error handling & recovery
  • Multi-environment support

Platform Integration (25%)

  • AWS services utilization
  • OpenNebula automation
  • Cross-platform compatibility
  • Security best practices

Documentation (15%)

  • Architecture documentation
  • Deployment instructions
  • Troubleshooting guide
  • Performance metrics

CI/CD Resources & References

Learning Materials