우선 GitLab에서 빈 프로젝트를 하나 만듭니다.
그리고 아래와 같이 .gitlab-ci.yml 파일을 만듭니다.

GitLab CI/CD에서는 .gitlab-ci.yml 파일을 사용하여 파이프라인을 정의합니다.
이 파일에는 빌드, 테스트, 배포와 같은 작업들이 순서대로 명시됩니다.
이제 작업들을 명시해봅시다.
build the car:
script:
- mkdir build
- cd build
- touch car.txt
- echo "chassis" > car.txt
- echo "engine" > car.txt
- echo "wheels" > car.txt
여기서 echo "문자열" > 파일명 명령어는 "문자열"을 "파일명"이라는 파일에 씁니다.
또한echo 명령어는 CI/CD 파이프라인에서 진행 상황을 파악하고, 특정 단계나 변수의 상태를 로깅하기 위해 자주 사용됩니다.
이제 GitLab RUNNER를 설정합니다.
GitLab Runner는 작업들을 수행하고, 결과를 보여주는 역할을 수행합니다.

아래와 같이 정상적으로 실행되는 것을 확인할 수 있습니다.


stages:
- build
- test
build the car:
stage: build
script:
- mkdir build
- cd build
- touch car.txt
- echo "chassis" > car.txt
- echo "engine" > car.txt
- echo "wheels" > car.txt
test the car:
stage: test
script:
- test -f build/car.txt
- cd build
- grep "chassis" car.txt
- grep "engine" car.txt
- grep "wheels" car.txt
stages를 통해서 어떤 단계인지 명시를 해주어야 합니다.
test -f build/car.txt 이 명령어는 build/car.txt 파일이 존재하고 파일인지를 검사합니다.
-f 옵션은 파일이 존재하고 일반 파일(regular file)인지 확인합니다.
이 명령어는 CI/CD 파이프라인에서 종종 파일의 존재 여부를 확인하는 데 사용됩니다.
grep은 파일 내에서 특정 문자열을 찾는 데 사용되는 명령어입니다.
아래와 같이 이제 단계가 두가지가 된 것을 확인할 수 있습니다.

테스트가 실패하였는데 이유를 같이 살펴봅시다.

status 1은 에러가 생겼음을 의미합니다.
이는 하나의 작업이 끝나고 파일들을 삭제되는데, 이를 다른 작업에서 사용할 때 파일이 없다고 에러가 나는 것입니다.
이를 해결해봅시다.
stages:
- build
- test
build the car:
stage: build
script:
- mkdir build
- cd build
- touch car.txt
- echo "chassis" >> car.txt
- echo "engine" >> car.txt
- echo "wheels" >> car.txt
artifacts:
paths:
- build/
test the car:
stage: test
script:
- ls
- test -f build/car.txt
- cd build
- cat car.txt
- grep "chassis" car.txt
- grep "engine" car.txt
- grep "wheels" car.txt
artifacts: paths - build/는 GitLab CI/CD 파이프라인 설정의 일부로, GitLab Runner가 작업을 수행한 후 특정 파일이나 디렉토리(이 경우 build/ 디렉토리)를 아티팩트(artifacts)로 지정하는 데 사용됩니다.
이 아티팩트는 파이프라인의 후속 단계나 작업이 완료된 후에도 사용할 수 있으며, GitLab의 웹 인터페이스를 통해 다운로드할 수도 있습니다.
>>는 추가하기 연산자입니다. 이는 기존 파일의 내용을 유지하면서 추가할 때 사용됩니다.
아래 이미지와 같이 빌드와 테스트를 모두 통과한 것을 확인할 수 있습니다.
