Git | GitLab 57

[GitLab] Runner Shell Executor - ERROR: Job failed: prepare environment: exit status 1. Check https://docs.gitlab.com/runner/shells/index.html#shell-profile-loading for more information

현상2025.02.07-[GitLab] Runner 설치 및 등록에서 Ubuntu 22.04 LTS에서 gitlab runner를 직접 구성하여 테스트했다. shell executor를 사용하도록 구성했는데, 아래와 같은 에러 메시지가 발생하면서 동작에 실패했다.ERROR: Job failed: prepare environment: exit status 1. Check https://docs.gitlab.com/runner/shells/index.html#shell-profile-loading for more information원인을 파악하고 해결해보자.   원인에러 로그를 보면 문서를 참고하라고 되어 있는데, 문서를 확인해 보면 다음과 같이 오류 원인을 안내하고 있다.(참고 : https://docs..

Git | GitLab 2025.02.19

[GitLab] Runner 설치 및 등록

개요2025.02.06-[GitLab] 파이프라인 구성에서는 GitLab 호스팅 러너를 사용하여 파이프라인을 실행해 보았다. 이번 글에서는 직접 구성하고 등록한 러너에서 파이프라인을 실행해보려고 한다. 테스트 환경은 다음과 같다.GitLab 서비스 : gitlab.com러너 유형 : 프로젝트 러너사용 서버 : AWS EC2 Ubuntu 22.04 LTS arm64 방법을 적어둔다.  프로젝트 러너 생성1. New project runner 버튼 클릭프로젝트의 CI/CD 설정 페이지에서 New project runner 버튼을 클릭한다. 2. 신규 프로젝트 러너 생성러너의 태그 값을 지정하고, 필요시 추가 구성 옵션을 설정한다. 설정이 완료되면 러너 만들기 버튼을 클릭한다.이번 글에서는 별도 설정 없이 생..

Git | GitLab 2025.02.18

[GitLab] 파이프라인 구성

개요2025.02.03-[GitLab] CI/CD 파이프라인이란에서 GitLab에서 CI/CD를 위한 기능 중 하나인 파이프라인에 대한 개념을 알아보았다. 이번 글에서는 간단한 파이프라인을 직접 구성하고 테스트해본다.   환경파이프라인 구성 테스트는 파이프라인 자체에 초점을 두고 테스트하는 목적으로 별도 Runner 구성이 필요하지 않은 GitLab 호스팅 서비스를 이용한다. 레포지터리 환경 : GitLab.com 내 레포지터리사용 Runner 유형 : GitLab 호스팅 Runner/인스턴스 Runner Runner 구성은 이후에 직접 해보도록 하겠다.   파이프라인 구성간단한 파이프라인을 직접 구성하고 실행해보자. 1. Runner 확인파이프라인의 Job을 실행하기 위해서는 먼저 실행할 Runner가..

Git | GitLab 2025.02.17

[GitLab] Runner 란

개요2025.02.03-[GitLab] CI/CD 파이프라인이란에서 GitLab CI/CD 기능의 파이프라인에 대한 개념을 알아보았다. 그중 파이프라인의 Job이 동작하는 환경을 Runner라고 하는데, 이번 글에서는 Runner에 대해서 좀 더 자세히 알아보려고 한다.   RunnerGitLab Runner는 파이프라인의 Job을 실행하는 에이전트이다. .gitlab-ci.yml 파일에 정의된 빌드, 테스트, 배포, CI/CD 작업을 실행하는 역할을 한다.  특징여러 Job을 동시에 실행할 수 있다.여러 서버에서 여러 토큰을 사용할 수 있고, 토큰 당 동시 작업 수를 제한할 수 있다.로컬에서, 컨테이너 내에서, 컨테이너 내에서 SSH를 통해, 원격 SSH 서버에 연결해서 등등의 다양한 환경에서 Job을..

Git | GitLab 2025.02.14

[GitLab] CI/CD 파이프라인이란

개요DevOps 상에서 지속적인 통합과 배포라 일컬어지는 CI/CD는 다음과 같은 의미를 가지고 있다. CI (Continuous Integration)코드 저장소에 변경이 발생할 때마다 자동으로 응용 프로그램을 빌드하고 테스트함으로써 애플리케이션 오류 가능성을 감소시킨다. CD (Continuous Delivery/Deployment)코드 저장소에 변경이 발생할 때마다 자동으로 빌드한 애플리케이션을 배포한다. 대표적인 CI/CD 도구로는 이 글에서 몇 번 다뤘던 Jenkins가 있지만, GitLab 또한 존재한다. 이번 글에서는 GitLab에서 CI/CD를 위한 기능 중 파이프라인에 대해서 알아보려고 한다.   GitLab CI/CD 파이프라인GitLab CI/CD는 다양한 개념과 용어를 사용해 빌드,..

