⚙️ Devops/⛏ Git

GitLab CI/CD 구성하기

2023. 3. 13. 16:05
목차
  1. 목표
  2. 개발 환경
  3. Gitlab Runner 설치
  4. GitLab-runner 연동하기
  5. 도커 접속
  6. 1. 비대화식 등록
  7. 2. 대화식 등록
  8. 3. 등록 확인
  9. .gitlab-ci.yml 작성
  10. main으로 커밋
  11. HTTP Basic Authenticated : Access Denied 뜰 때, 깃랩 버전과 Gitlab-runner의 버전을 체크하자.
  12. This job is stuck because the project doesn't have any runners online assigned to it. even though i have added runner and it is alive
반응형

목표

GitLab에서 CI/CD를 하는 것

개발 환경

HOST

  • Mac OS X

SERVER

  • Ubuntu 20.04 LTS
  • GitLab Version : v14.5.0
  • Docker version 20.10.17, build 100c701

Gitlab Runner 설치

<aside> 💡 Gitlab 버전과 Gitlab-Runner의 버전을 꼭 일치시켜주세요!

</aside>

Docker로 설치하기

docker run -d --name gitlab-runner-v14.5.0 \\
--restart always \\
--volume /srv/gitlab-runner/config:/etc/gitlab-runner: \\
--volume /var/run/docker.sock:/var/run/docker.sock \\
gitlab/gitlab-runner:v14.5.0
  • docker-compose (잘안됨)
#docker-compose.gitlab 파일 작성
sudo vi /opt/gopath/src/gitlab/docker-compose.gitlab.runner.yml
gitlab-runner:
 container_name: gitlab-runner
 image: 'gitlab/gitlab-runner:v14.5.0'
 restart: always
 volumes:
  - '/srv/gitlab-runner/config:/etc/gitlab-runner'
  - '/var/run/docker.sock:/var/run/docker.sock'
#docker-compose로 컨테이너 실행
docker-compose -f /opt/gopath/src/gitlab/docker-compose.gitlab.runner.yml up -d

GitLab-runner 연동하기

Gitlab project Settings -> CI/CD -> Runners

도커 접속

$ docker container exec -it gitlab-runner bash

shell이용해서 scp를 한다면 executor를 shell로 설정해준다.

Runner 등록

두 가지 방법이 존재한다.

1. 비대화식 등록

gitlab-runner register -n \
--url http://<IP> \
--registration-token <TOKEN> \
--description gitlab-runner \
--executor docker \
--docker-image docker:latest \
--docker-volumes /var/run/docker.sock:/var/run/docker.sock

옵션 설명

--url GitLab 인스턴스 URL
--registration-token Project 의 token
--description 설명
--executor 빌드를 실행하는 데 사용할 수 있는 여러 실행 프로그램
--docker-image Docker를 실행 프로그램으로 선택한 경우 사용할 이미지
--docker-volumes Docker를 실행 프로그램으로 선택한 경우 사용할 볼륨

2. 대화식 등록

gitlab-runner register
# URL
# TOKEN
# runner 이름
# 특정 Tag로 커밋시 동작
# 실행프로그램
root@207d1b9b0beb:/# gitlab-runner register
Runtime platform                                    arch=amd64 os=linux pid=30 revision=f0a95a76 version=14.5.0
Running in system-mode.

