CI/CD and Deployment

CI/CD Pipeline

The CI/CD pipeline for GitLab Discussions uses GitLab CI/CD and is defined in .gitlab-ci.yml.

Pipeline Stages:

  • build: Builds the application, performs linting and testing.
  • test: Runs automated tests.
  • deploy: Deploys the application to the target environment.

Deployment Options:

  • Staging Environment: The staging environment is used for testing new features and bug fixes before they are released to production. The staging environment is deployed to a dedicated Kubernetes cluster.
  • Production Environment: The production environment is where the application is accessible to end users. The production environment is deployed to a dedicated Kubernetes cluster.

Example Configuration:

stages:
            - build
            - test
            - deploy
          
          variables:
            # Define environment specific variables here. 
            # For example, you may want to define separate API tokens for each environment.
            # CI_API_TOKEN_STAGING
            # CI_API_TOKEN_PRODUCTION
          
          build:
            stage: build
            image: docker:latest
            script:
              - apt-get update && apt-get install -y nodejs
              - npm install
              - npm run build
          
          test:
            stage: test
            image: node:latest
            script:
              - npm run test
          
          deploy:
            stage: deploy
            image: google/cloud-sdk
            script:
              - gcloud auth activate-service-account --key-file=$CI_API_TOKEN_STAGING # Example for staging
              - gcloud container clusters get-credentials $KUBE_CLUSTER_NAME --zone $KUBE_CLUSTER_ZONE # Example for staging
              - kubectl apply -f deployment.yaml # Apply the deployment manifest to the Kubernetes cluster
            only:
              - master
          

Source:

Notes:

  • The specific deployment steps and configurations will vary depending on the target environment.
  • The CI_API_TOKEN_STAGING and CI_API_TOKEN_PRODUCTION variables should be set to the appropriate API tokens for each environment.
  • The KUBE_CLUSTER_NAME and KUBE_CLUSTER_ZONE variables should be set to the names of the Kubernetes cluster and zone for each environment.
  • The deployment.yaml file contains the Kubernetes deployment configuration.

Documentation Links: