Di artikel kali ini saya akan sharing tentang bagimana cara deploy otomatis aplikasi React ke CloudFront menggunakan GitHub Actions.
Sebelum lanjut, kalian harus setup dahulu aplikasi React yang sudah di deploy ke CloudFront. Kalau kalian belum tahu caranya, kalian bisa baca Deploy Aplikasi React ke CloudFront.
Build Script
Untuk scriptnya kalian bisa copy script ini ke project kalian di .github/workflows/deploy.yml.
name: Deploy to CloudFront
on:
push:
branches:
- main
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16.16.0 # Bisa disesuaikan dengan versi Node yang kalian pakai.
- name: Cache node_modules
id: cache-node_modules
uses: actions/cache@v3
with:
path: '**/node_modules'
key: ${{ runner.os }}-react-${{ hashFiles('**/yarn.lock') }}
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Build
run: |
yarn
yarn build
aws s3 sync dist ${{ secrets.AWS_S3_URI }}/dist
aws cloudfront create-invalidation --distribution-id ${{ secrets.CF_DISTRIBUTION_ID }} --paths "/index.html"
Bisa dilihat pada script diatas, script tersebut akan ketrigger jika ada push code ke main branch. Dari script tersebut kita memakai beberapa actions:
actions/checkout@v3untuk checkout ke git project kita.actions/setup-node@v3untuk mengatur versi Node.jsactions/cache@v3untuk cachenode_modulessupaya build selanjutnya akan lebih cepat.aws-actions/configure-aws-credentials@v1yang akan kita gunakan untuk mengupload hasil build ke S3 dan invalidate cache pada CloudFront Distribution melalui cliaws.
Environment Variables
Ada beberapa env variables yang harus kita setting.
AWS_SECRET_ACCESS_KEY.AWS_ACCESS_KEY_ID.AWS_REGION.AWS_S3_URI.CF_DISTRIBUTION_ID.
Buat AWS Key
Buka Console AWS -> User -> Security credentials -> Access keys -> Create New Access Key.


Key tersebut bisa kita simpan ke notepad terlebih dahulu dan akan digunakan pada GitHub Actions Secrets.
Setting Environment Variables
Buka GitHub Repository -> Settings -> Secrets -> Actions.

Kemudian klik New repository secret.

Tambahkan secrets berikut satu per satu:
AWS_SECRET_ACCESS_KEYvaluenya dari yang sudah kita generate di AWS (AKIAU4***).AWS_ACCESS_KEY_IDvaluenya dari yang sudah kita generate di AWS (4iKMmC2ReGni***).AWS_REGIONsesuaikan dengan region AWS yang kalian pakai, contohnyaap-southeast-1.AWS_S3_URIS3 URI yang bisa kalian dapatkan di Bucket S3 kalian formatnyas3://<Nama Bucket>, contohnyas3://frontend-cloudfront-tutorial.CF_DISTRIBUTION_IDID CloudFront Distribution yang kalian pakai. Ini bisa dilihat pada menu CloudFront, contohnyaE29QWHX9TR48HQ.

Trigger Build
Selanjutnya kita akan coba trigger build dengan membuat changes di file App.tsx dan kemudian di push ke branch main.

Kita bisa melihat action yang berjalan di GitHub Repository -> Actions.

Preview
Changes yang kita lakukan tadi sudah terpublish Automated Deployment CloudFront.

Penutup
Begitulah cara untuk deploy otomatis aplikasi React ke CloudFront dengan menggunakan GitHub Actions. Semoga artikel ini bisa bermanfaat bagi teman-teman.