Build a CI/CD workflow with Github Actions - Sesi 1

Build a CI/CD workflow with Github Actions - Sesi 1

Prerequisite

  • Account Docker Hub

  • Account Github

  • Account AWS

  • Ansible

  • Terraform

  • Golang

  • Docker

  • VS Code

Arsitektur Diagram

Create Instance AWS EC2

Buat sebuah server di AWS EC2 bisa create langsung melalui console panel AWS atau menggunakan terraform. Untuk konfigurasi menggunakan terraform sudah diberikan pada artikel Ansible Practice - Session 1.

Install Docker on Instance AWS EC2

Instance AWS EC2 memakai ubuntu 22.04, lihat di dokumentasi install docker on ubuntu 22.04.

jika sudah menginstall Docker di Instance AWS EC2 lalu masukan user Ubuntu ke group docker.

$ sudo usermod -aG docker ubuntu

exit terlebih dahulu dari terminal dan remote kembali. check apakah docker sudah running di instance AWS EC2 nya.

$ docker ps
atau
$ docker container ls -a

Create App Golang

buat folder untuk aplikasi golang dan buka menggunakan VSCode

$ go mod init github.com/****/apiserver

buat file main.go

package main

import "fmt"

func main() {
    fmt.Println("Server running")
}

test apakah running

$ go run .
Server running

selanjutnya install Framework Golang yaitu Gin

$ go get github.com/gin-gonic/gin

edit file main.go

package main

import (
    "os"

    "github.com/gin-gonic/gin"
)

func main() {
    hostname, _ := os.Hostname()
    r := gin.Default()
    r.GET("/", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "code":    200,
            "message": "api server",
            "server":  hostname,
        })
    })
    r.Run("0.0.0.0:8144")
}

coba running

$ go run .

dan akses ke localhost:8144 menggunakan web browser atau bisa juga melalui Postman.

Create Repository Github

buat repository di github untuk mengupload Aplikasi Golang yang tadi sudah dibuat .

$ git add .
$ git commit -m "push app golang"
[master (root-commit) d207657] push app golang
 3 files changed, 129 insertions(+)
 ......
$ git branch -M main
$ git remote add origin https://github.com/mdrdani/container-app.git
$ git push -u origin main
Enumerating objects: 5, done.
......