Enter the GitLab instance URL (for example, https://gitlab.com/):
https://gitlab.example.com/
Enter the registration token:
katSLz2sjkHZ21nkazYs-_6cb
Enter a description for the runner:
[207d1b9b0beb]: gitlab-runner-140
Enter tags for the runner (comma-separated):
deploy
Registering runner... succeeded                     runner=ktSLz2jk
Enter an executor: parallels, kubernetes, custom, docker, ssh, virtualbox, docker+machine, docker-ssh+machine, docker-ssh, shell:
docker
Enter the default Docker image (for example, ruby:2.6):
openjdk:11.0-jdk-oracle
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

3. 등록 확인

초록불이 들어오면 정상적으로 된것이다!

.gitlab-ci.yml 작성

stages:          # List of stages for jobs, and their order of execution
  - build
  - deploy

image: openjdk:11-oracle

cache:
    paths:
    - .gradle/wrapper
    - .gradle/caches

build-job:       # This job runs in the build stage, which runs first.
  stage: build
  before_script:
    - chmod +x ./gradlew
  script:
    - echo "build start.."
    - ./gradlew build

deploy-job:      # This job runs in the deploy stage.
  stage: deploy  # It only runs when *both* jobs in the test stage complete successfully.
	before_script:
		- apt update
		- apt install openssh-client -y
  script:
    - echo "Deploying application..."
    - sshpass -p "$DEPLOY_PASSWORD" scp ./build/libs/*.jar "$USER"@"$DEPLOY_IP":~/BUILD_JAR/test.jar
    - echo "success deploy!"

main으로 커밋

main 브랜치로 커밋 시 정상적으로 CI/CD가 실행되는 것을 볼 수 있다.

왼쪽 탭 CI/CD → Pipelines에 보면 pass가 된것을 확인할 수 있다!

 

TroubleShooting

HTTP Basic Authenticated : Access Denied 뜰 때, 깃랩 버전과 Gitlab-runner의 버전을 체크하자.

💡 현재 사용중인 Gitlab 버전과 같은 Gitlab-runner를 사용해야 한다.

 

This job is stuck because the project doesn't have any runners online assigned to it. even though i have added runner and it is alive

 

ERROR This job is stuck because the project doesn't have any runners online assigned to it. even though i have added runner and

Despite of the fact runner is alive. Why this error is coming

devops.stackexchange.com

runner 설정에서 untaged jobs 체크를 해준다.

REFERENCES

GitLab Runner 를 사용하여 GitLab CI 구성하기

GitLab-CI Runner가 동작하지 않을 때 해봐야 할 것들

How to check the version of GitLab?

Docs archives | GitLab | GitLab

GitLab CI/CD + SSH 공개키를 이용한 자동배포

반응형
저작자표시 (새창열림)
  1. 목표
  2. 개발 환경
  3. Gitlab Runner 설치
  4. GitLab-runner 연동하기
  5. 도커 접속
  6. 1. 비대화식 등록
  7. 2. 대화식 등록
  8. 3. 등록 확인
  9. .gitlab-ci.yml 작성
  10. main으로 커밋
  11. HTTP Basic Authenticated : Access Denied 뜰 때, 깃랩 버전과 Gitlab-runner의 버전을 체크하자.
  12. This job is stuck because the project doesn't have any runners online assigned to it. even though i have added runner and it is alive
'⚙️ Devops/⛏ Git' 카테고리의 다른 글
  • [git] rebase로 커밋을 합쳐보자
  • .gitignore 적용하기
  • [Git] restore 명령어 - 수정된 파일, add 한 파일 되돌리기
  • [GitLab] Merge 정책 3가지 이해하기
iseunghan
iseunghan
꾸준하게 열심히..
iseunghan
iseunghan

공지사항

  • 어제보다 나은 오늘이 되기 위해 🔥
  • 분류 전체보기 (262)
    • 💐 Spring (14)
      • 개념 및 이해 (2)
      • Spring 핵심 기술 (24)
      • Spring REST API (8)
      • Spring MVC, DB 접근 기술 (7)
      • Spring Security (23)
      • Spring in Action (1)
    • 🌻 JAVA (84)
      • 자바 ORM 표준 JPA 프로그래밍 (20)
      • 알고리즘, 자료구조 (13)
      • 디자인 패턴 (7)
      • 정리정리정리 (43)
      • JUnit (1)
    • 🔖 Snippets (3)
      • Javascript (3)
    • ⚙️ Devops (22)
      • ⛏ Git (11)
      • 🐳 Docker (6)
      • 🐧 Linux (3)
      • 🌈 Jenkins (1)
      • 📬 Kafka (1)
    • 💬 ETC.. (4)
      • 💻 macOS (2)
    • 🌧️ ORM (2)
      • JPA (2)
    • 🐍 Python (3)
    • 📚 Databases (15)
      • 오라클로 배우는 데이터베이스 개론과 실습(2판) (3)
      • RealMySQL 8.0 (8)
    • 🔥 Computer Science (5)
      • 📡 네트워크 (5)
    • 🏷️ 협업 (1)
    • 📜 코딩테스트 (38)
      • BAEKJOON\수학 1, 수학 2 (8)
      • BAEKJOON\재귀 (5)
      • BAEKJOON\브루트 포스 (3)
      • BAEKJOON\정렬 (1)
      • BAEKJOON\백트래킹 (5)
      • BAEKJOON\BFS, DFS (6)
      • BAEKJOON\이분탐색 (1)
      • BAEKJOON\다이나믹 프로그래밍 (9)
      • BAEKJOON\그리디 알고리즘 (0)
    • ✨ ISEUNGHAN (1)

인기 글

전체
오늘
어제
반응형
hELLO · Designed By 정상우.
iseunghan
GitLab CI/CD 구성하기
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.