콘텐츠로 건너뛰기
GitTree
Git 가이드6분 읽음

푸시하기 전에 GitHub Actions 및 GitLab CI을 로컬에서 실행하는 방법

워크플로가 통과하는지 확인하려면 "fix ci" 커밋 푸시를 중지하세요. 몇 분 안에 act 또는 gitlab-ci-local을 사용하여 Docker에서 동일한 작업을 실행한 후 한 번 푸시하세요. 바로 실행할 수 있는 샘플과 시각적 연습이 포함되어 있습니다.

작성자: Kodmora

GitTree 뒤에 있는 소프트웨어 하우스

게시됨 업데이트됨
  • CI/CD
  • GitHub
이 페이지에서

자신의 컴퓨터에서 `act`을 사용하여 GitHub Actions를 실행하고 gitlab-ci-local을 사용하여 GitLab CI를 실행할 수 있습니다. 둘 다 파이프라인 파일을 읽고 Docker 컨테이너에서 각 작업을 시작합니다. Docker을 설치하고 실행기를 설치한 다음 저장소 폴더에서 act -j test 또는 gitlab-ci-local test를 실행합니다. 이제 실패한 작업은 호스트된 실행기를 푸시하고 기다리는 대신 컴퓨터에서 몇 초 만에 실패합니다.

이 가이드에서는 macOS, Windows 및 Linux에 설치할 항목, 두 실행기에 대한 명령, 복사할 수 있는 샘플 워크플로, 로컬 실행 제한 및 사람들이 처음으로 발생하는 오류에 대해 설명합니다. 이 연습에서는 우리가 만드는 Git 클라이언트인 GitTree를 사용합니다. 해당 로컬 파이프라인 페이지는 설치된 항목을 확인하고 샘플 파일을 작성하며 정확한 명령을 준비합니다. 로컬 파이프라인은 GitTree의 무료 플랜의 일부이며 호스팅 계정이 필요하지 않습니다.

CI 파이프라인을 로컬에서 실행하는 이유는 무엇입니까?

워크플로 파일에 대한 모든 변경 사항은 실행될 때까지 테스트할 수 없는 코드입니다. 로컬 실행기가 없으면 루프는 YAML 편집, 커밋, 푸시, 실행기 대기, 로그 읽기, 반복입니다. 각 라운드에는 몇 분이 소요되며 "다시 시도"와 같은 커밋 흔적이 남습니다. 로컬 실행은 루프를 몇 초로 단축하고 기록을 깨끗하게 유지합니다.

로컬 실행과 푸시 앤 기다림 비교
밀고 기다리세요로컬에서 실행
피드백 시간시도당 시간(분) 및 대기열 시간이미지를 가져온 후 몇 초
필요한 커밋시도당 하나지나갈 때까지 없음
호스팅된 CI 회의록 사용예아니요
프로덕션 CI와 동일한 환경예닫혀 있고 동일하지 않음(컨테이너, 호스팅된 비밀 없음)
오프라인으로 작동아니요예, 첫 번째 이미지를 가져온 후

필요한 것: Docker 및 러너 한 명

두 실행기 모두 컨테이너에서 모든 작업을 시작하므로 Docker 엔진이 설치되어 실행되어야 합니다. 즉, macOS의 Docker Desktop, OrbStack 또는 Colima, Windows의 Docker Desktop, Linux의 Docker Engine 또는 Docker Desktop입니다. 그런 다음 파일에 대한 실행기를 설치하십시오.

