참고
GitHub Enterprise Server 호스트 실행기는 현재 GitHub에서 지원되지 않습니다.
소개
이 가이드는 Travis CI에서 GitHub Actions로 마이그레이션하는 데 도움이 됩니다. 개념과 구문을 비교하고 유사성을 설명하며 일반적인 작업에 대한 다양한 접근 방식을 보여 줍니다.
시작하기 전에
마이그레이션을 GitHub Actions시작하기 전에 작동 방식을 숙지하는 것이 유용합니다.
- 작업을 보여 주는 빠른 예제는 GitHub Actions을 참조하세요.
- 필수 GitHub Actions 개념을 알아보려면 GitHub Actions에 대한 이해을 참조하세요.
작업 실행 비교
CI 태스크가 실행되는 GitHub Actions 시기를 제어하기 위해 _워크플로_는 기본적으로 병렬로 실행되는 작업을 사용합니다. 각 작업에는 사용자가 정의한 순서대로 실행되는 _단계_가 포함되어 있습니다. 작업에 대한 설정 및 정리 작업을 실행해야 하는 경우 각 작업의 단계를 정의하여 해당 작업을 수행할 수 있습니다.
주요 유사점
GitHub Actions 및 Travis CI는 특정 유사성을 공유하며 이러한 유사점을 미리 이해하면 마이그레이션 프로세스를 원활하게 진행하는 데 도움이 될 수 있습니다.
YAML 구문 사용
Travis CI와 GitHub Actions 둘 다 YAML을 사용하여 작업 및 워크플로를 만들고 이러한 파일은 코드의 리포지토리에 저장됩니다. YAML을 사용하는 방법에 GitHub Actions 대한 자세한 내용은 예시 워크로드 만들기을 참조하세요.
사용자 지정 변수
트래비스 CI를 사용하면 변수를 설정하고 스테이지 간에 공유할 수 있습니다. 마찬가지로 GitHub Actions 워크플로에 대한 변수를 정의할 수 있습니다. 자세한 내용은 변수에 정보 저장을(를) 참조하세요.
기본 변수
Travis CI와 GitHub Actions 둘 다 YAML 파일에서 사용할 수 있는 기본 환경 변수를 포함합니다. 의 경우 GitHub Actions변수 참조에 나열된 항목을 볼 수 있습니다.
병렬 작업 처리
Travis CI는 stages를 사용하여 작업을 병렬로 실행할 수 있습니다. 마찬가지로 GitHub Actions 병렬로 실행됩니다 jobs . 자세한 내용은 GitHub Actions에 대한 워크플로 구문을(를) 참조하세요.
상태 배지
Travis CI와 GitHub Actions 둘 다 상태 배지를 지원하므로 빌드가 통과하거나 실패하는지 여부를 나타낼 수 있습니다. 자세한 내용은 워크플로 상태 배지 추가을(를) 참조하세요.
매트릭스 사용
Travis CI와 GitHub Actions 둘 다 매트릭스를 지원하므로 운영 체제와 소프트웨어 패키지의 조합을 사용하여 테스트를 수행할 수 있습니다. 자세한 내용은 워크플로에서 작업 변형 실행을(를) 참조하세요.
아래는 각 시스템의 구문을 비교한 예입니다.
매트릭스에 대한 트래비스 CI 구문
matrix:
include:
- rvm: '2.5'
- rvm: '2.6.3'
GitHub Actions 행렬 구문
jobs:
build:
strategy:
matrix:
ruby: ['2.5', '2.6.3']
특정 브랜치 지정
Travis CI와 GitHub Actions는 모두 CI가 특정 브랜치를 대상으로 하도록 설정할 수 있습니다. 자세한 내용은 GitHub Actions에 대한 워크플로 구문을(를) 참조하세요.
다음은 각 시스템에 대한 구문의 예입니다.
특정 지점을 타겟팅하기 위한 트래비스 CI 구문
branches:
only:
- main
- 'mona/octocat'
GitHub Actions 특정 브랜치를 지정하는 구문
on:
push:
branches:
- main
- 'mona/octocat'
하위 모듈 체크 아웃
Travis CI와 GitHub Actions 둘 다 리포지토리 클론에 하위 모듈이 포함되는지 여부를 제어할 수 있습니다.
다음은 각 시스템에 대한 구문의 예입니다.
서브모듈을 체크 아웃하기 위한 Travis CI 구문
git:
submodules: false
GitHub Actions 하위 모듈을 체크 아웃하기 위한 구문
- uses: actions/checkout@v6
with:
submodules: false
매트릭스에서 환경 변수 사용
Travis CI와 GitHub Actions 둘 다 테스트 매트릭스에 사용자 지정 변수를 추가할 수 있으므로 이후 단계에서 변수를 참조할 수 있습니다.
에서 GitHub Actions키를 사용하여 행렬에 include 사용자 지정 환경 변수를 추가할 수 있습니다. 이 예제에서 node-version에 대한 행렬 항목은 각각 site 환경 변수 및 datacenter 환경 변수에 서로 다른 값을 사용하도록 구성됩니다. 그런 다음, Echo site details이 단계는 env: ${{ matrix.env }}를 사용하여 사용자 지정 변수를 참조합니다.
name: Node.js CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- node-version: '14.x'
site: "prod"
datacenter: "site-a"
- node-version: '16.x'
site: "dev"
datacenter: "site-b"
steps:
- name: Echo site details
env:
SITE: ${{ matrix.site }}
DATACENTER: ${{ matrix.datacenter }}
run: echo $SITE $DATACENTER
의 주요 기능 GitHub Actions
Travis CI에서 마이그레이션할 때 다음 주요 기능을 고려합니다.GitHub Actions
비밀 저장
GitHub Actions 를 사용하면 비밀을 저장하고 작업에서 참조할 수 있습니다. GitHub Actions 조직은 조직 비밀에 액세스할 수 있는 리포지토리를 제한할 수 있습니다. 배포 보호 규칙은 워크플로가 환경 비밀에 액세스하기 위해 수동 승인을 요구할 수 있습니다. 자세한 내용은 비밀을(를) 참조하세요.
작업과 워크플로 간에 파일 공유
GitHub Actions 에는 아티팩트 스토리지에 대한 통합 지원이 포함되어 있으므로 워크플로의 작업 간에 파일을 공유할 수 있습니다. 또한 결과 파일을 저장하고 다른 워크플로와 공유할 수도 있습니다. 자세한 내용은 GitHub Actions에 대한 이해을(를) 참조하세요.
자신의 런너 호스팅
작업에 특정 하드웨어 또는 소프트웨어가 필요한 경우 GitHub Actions를 사용하면 자체 실행기를 호스팅할 수 있으며, 작업 처리를 위해 해당 실행기로 작업을 보낼 수 있습니다. GitHub Actions 또한 정책을 사용하여 이러한 실행기 액세스 방법을 제어하여 조직 또는 리포지토리 수준에서 액세스 권한을 부여할 수 있습니다. 자세한 내용은 자체 호스트형 실행기 관리을(를) 참조하세요.
GitHub Actions에서 다양한 언어 사용
다른 언어 GitHub Actions로 작업할 때 작업에서 언어 종속성을 설정하는 단계를 만들 수 있습니다. 특정 언어로 작업하는 방법에 대한 자세한 내용은 코드 빌드 및 테스트을(를) 참조하세요.
스크립트 실행
GitHub Actions는 run 단계를 사용하여 스크립트나 셸 명령을 실행할 수 있습니다. 특정 셸을 사용하려면 스크립트에 경로를 제공할 때 shell 유형을 지정할 수 있습니다. 자세한 내용은 GitHub Actions에 대한 워크플로 구문을(를) 참조하세요.
예시:
steps:
- name: Run build script
run: ./.github/scripts/build.sh
shell: bash
GitHub Actions에서의 오류 처리
GitHub Actions로 마이그레이션할 때 알아두어야 할 수도 있는 오류 처리 방식에는 여러 가지가 있습니다.
스크립트 오류 처리
GitHub Actions 단계 중 하나가 오류 코드를 반환하는 경우 작업을 즉시 중지합니다. 자세한 내용은 GitHub Actions에 대한 워크플로 구문을(를) 참조하세요.
작업 오류 처리
GitHub Actions 는 조건부를 사용하여 if 특정 상황에서 작업 또는 단계를 실행합니다. 예를 들어 다른 단계에서 failure()가 발생한 경우 단계를 실행할 수 있습니다. 자세한 내용은 GitHub Actions에 대한 워크플로 구문을(를) 참조하세요. 또한 작업 실패 시 continue-on-error를 사용하여 워크플로 실행이 중지되지 않도록 할 수 있습니다.
조건문 및 식 구문 마이그레이션
조건식에서 작업을 실행하려면 Travis CI와 GitHub Actions 비슷한 if 조건 구문을 공유합니다.
GitHub Actions 조건을 충족하지 않는 한 조건부를 사용하여 if 작업 또는 단계가 실행되지 않도록 할 수 있습니다. 자세한 내용은 워크플로 및 작업에서 식 평가을(를) 참조하세요.
이 예제에서는 if 조건부가 단계 실행 여부를 제어하는 방법을 보여 줍니다.
jobs:
conditional:
runs-on: ubuntu-latest
steps:
- run: echo "This step runs with str equals 'ABC' and num equals 123"
if: env.str == 'ABC' && env.num == 123
단계를 단계적 단계로 마이그레이션
Travis CI는 _단계_를 사용해 _스텝_을 실행하는 반면, GitHub Actions에는 _액션_을 실행하는 _스텝_이 있습니다. 미리 빌드된 작업을 찾거나 사용자 고유의 GitHub Marketplace작업을 만들 수 있습니다. 자세한 내용은 자동화 재사용을(를) 참조하세요.
다음은 각 시스템에 대한 구문의 예입니다.
Travis CI의 과정 및 단계 구문
language: python
python:
- "3.7"
script:
- python script.py
GitHub Actions 단계 및 작업에 대한 구문
jobs:
run_python:
runs-on: ubuntu-latest
steps:
- uses: actions/setup-python@v5
with:
python-version: '3.7'
architecture: 'x64'
- run: python script.py
종속성 캐시 처리
Travis CI를 사용하여 GitHub Actions 나중에 다시 사용할 수 있도록 종속성을 수동으로 캐시할 수 있습니다.
이 예는 각 시스템에 대한 캐시 구문을 보여줍니다.
캐싱을 위한 Travis CI 구문
language: node_js
cache: npm
캐싱에 대한 GitHub Actions 구문
- name: Cache node modules
uses: actions/cache@v4
with:
path: ~/.npm
key: v1-npm-deps-${{ hashFiles('**/package-lock.json') }}
restore-keys: v1-npm-deps-
일반 작업의 예
이 섹션에서는 Travis CI가 일반적인 작업을 수행하는 방법과 GitHub Actions 방법을 비교합니다.
환경 변수 구성
작업에서 GitHub Actions 사용자 지정 환경 변수를 만들 수 있습니다.
환경 변수에 대한 트래비스 CI 구문
env:
- MAVEN_PATH="/usr/local/maven"
GitHub Actions 환경 변수가 있는 워크플로
jobs:
maven-build:
env:
MAVEN_PATH: '/usr/local/maven'
Node.js를 사용하여 빌드하기
Node.js로 빌드하기 위한 트래비스 CI
install:
- npm install
script:
- npm run build
- npm test
GitHub Actions Node.js 사용하여 빌드하는 워크플로
name: Node.js CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '16.x'
- run: npm install
- run: npm run build
- run: npm test
다음 단계
주요 기능에 GitHub Actions대해 계속 알아보려면 워크플로 작성을 참조하세요.