Cloud Malaya Lab
  • Home Cloud Lab
    • Architecture
    • DNS Server
  • DevOps & DevSecOps
    • Kubernetes
      • Fundamental
        • Taints in Kubernetes
        • Kubernetes Observability (Monitoring) Guide
        • DNS in Kubernetes (CoreDNS)
        • Storage in Kubernetes
          • Container Storage Interface - CSI
          • Ephemeral Storage Explain
        • Cluster CPU & Memory Inspections
        • Open Source and Free Storage Solution Kubernetes
      • PoC Lab
        • Configure Access to Multiple Cluster using KUBE_CONFIG
        • High Availability Portable Mini Kubernetes Data Center with K3s
          • Lab 1: Build the K3s Infrastructure
          • Lab 2: Automate the K3s clusters deployment with Ansible
          • Lab 3: Multi Master K3s kubeconfig files for smooth accessibility
          • Lab 4: Network Configurations & Tools
        • AWX/Ansible Tower Deployment on Kubernetes
          • Lab 1 - Understanding Requirements
          • Lab 2 - AWX,AWX Operator Configurations & Deployments
          • Lab 3 - Ingress Networking & Connectivity via Nginx
          • Lab 4: AWX Web Console & accessibility on LAN
        • Troubleshooting: Ansible Tower - Reset admin password
    • Monitoring & Observability
      • Splunk
        • Splunk Deployment for SME (Malay Version)
    • System Administration - Linux
      • RedHat Derivatives
        • Add User to Sudoers
        • Yum Update vs Yum Upgrade
        • DNF update vs upgrade
        • SMP PREEMPT_DYNAMIC Definitions
      • Virtualization
        • KVM
      • Storage
  • Digital Infrastructure & Cloud Solutions
    • Solution & System Design
      • Public Cloud
        • Fundamental
          • AWS
          • Azure
          • GCP
        • Lab
          • Simple CD menggunakan Github Action
      • Private Cloud & On-Premise
      • On-Premise to Cloud Design
        • AWS Direct Connect
      • High Availability & Fault Tolerance Design
      • Disaster Recovery
Powered by GitBook
On this page
  1. Digital Infrastructure & Cloud Solutions
  2. Solution & System Design
  3. Public Cloud
  4. Lab

Simple CD menggunakan Github Action

Belajar DevOps: Simple CD menggunakan Github Action

Tutorial dibawah ini adalah cara saya mengemaskini halaman landing page farizizwan.com dengan mengautomasikan deployment source code terbaru menggunakan Github Action.

Ia adalah simple CD pipeline dimana ia cuma akan melakukan action berikut:

  • Akses ke server farizizwan.com yang di host di AWS Lightsail menggunakan SSH protocol.

  • Melakukan git pull untuk mengemaskini source code.

Script ditulis didalam YML format seperti dibawah

name: CICD

on: [push,pull_request]
jobs:
  push:
    runs-on: ubuntu-latest
    steps:
      ##########################################
      #
      #  Update source code on farizizwan.com server
      #
      ##########################################
      - name: Git pull
        uses: fifsky/ssh-action@master
        with:
          command: |
            cd /home/public_html/farizizwan.com/ && git pull origin master
          host: ${{ secrets.HOST }}
          user: ${{ secrets.USER }}
          key: ${{ secrets.PRIVATE_KEY }}

Gist: https://gist.github.com/malikperang/cf3b7481cd512e4f73ea02e70fee3db4

Contoh Deployment Script 1

Untuk menetapkan / menambah Action Secret pergi ke https://github.com/<nama_repo_anda>/settings/secrets/actions

Memahami Github Action Syntax pada YML script

on = script secara automatik akan running apabila ia mengesan action push atau pull request seperti yang dinyatakan. jobs = ini adalah pipeline yang akan menjalankan kerja-kerja yang kita nyatakan.Ia akan running secara parallel atau sequential.

contoh anda akan mempunyai kerja-kerja Unit Test didalam CI pipeline, anda boleh buat begini

Sequential
jobs:
			unit_test:
				- name: Checkout Source Code
				- name: Running Unit Test Integration
			deploy_to_staging:
				- name: Checkout Source Code
				- name: Deploy to Staging Server
		  deploy_to_production:
				- name: Checkout Source Code
				- name: Deploy to Production Server
Parallel
jobs:
			main_step:
				- name: Checkout Source Code
			  - name: Running Unit Test Integration
				- name: Deploy to Staging
				- name: Deploy to Production

Ringkasan kelebihan menggunakan Github Action

Saya menggunakan Github Action ini kerana repositori farizizwan.com berada di Github. Memandangkan spesifikasi server adalah minimum jadi saya berkeputusan untuk tidak membuang masa menggunakan Jenkins kerana untuk farizizwan.com hanyalah static HTML landing page dan memerlukan kerja-kerja integrasi yang minimum,justeru saya dapat jimat lebih banyak masa disini.

Ini sahaja perkongsian kali ini, saya akan kongsikan bagaimana hendak menggunakan Azure DevOps Pipeline pula dimasa akan datang.

Sekian, Terima Kasih Fariz Izwan Kamaruzzaman 3 March 2021

Rujukan: https://docs.github.com/en/rest/reference/actions

PreviousLabNextPrivate Cloud & On-Premise

Last updated 1 year ago

secret

jobs.runs-on: Untuk menyatakan OS pilihan apa yang perlu menjalankan Github Action ini. Ia adalah seperti sebuah VM sementara atau runtime sementara yang akan menjalankan kesemua Jobs yang anda nyatakan dalam Github Action script. Jadual dibawah menunjukkan list OS dan mesin yang ditawarkan oleh Github. Anda juga boleh menggunakan server anda sendiri sebagai build runtime. Ia adalah seperti [https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/agents?view=azure-devops&tabs=browser](Azure DevOps Pipeline Agents). steps: Untuk menjalankan tugas-tugas dibawah setiap Jobs yang dicipta. Ia akan berjalan secara sequential. steps.name : Nama Step. steps.uses: Anda juga boleh menggunakan semula script-script yang ada didalam . Seperti contoh diatas saya menggunakan semula script daripada . steps.with: Nyatakan parameter yang anda perlu pass pada Step yang dijalankan. Seperti Contoh Deployment Script 1 diatas, saya perlu pass tiga parameter untuk step Git pull yang menggunakan script iaitu host,user,key. Key adalah Private Key untuk kegunaan akses melalui SSH. Rujuk nota diatas cara untuk menambah secret ini. Manakala command pula adalah command yang anda mahu jalankan setelah berjaya akses ke deployment server.

Github Marketplace
fifsky/ssh-action
fifsky/ssh-action
list_agent