각 러너를 설치하는 방법
러너파이프라인 파일macOSWindowsLinux
act.github/workflows/*.ymlbrew install actwinget install nektos.actnektosact.com의 설치 스크립트
gitlab-ci-local.gitlab-ci.ymlnpm install -g gitlab-ci-localPATH에 있는 GitHub 릴리스의 .exenpm install -g gitlab-ci-local

npm으로 설치하려면 gitlab-ci-local에 Node.js 18 이상이 필요합니다. docker info, act --version 및 gitlab-ci-local --version 설정을 확인하세요. docker info이 실패하면 무엇보다 먼저 엔진을 시작하세요.

act를 사용하여 로컬에서 GitHub Actions를 실행합니다.

저장소의 루트 폴더에서 act를 실행합니다. 먼저 작업을 나열한 다음 작업 중인 작업을 실행하세요. 기본적으로 act는 push 이벤트를 시뮬레이션하므로 다른 이벤트에서만 실행되는 작업에는 이벤트 이름이 필요합니다.

# list workflows and jobs
act -l

# run one job from one workflow file
act -W .github/workflows/ci.yml -j test

# simulate a pull request instead of a push
act pull_request -j test

# pass a secret the job needs
act -j deploy -s NPM_TOKEN="$NPM_TOKEN"

# Apple silicon: run x86_64 images
act -j test --container-architecture linux/amd64

첫 번째 실행에서는 사용할 실행기 이미지를 묻습니다. 중간은 대부분의 프로젝트에 적합합니다. 작은 이미지에는 호스팅된 실행기에 포함된 도구가 누락되어 전체 이미지가 매우 큽니다. "명령을 찾을 수 없음"으로 인해 단계가 실패하면 -P ubuntu-latest=<image>을 사용하여 더 큰 이미지를 선택하거나 단계에서 도구를 설치하십시오.

gitlab-ci-local을(를) 사용하여 로컬에서 GitLab CI 실행

gitlab-ci-local는 현재 폴더에서 .gitlab-ci.yml을(를) 읽습니다. 인수 없이 전체 파이프라인을 실행합니다. 하나의 작업을 실행하려면 작업 이름을 지정하세요. --list는 작업을 실행하지 않고 표시하며, YAML이 구문 분석하는지 확인하는 빠른 방법입니다.

# list jobs and stages
gitlab-ci-local --list

# run one job
gitlab-ci-local test

# pass a CI/CD variable
gitlab-ci-local test --variable API_URL=http://localhost:8080

단계별로 GitTree에서 로컬로 파이프라인 실행

  1. CI/CD 열기

    저장소를 열고 도구 모음에서 CI/CD를 누릅니다. 연결된 계정이나 Pro가 없으면 로컬 파이프라인에서 보기가 열립니다. 하나는 Run Locally…가 헤더에 있습니다. 도구 → 로컬 파이프라인 준비를 사용할 수도 있습니다.

  2. 필요한 것을 확인하세요

    필요한 것에는 Docker, act 및 gitlab-ci-local이 해당 경로와 함께 찾음으로 표시되거나 시스템에 대한 설치 명령과 저장소 신뢰 및 터미널 셸이 포함된 찾을 수 없음으로 표시됩니다. 누락된 항목을 설치하고 Check again를 누르세요.

  3. 샘플을 추가하거나 파일을 사용하세요.

    이 저장소의 파이프라인 파일에는 실행 준비됨 워크플로 또는 실행할 수 없는 이유가 나열되어 있습니다. 없음을 사용하면 GitHub Actions 샘플 추가 또는 GitLab CI 샘플 추가를 통해 주석이 달린 시작 파일을 작성하고 엽니다. GitTree는 기존 파일을 덮어쓰지 않습니다.

  4. 준비하고 실행하세요

    로컬 실행…을 누르고 파일, 작업 및 셸을 선택한 다음 명령 준비를 선택합니다. 새 터미널에 입력 Enter를 누르지 않고 새 터미널에 정확한 명령을 입력합니다. 내용을 읽은 다음 Enter를 직접 누르세요.

GitTree: Docker의 로컬 파이프라인 및 발견된 작업, 누락된 항목에 대한 설치 단계, 실행할 준비가 된 샘플 워크플로.
GitTree: Docker의 로컬 파이프라인 및 발견된 작업, 누락된 항목에 대한 설치 단계, 실행할 준비가 된 샘플 워크플로.

시작할 샘플 워크플로

이는 GitTree의 GitHub Actions 샘플의 형태입니다. 두 작업, 빌드 후 테스트는 act 및 GitHub에서 동일하게 작동합니다. 명령을 자신의 명령으로 바꾸십시오.

name: GitTree local check

on:
  push:
  pull_request:
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build
        run: npm ci && npm run build

  test:
    runs-on: ubuntu-latest
    needs: build
    steps:
      - uses: actions/checkout@v4
      - name: Test
        run: npm test

로컬 실행과 호스팅 CI의 차이점

  • GitHub 또는 GitLab에 구성된 비밀번호 및 변수는 사용할 수 없습니다. 직업에 필요한 것을 통과하십시오.
  • 가상 머신이 아닌 컨테이너: 시스템화 또는 전체 가상 머신이 필요한 서비스는 동일한 방식으로 실행되지 않습니다.
  • 이미지는 호스팅된 러너와 다릅니다. 누락된 도구는 누락된 패키지이지 작업 흐름이 중단된 것이 아닙니다.
  • 이벤트는 시뮬레이션됩니다: act의 기본값은 push입니다. 재사용 가능한 워크플로, 포함 및 템플릿은 편집기가 아닌 실행기에 의해 해결됩니다.
  • 통과하는 로컬 실행은 호스팅된 결과가 아닙니다: 루프를 단축합니다. 호스트가 아직 최종 결정권을 갖고 있습니다.

일반적인 오류 및 수정 사항

사람들이 겪는 첫 번째 오류
오류원인수정
Docker 데몬에 연결할 수 없습니다.엔진이 작동하지 않습니다.Docker Desktop, OrbStack, Colima 또는 Docker 서비스 시작
단계 내에서 명령을 찾을 수 없습니다.러너 이미지에 도구가 부족합니다.-P과(와) 함께 더 큰 이미지를 사용하거나 단계적으로 설치하세요.
작업은 act을(를) 사용하여 실행되지 않습니다.act는 push을 시뮬레이션합니다. 작업이 다른 이벤트를 수신합니다.이벤트를 전달합니다(예: act pull_request).
Apple 실리콘의 exec 형식 오류arm64 Mac의 x86_64 이미지--container-architecture linux/amd64 추가
비밀이 비어 있습니다호스팅된 비밀이 로컬이 아닙니다.-s 또는 --secret-file (act), --variable (gitlab-ci-local)와 함께 전달합니다.

푸시하기 전에: 충돌 예측, 비밀 확인, 푸시 미리보기

로컬 파이프라인 실행은 작업이 통과할 것인가라는 한 가지 질문에 답합니다. 세 가지 다른 검사는 CI가 늦게 보고하거나 전혀 보고하지 않는 내용을 파악하며, 각 검사는 항목이 전송되기 전에 컴퓨터에서 실행됩니다.

  1. 병합을 예측합니다. git merge-tree --write-tree --name-only HEAD origin/main는 작업 트리를 건드리지 않고 메모리에 병합하고 충돌할 파일을 나열합니다. GitTree는 충돌이 발생할 수 있는 병합 전에 동일한 종류의 검사를 수행하고 경고합니다. Git 병합 충돌을 해결하는 방법을 참조하세요.
  2. 비밀 정보를 확인하세요. 커밋 또는 푸시 전에 GitTree는 변경 사항에서 가능성 있는 토큰, 비밀번호 및 개인 키를 로컬로 검색하고 이를 찾으면 대화 상자를 표시하고 중지합니다. 원격 저장소에 도달하는 비밀은 회전해야 하므로 가장 저렴하게 잡을 수 있는 순간은 푸시 전입니다. 경고가 보장되는 것은 아니므로 보내는 내용을 계속 검토하세요.
  3. 푸시 미리보기. 배송 미리보기에는 푸시에서 보낼 커밋과 파일이 나열되어 있으며, 읽을 수 있는 각 워크플로 파일에 대해 이 푸시에서 파이프라인이 실행됨, 실행될 수 있음 또는 실행되지 않음 여부와 그 이유가 나와 있습니다.

그런 다음 로컬에서 작업을 실행하고 한 번 푸시합니다. 비밀 경고 가이드 및 배송 미리보기 가이드에서 두 대화상자를 자세히 다룹니다.

Bitbucket Pipelines와 Azure Pipelines는 어떻습니까?

act 또는 gitlab-ci-local과 일치하는 bitbucket-pipelines.yml 또는 azure-pipelines.yml에 대해 유지 관리되는 로컬 실행기가 없습니다. 실용적인 접근 방식은 빌드 및 테스트 명령을 스크립트에 유지하고, 호스팅된 파이프라인에서 호출하고, 로컬 실행에만 작은 GitHub Actions 또는 GitLab CI 파일을 추가하는 것입니다. GitTree은 해당 파일을 로컬 실행기가 없음으로 표시하고 이에 대한 샘플을 제공합니다.

다음 단계: 로컬에서 파이프라인 실행 가이드는 모든 버튼을 문서화하고, CI/CD 실행은 호스팅 실행, 재실행 및 승인을 다루고, 도구 실행기는 GitTree의 기타 내장 도구를 나열합니다.

자주 묻는 질문

GitHub Actions을(를) 로컬에서 실행할 수 있나요?

예. act는 워크플로 파일을 읽고 컴퓨터의 Docker 컨테이너에서 각 작업을 실행합니다. Docker 및 act을 설치한 다음 저장소 폴더에서 act -j <job>를 실행합니다.

act에 Docker이(가) 필요합니까?

예. act는 Docker 컨테이너의 모든 작업을 시작하므로 Docker Desktop, OrbStack, Colima 또는 Docker Engine와 같은 Docker 엔진이 설치되어 실행 중이어야 합니다.

GitLab CI를 로컬에서 어떻게 테스트하나요?

gitlab-ci-local을(를) 설치하고 Docker을(를) 시작한 다음 gitlab-ci-local --list을(를) 실행하여 작업을 확인하고 gitlab-ci-local <job>을(를) 실행하여 작업을 실행하세요. 컨테이너에서 실행되도록 각 작업에 image:를 지정합니다.

act에 비밀을 어떻게 전달하나요?

하나의 비밀에는 -s NAME=value를 사용하고 비밀 파일에는 --secret-file를 사용하세요. .gitignore를 사용하여 해당 파일을 저장소 외부에 보관하세요.

로컬 달리기는 GitHub의 달리기와 동일합니까?

가깝고 동일하지 않습니다. 로컬 실행은 컨테이너와 자체 이미지 및 비밀을 사용하므로 일부 단계는 다르게 작동합니다. 이를 사용하여 피드백 루프를 단축하고 호스트가 최종 결정을 내리도록 하세요.

파이프라인을 로컬에서 실행하려면 GitTree Pro가 필요합니까?

아니요. 로컬 파이프라인은 GitTree의 무료 요금제의 일부이며 호스팅 계정이 필요하지 않습니다. 호스팅된 CI/CD 실행, 재실행 및 승인은 Pro의 일부입니다.

출처

다른 제품에 대한 주장은 2026년 11월 11일의 공식 페이지에서 확인되었습니다. 가격과 기능은 변경됩니다. 공급업체 페이지가 진실의 원천입니다.