관리 메뉴

CASSIE'S BLOG

[비공개] GitLab 배포하는 ci/cd 파이프라인 만들기 본문

PROGRAMMING/삽질로그

[비공개] GitLab 배포하는 ci/cd 파이프라인 만들기

ITSCASSIE1107 2024. 4. 22. 13:45

되는 거 보고 공개로 옮기기

 

 

이거를 하라고 하더라고 GitLab Runner를 꼭 설치해야해? 나는 gitlab을 처음 써봐서 그 빌드하는 거를 자동화하는 cicd 파이프라인을 만들고 싶거든 제일 간단한 방법을 좀 알려줘

 

GitLab Runner 설치할 필요없다고함.

 

네, GitLab Runner를 설치하고 구성하는 것은 GitLab에서 CI/CD 파이프라인을 실행하는 데 필요한 단계 중 하나입니다. 그러나 더 간단한 방법도 있습니다.

GitLab에서 제공하는 .gitlab-ci.yml 파일을 사용하여 간단하게 CI/CD 파이프라인을 설정할 수 있습니다. 이를 통해 별도의 GitLab Runner를 설치하거나 구성하지 않고도 프로젝트의 빌드 및 배포를 자동화할 수 있습니다.

아래는 .gitlab-ci.yml 파일을 사용하여 간단한 CI/CD 파이프라인을 설정하는 예시입니다.

 

# .gitlab-ci.yml

# Specify the image to use for the job
image: node:14

# Define stages for the CI/CD pipeline
stages:
  - build
  - deploy

# Define jobs for each stage
build:
  stage: build
  script:
    - npm install
    - npm run build

deploy:
  stage: deploy
  script:
    - echo "Deploying..."
    # Add your deployment script here, for example:
    # - scp -r build/* user@server:/path/to/deploy
  only:
    - master

 

 

 

이제 위의 .gitlab-ci.yml 파일을 프로젝트 루트 디렉토리에 추가하고 GitLab에 푸시하면, 변경 사항이 발생할 때마다 GitLab에서 자동으로 빌드 및 배포가 수행됩니다.

이 파일은 프로젝트의 루트 디렉토리에 추가하면 됩니다. 그러면 GitLab에서 자동으로 인식하고 CI/CD 파이프라인이 실행됩니다. 이 파일을 통해 프로젝트의 빌드와 배포를 자동화할 수 있습니다.


User
그러면 npm run build 만 이거를 터미널에 검색하면 이제는 빌드파일을 레포지토리에 별도로 deployment 레포지토리에 안 끌어도 자동으로 배포가 된다는말인가?
ChatGPT
네, 맞습니다. .gitlab-ci.yml 파일을 사용하여 CI/CD 파이프라인을 설정하면 GitLab에서 자동으로 빌드 및 배포가 이루어집니다. 따라서 npm run build 명령어를 수동으로 실행하여 빌드한 결과물을 별도의 배포 레포지토리에 수동으로 업로드할 필요가 없습니다. GitLab에서 자동으로 이 작업을 처리해줍니다.

.gitlab-ci.yml 파일을 통해 빌드, 테스트, 배포 등의 작업을 설정하면, GitLab에서 코드가 업데이트될 때마다 자동으로 이러한 작업이 수행됩니다. 따라서 매번 npm run build 명령어를 수동으로 실행할 필요 없이, GitLab이 자동으로 빌드하고 배포할 것입니다.

User
근데 자동으로 배포되는 주소는 어떻게 설정하는건데?
ChatGPT
GitLab CI/CD를 사용하여 자동으로 배포되는 주소를 설정하는 방법은 여러 가지가 있습니다. 가장 간단한 방법은 GitLab CI/CD 설정에서 환경 변수를 사용하여 배포 주소를 설정하는 것입니다.

다음은 .gitlab-ci.yml 파일에서 배포 주소를 환경 변수로 설정하는 예시입니다.

yaml
Copy code
# .gitlab-ci.yml

stages:
  - deploy

deploy:
  stage: deploy
  script:
    - echo "Deploying..."
    # Add your deployment script here, for example:
    # - scp -r build/* user@server:/path/to/deploy
  only:
    - master

# 배포 주소를 환경 변수로 설정
variables:
  DEPLOYMENT_URL: "http://your-deployment-url.com"
위의 예시에서는 .gitlab-ci.yml 파일에 variables 섹션을 추가하여 DEPLOYMENT_URL이라는 환경 변수를 설정하였습니다. 이렇게 설정한 환경 변수는 GitLab CI/CD 파이프라인에서 사용할 수 있습니다.

배포 스크립트에서는 이 환경 변수를 사용하여 배포할 주소를 지정할 수 있습니다.

예를 들어, 다음과 같이 스크립트에서 환경 변수를 사용하여 배포 주소를 지정할 수 있습니다.

yaml
Copy code
deploy:
  stage: deploy
  script:
    - echo "Deploying to $DEPLOYMENT_URL"
    # 배포 스크립트에서 환경 변수 사용
    # 예: scp -r build/* user@server:/path/to/deploy
  only:
    - master
위의 예시에서 $DEPLOYMENT_URL은 설정한 환경 변수인 배포 주소를 의미합니다. 이렇게 설정하면 GitLab CI/CD 파이프라인이 실행될 때 자동으로 설정한 배포 주소로 배포가 이루어집니다.



