Prerequisites
- Punya akun GCP, jika belum ada bisa membuat akun trial disini
- Membuat Gitlab repository, contoh kode nya disini
- Enable Cloud Run API
Membuat Service Account
- masuk ke menu IAM & Admin
- create service account
kemudian download key nya, masuk ke menu keys -> add key -> create new key
Menyiapkan Aplkasi
Bagi yang ingin mencoba, silakan clone repository yang sudah saya siapkan, disini ada aplikasi sederhana menggunakan node js, hanya memunculkan hello world, namanya juga sederhana.git clone https://gitlab.com/masuddhh/gitlab-ci-cloudrun.git
cd gitlab-ci-cloudrun
npm install && npm start
# Stage 1: Build the Node.js app
FROM node:14 AS build
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
# Stage 2: Create a smaller image
FROM node:14-slim
WORKDIR /app
COPY --from=build /app /app
EXPOSE 3000
CMD ["node", "app.js"]
Membuat Pipeline Gitlab
stages:
- build
- deploy
variables:
SERVICE_NAME: simple-app
GCLOUD_PROJECT_ID: $GCLOUD_PROJECT_ID # Set this in your GitLab project's CI/CD settings
GCLOUD_SERVICE_KEY: $GCLOUD_SERVICE_KEY # Set this in your GitLab project's CI/CD settings
IMAGE_TAG: $CI_PIPELINE_IID
IMAGE_TAG_GCR: gcr.io/$GCLOUD_PROJECT_ID/$CI_PROJECT_NAME:$IMAGE_TAG
build_docker_image:
stage: build
image: quay.io/buildah/stable:v1.23.3
before_script:
- curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-442.0.0-linux-x86_64.tar.gz
- tar -xf google-cloud-cli-442.0.0-linux-x86_64.tar.gz
- ./google-cloud-sdk/install.sh
script:
- echo $GCLOUD_SERVICE_KEY > gcloud-service-key.json
- ./google-cloud-sdk/bin/gcloud auth activate-service-account --key-file gcloud-service-key.json
- ./google-cloud-sdk/bin/gcloud config set project $GCLOUD_PROJECT_ID
- export HOME=$CI_BUILDS_DIR
- buildah login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- cat gcloud-service-key.json | buildah login -u _json_key --password-stdin gcr.io
- buildah build -t $IMAGE_TAG
- buildah push $IMAGE_TAG docker://$CI_REGISTRY_IMAGE:$IMAGE_TAG #push to container registry gitlab
- buildah push $IMAGE_TAG $IMAGE_TAG_GCR #push to google container registry
deploy_to_cloud_run:
stage: deploy
image: google/cloud-sdk:latest
script:
- echo $GCLOUD_SERVICE_KEY > gcloud-service-key.json
- gcloud auth activate-service-account --key-file gcloud-service-key.json
- gcloud config set project $GCLOUD_PROJECT_ID
- gcloud run deploy $SERVICE_NAME --image $IMAGE_TAG_GCR --region=asia-southeast1 --port 3000 --platform managed --allow-unauthenticated
only:
- main
Deploy
Build -> Pipelines
0 Comments