feat: add ci to deploy to staging

This commit is contained in:
skeris 2024-01-18 04:42:26 +03:00
parent 37888d528a
commit 0580c3658f
6 changed files with 109 additions and 0 deletions

47
.gitlab-ci.yml Normal file

@ -0,0 +1,47 @@
include:
- project: "devops/pena-continuous-integration"
file: "/templates/docker/build-template.gitlab-ci.yml"
- project: "devops/pena-continuous-integration"
file: "/templates/docker/deploy-template.gitlab-ci.yml"
stages:
- build
- deploy
build-app:
stage: build
tags:
- gobuild
variables:
DOCKER_BUILD_PATH: "./Dockerfile"
STAGING_BRANCH: "staging"
PRODUCTION_BRANCH: "main"
rules:
- if: $CI_COMMIT_BRANCH == $PRODUCTION_BRANCH || $CI_COMMIT_BRANCH == $STAGING_BRANCH
when: on_success
before_script:
- echo PRODUCTION_BRANCH = $PRODUCTION_BRANCH
- echo STAGING_BRANCH = $STAGING_BRANCH
- echo CI_REGISTRY = $CI_REGISTRY
- echo CI_REGISTRY_USER = $CI_REGISTRY_USER
- echo CI_PROJECT_DIR = $CI_PROJECT_DIR
- echo CI_REGISTRY_IMAGE = $CI_REGISTRY_IMAGE
- echo CI_COMMIT_REF_SLUG = $CI_COMMIT_REF_SLUG
- echo DOCKER_BUILD_PATH = $DOCKER_BUILD_PATH
- echo CI_PIPELINE_ID = $CI_PIPELINE_ID
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
script:
- docker build -t $CI_REGISTRY_IMAGE/$CI_COMMIT_BRANCH:$CI_COMMIT_REF_SLUG.$CI_PIPELINE_ID --build-arg GITLAB_TOKEN=$GITLAB_TOKEN $CI_PROJECT_DIR
- docker push $CI_REGISTRY_IMAGE/$CI_COMMIT_BRANCH:$CI_COMMIT_REF_SLUG.$CI_PIPELINE_ID
deploy-to-staging:
stage: deploy
extends: .deploy_template
variables:
DEPLOY_TO: "staging"
BRANCH: "staging"
rules:
- if: "$CI_COMMIT_BRANCH == $BRANCH"
after_script:
- ls

25
Dockerfile Normal file

@ -0,0 +1,25 @@
# BUILD
FROM golang:1.20.3-alpine AS build
# Update packages and clear cache
RUN apk add --no-cache curl
# Set work directory
WORKDIR /app
# Create binary directory
RUN mkdir /app/bin -p
# Add main files to app
ADD . .
# Build app
RUN GOOS=linux go build -o bin ./...
# PRODUCTION
FROM alpine:3.18.3 AS production
# Install packages
RUN apk --no-cache add ca-certificates
# Create home directory
WORKDIR /app
# Copy build file
COPY --from=build /app/bin/codeword ./app
# CMD
CMD ["./app"]

@ -0,0 +1,37 @@
version: '3.3'
services:
codeword:
hostname: codeword
container_name: codeword
image: $CI_REGISTRY_IMAGE/staging:$CI_COMMIT_REF_SLUG.$CI_PIPELINE_ID
tty: true
environment:
APP_NAME: 'codeword'
HTTP_HOST: '0.0.0.0'
HTTP_PORT: '3000'
MONGO_HOST: '10.6.0.11'
MONGO_PORT: '27017'
MONGO_USER: 'auth-service-user'
MONGO_PASSWORD: 'LFYFpTvqtxSzXDJV'
MONGO_DB: 'auth'
MONGO_AUTH: 'auth'
PUBLIC_CURVE_KEY: '-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAEbnIvjIMle4rqVol6K2XUqOxHy1KJoNoZdKJrRUPKL4=\n-----END PUBLIC KEY-----'
PRIVATE_CURVE_KEY: '-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEIKn0BKwF3vZvODgWAnUIwQhd8de5oZhY48gc23EWfrfs\n-----END PRIVATE KEY-----'
SIGN_SECRET: 'pena-auth-microservice-group'
REDIS_ADDR: '10.6.0.23:6379'
REDIS_PASS: 'Redalert2'
REDIS_DB: 3
SMTP_API_URL: 'connect.mailclient.bz:587'
SMTP_HOST: 'connect.mailclient.bz'
SMTP_PORT: '587'
SMTP_UNAME: 'kotilion.95@gmail.com'
SMTP_PASS: 'vWwbCSg4bf0p'
SMTP_API_KEY: 'P0YsjUB137upXrr1NiJefHmXVKW1hmBWlpev'
SMTP_SENDER: 'noreply@mailing.pena.digital'
DEFAULT_REDIRECTION_URL: 'https://shub.pena.digital/recover/'
AUTH_EXCHANGE_URL: 'http://10.6.0.11:59300/'
ports:
- 59664:3000
networks:
- default