jobseek로 나중에 하려고 하는데 음..

 

jobseek나중에 npm run build 이거 ci/cd 자동으로 구축해서......하려고하는데 그게 frontend 폴더에 클라이언트사이드 프로젝트가 따로 있고 backend 패키지에 백엔드 코드가 자동으로 되어있는데 같이배포할 수가 없지않나? gitlab이 백엔드 배포까지 담당하는건 아니잖아 맞지? 아닌가?
 
 
 

네, 맞습니다. GitLab은 주로 소스 코드의 빌드와 테스트, 그리고 배포를 자동화하는 데 사용됩니다.

보통 프론트엔드와 백엔드는 서로 다른 소스 코드 저장소에서 개발되고, 각각의 빌드 및 배포 프로세스가 분리되어 있습니다. 따라서 GitLab을 사용하여 프론트엔드와 백엔드를 함께 배포하는 것은 일반적으로 권장되지 않습니다.

그러나 GitLab은 다음과 같은 방법으로 프론트엔드와 백엔드를 함께 배포하는 데 도움을 줄 수 있습니다.

  1. Multiple Jobs in a Pipeline: 하나의 .gitlab-ci.yml 파일에 여러 개의 job을 정의하여 프론트엔드 빌드와 백엔드 빌드를 각각 수행할 수 있습니다. 이후에 배포 단계에서 프론트엔드와 백엔드를 각각 배포할 수 있습니다.

 

 

stages:
  - build_frontend
  - build_backend
  - deploy

build_frontend:
  stage: build_frontend
  script:
    - cd frontend
    - npm install
    - npm run build

build_backend:
  stage: build_backend
  script:
    - cd backend
    - npm install
    - npm run build

deploy_frontend:
  stage: deploy
  script:
    - echo "Deploying frontend..."
    # Add your frontend deployment script here

deploy_backend:
  stage: deploy
  script:
    - echo "Deploying backend..."
    # Add your backend deployment script here

 

  1. Multi-Project Pipelines: 프론트엔드와 백엔드가 서로 다른 저장소에 있는 경우, GitLab의 Multi-Project Pipelines을 사용하여 두 프로젝트를 하나의 파이프라인으로 연결할 수 있습니다. 이렇게 하면 두 프로젝트를 함께 빌드하고 배포할 수 있습니다.

 

stages:
  - build
  - deploy

build_frontend:
  stage: build
  script:
    - npm install
    - npm run build
  artifacts:
    paths:
      - build

deploy_frontend:
  stage: deploy
  script:
    - echo "Deploying frontend..."
    # Add your frontend deployment script here
  needs: ["build_frontend"]

build_backend:
  stage: build
  script:
    - npm install
    - npm run build
  artifacts:
    paths:
      - build

deploy_backend:
  stage: deploy
  script:
    - echo "Deploying backend..."
    # Add your backend deployment script here
  needs: ["build_backend"]

 

이러한 방법을 사용하면 프론트엔드와 백엔드를 각각 빌드하고 배포할 수 있습니다. GitLab CI/CD는 이러한 복잡한 작업을 자동화하고 관리하는 데 매우 유용합니다.

 

보통 백엔드 프론트엔드 레포지토리 같이 만약에 한 레포지토리에 만들었으면 gitlab에서 프론트랑 백엔드 별도로 배포할 수 있다고 쉽게 생각하면 되는거지?
 
 
 

네, 맞습니다. 하나의 Git 저장소(repository)에 프론트엔드와 백엔드 코드가 함께 있는 경우, GitLab CI/CD를 사용하여 프론트엔드와 백엔드를 별도로 빌드하고 배포할 수 있습니다.

이를 위해서는 .gitlab-ci.yml 파일에 각각의 빌드 및 배포 작업을 정의해야 합니다.

예를 들어, 다음은 프론트엔드와 백엔드를 함께 포함한 단일 저장소에서 GitLab CI/CD를 설정하는 방법입니다.

 

stages:
  - frontend_build
  - backend_build
  - deploy

frontend_build:
  stage: frontend_build
  script:
    - cd frontend
    - npm install
    - npm run build
  artifacts:
    paths:
      - frontend/build/

backend_build:
  stage: backend_build
  script:
    - cd backend
    - npm install
    - npm run build
  artifacts:
    paths:
      - backend/build/

deploy_frontend:
  stage: deploy
  script:
    - echo "Deploying frontend..."
    # Add your frontend deployment script here
  needs: ["frontend_build"]

deploy_backend:
  stage: deploy
  script:
    - echo "Deploying backend..."
    # Add your backend deployment script here
  needs: ["backend_build"]

 

위의 예시에서는 frontend_build 단계와 backend_build 단계에서 각각 프론트엔드와 백엔드 코드를 빌드하고, deploy 단계에서는 빌드된 코드를 배포합니다.

또한, frontend_build와 backend_build 단계에서 각각 빌드된 결과물을 artifacts로 정의하여, 이후 배포 단계에서 사용할 수 있도록 합니다.

이렇게 설정하면 GitLab CI/CD를 사용하여 프론트엔드와 백엔드를 각각 빌드하고 배포할 수 있으며, 두 코드베이스가 하나의 저장소에 포함되어 있더라도 서로 독립적으로 관리될 수 있습니다.

반응형