Skip to content

Commit

Permalink
Add CI Pipeline
Browse files Browse the repository at this point in the history
  • Loading branch information
yogaperdana committed Oct 20, 2023
1 parent df8ebee commit d91e624
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 1 deletion.
2 changes: 1 addition & 1 deletion .env
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
PORT=3001
AMQP_URL="amqp://localhost:5672"
AMQP_URL="amqp://guest:guest@localhost:5672/"
42 changes: 42 additions & 0 deletions .github/workflows/shippingsvc-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# GitHub Actions Workflow
name: Shipping Service App CI

# menentukan event yang akan men-trigger workflow
# yaitu setiap ada push baru pada branch `shipping-service`
on:
push:
branches:
- shipping-service

# mendefinisikan job/pekerjaan yang akan dilakukan
jobs:
karsajobs-ci:
name: Test-Build-Push

# nama environment yang digunakan
environment: shipping-svc-prod

# menggunakan Ubuntu versi terbaru untuk menjalankan job
runs-on: ubuntu-latest

# menyusun urutan tugas
steps:

# checkout repo agar dapat diakses oleh workflow
- name: Checkout Repository
uses: actions/checkout@v4

# menggunakan tools Hadolint untuk memeriksa berkas Dockerfile
- name: Runs Hadolint Dockerfile linting tool
uses: hadolint/hadolint-action@v3.1.0
with:
dockerfile: "Dockerfile"

# menjalankan proses build dan push image
- name: Build and Push Docker Image
env:
# personal access token disimpan pada repository secrets GitHub
GHCR_PAT_TOKEN: ${{ secrets.GHCR_PAT_TOKEN }}
run: |
export GHCR_PAT_TOKEN=$GHCR_PAT_TOKEN
bash ./buildpushimage.sh
17 changes: 17 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# menggunakan base image Node.js versi 20
FROM node:20

# menentukan working directory container pada /app
WORKDIR /app

# menyalin source code ke working directory di container
COPY . .

# menginstal dependencies
RUN npm install

# mengekspos port yang digunakan aplikasi yaitu 3000
EXPOSE 3001

# menjalankan server saat container diluncurkan
CMD ["npm", "start"]
16 changes: 16 additions & 0 deletions buildpushimage.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/bin/sh

# nama package
package_name="ghcr.io/yogaperdana/shipping-service:latest"

# membuat image di Docker dengan format untuk GitHub Container Registry
echo -e "Building a new Docker image:"
docker build . -t $package_name

# log masuk ke GitHub Container Registry
echo -e "\nLogin into GitHub Container Registry:"
docker login ghcr.io -u yogaperdana -p $GHCR_PAT_TOKEN

# mengunggah image ke GitHub Container Registry
echo -e "\nPublishing image to GitHub Container Registry:"
docker push $package_name

0 comments on commit d91e624

Please sign in to comment.