diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..efe86d5 --- /dev/null +++ b/.gitlab-ci.yml @@ -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 + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3a3fab5 --- /dev/null +++ b/Dockerfile @@ -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"] diff --git a/deployment/test/docker-compose.yaml b/deployment/test/docker-compose.yaml deleted file mode 100644 index e69de29..0000000 diff --git a/deployment/local/docker-compose.yaml b/deployments/local/docker-compose.yaml similarity index 100% rename from deployment/local/docker-compose.yaml rename to deployments/local/docker-compose.yaml diff --git a/deployments/staging/docker-compose.yaml b/deployments/staging/docker-compose.yaml new file mode 100644 index 0000000..52d4a32 --- /dev/null +++ b/deployments/staging/docker-compose.yaml @@ -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 diff --git a/deployment/staging/docker-compose.yaml b/deployments/test/docker-compose.yaml similarity index 100% rename from deployment/staging/docker-compose.yaml rename to deployments/test/docker-compose.yaml