Deploy Situs Statis ke AWS S3 dengan Github Actions

Sebelumnya repository untuk situs ini ada di Bitbucket tapi sekarang saya jarang sekali menggunakan Bitbucket, hampir tidak pernah. Apalagi kantor pakai Github jadi semakin tidak ada alasan untuk buka Bitbucket.

Akhir-akhir ini terpikir untuk pindah ke Github tapi belum yakin dengan Github Actions. Lebih tepatnya belum yakin dengan seberapa banyak waktu build yang ditawarkan. Tapi sejak diakuisisi Microsoft, saya lihat Github jadi semakin dermawan. Dan ternyata sekarang akun gratis bisa menggunakan hingga 2000 menit per bulan. Terakhir saya coba deploy situs ini hanya memakan waktu build 2-3 menit saja. Cukup untuk paling tidak publish 500 kali sebulan tapi tentu tergantung niat, hehehe. Dengan berbekal kedermawanan Github, saya putuskan untuk pindah.

Situs ini menggunakan Jekyll dan dihost di AWS S3. Setiap kali ada push ke branch master, maka Github Actions akan checkout ke master, build situsnya, dan push ke S3 dengan s3_website. Berikut pengaturannya:

name: ikmal.io

on:
  push:
    branches:    
      - master

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
      - name: Checkout the code
        uses: actions/checkout@v1

      - name: Build the site
        run: |
          docker run \
          -v ${{ github.workspace }}:/srv/jekyll -v ${{ github.workspace }}/_site:/srv/jekyll/_site \
          jekyll/jekyll:3.8 /bin/bash -c "chmod 777 /srv/jekyll && jekyll build --lsi"

      - name: Push to S3
        uses: justinharringa/actions-s3_website@v1.0
        with:
          args: push --site _site
        env:
          S3_ACCESS_KEY_ID: ${{ secrets.S3_ACCESS_KEY_ID }}
          S3_SECRET_ACCESS_KEY: ${{ secrets.S3_SECRET_ACCESS_KEY }}
          CLOUDFRONT_DISTRIBUTION_ID: ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }}

Oya, secrets disimpan di environment variables. Kamu bisa masuk ke halaman https://github.com/{username}/{repository}/settings/secrets dan menambahkan “rahasia” di situ.