Git | GitLab 2025.02.12

[Git] Shallow Clone - 저장소의 일부 이력만 받아오기

개요간혹 몇 년에 걸쳐 유지되어 용량이 엄청 커진 Git 저장소를 클론 할 때가 있는데, 전송해야 하는 데이터의 양이 너무 많아 시간이 아주 오래 걸리거나 중간에 실패하는 경우가 발생할 수 있다.만약 저장소의 전체 이력이 필요하지 않다면 저장소의 일부 이력만 받아오는 Shallow Clone이 방법이 될 수 있다. 이번 글에서는 git clone 또는 fetch 시 일부 이력만 받아오는 방법을 적어둔다.  depthgit clone 또는 git fetch 명령어를 사용할 때 --depth 옵션을 통해 받아올 이력, 즉 커밋의 수를 지정할 수 있다.git clone --depth=Ngit fetch --depth=N최신 이력부터 지정한 수의 커밋을 받아오게 된다. 즉, depth를 1로 주면 최신 1개의..

Git | GitLab 2024.12.05

[Git] stash - 특정 파일만 임시 저장

개요최근 Git 로컬 레포지터리에서 수정 작업을 많이 하고 있는데, 수정 내용을 간단하게 저장하고 다시 적용할 수 있는 stash를 적극적으로 활용하고 있다. git stash 명령은 워킹 디렉터리에서 수정이 발생한 모든 내용을 임시로 저장하는데, 특정 파일만 저장할 때도 많아서 방법을 적어둔다.  git stash pushgit stash [push [-p|--patch] [-S|--staged] [-k|--[no-]keep-index] [-q|--quiet] [-u|--include-untracked] [-a|--all] [-m|--message ] [--pathspec-from-file= [--pathspec-file-nul]] ..

Git | GitLab 2024.11.12

[GitLab] Merge Request - Squash 기본 활성화하기

개요2024.08.30-[Git] Squash - 커밋 압축하기에서 여러 개의 작은 커밋을 하나의 커밋으로 압축하는 Squash를 알아보았다.이번 글에서는 GitLab에서 Merge Request를 머지할 때 Squash 기능을 사용하는 방법을 적어둔다.  Merge Request - SquashGitLab에서 Merge Request를 할 때 Squash commits 체크박스를 체크하면 머지할 떄 압축된 커밋 하나와 머지 커밋 하나, 총 두 개의 커밋이 target branch에 추가된다.   기본 옵션 설정레포지터리 설정에서 Merge Request를 생성할 때의 Squash 관련 기본값을 설정할 수 있다. 설정할 수 있는 기본값은 아래와 같다.Do now allow : Squash 미허용. 체크 ..

Git | GitLab 2024.09.19

[Git] Squash - 커밋 압축하기

개요Git으로 프로젝트를 관리하는 경우, commit 이력을 깔끔하게 관리하는 것은 프로젝트의 이력 파악에 도움을 준다. 다만 커밋을 수행한 직후에 사소한 오타 등을 수정하기 위해 다시 커밋을 수행하는 상황에 의해 커밋 이력이 난잡해질 수도 있다. 이런 경우 git squash라는 기능을 이용하여 커밋을 압축하는 방식으로 커밋 이력을 정리할 수 있다.이번 글에서는 git squash를 사용하는 방법을 적어둔다.  Squash사전적으로 squash란 '짓누르다'라는 의미로, git에서는 여러 커밋을 하나의 커밋으로 짓눌러 합치는 기능을 제공한다. 불필요하게 작게 나뉜 커밋을 유의미한 변경 사항을 담은 커밋으로 압축할 수 있게 한다.로컬 레포지터리에서 개발한 내용을 원격 저장소로 올리기 전에 squash를 ..

Git | GitLab 2024.09.13

[Git] git tag - 특정 태그로 이동

개요최근 소스 레포지터리의 특정 태그 버전으로 이동해야 하는 일이 있었는데, 방법을 잘 모르고 있어서 적어둔다.   Tag무언가를 표시할 때 사용하는 태그는 Git에서도 중요한 특정 커밋을 표시하기 위해서 사용한다. 즉, 커밋을 가리키는 링크와 비슷한데, 보통 v1.0.0, v1.1.0 등으로 릴리즈를 할 때 사용한다.태그에는 Lightweight, Annotated라는 두 가지 종류가 존재한다. Lightweight 태그는 단순 특정 커밋에 대한 포인터에 해당하는 반면, Annotated 태그는 태그 생성자의 이름, 이메일, 태그 생성일, 태그 매시지 등을 Git 데이터베이스에 저장한다. 일반적으로 태그를 생성할 때는 Annotated 태그로 생성하여 사용한다.   태그 생성태그는 git tag 명령으..

Git | GitLab 2024.09.02