Skip to main content

Travis CI에서 GitHub Actions 마이그레이션

GitHub Actions 및 Travis CI는 여러 유사점을 공유하므로 비교적 간단하게 마이그레이션할 수 있습니다 GitHub Actions.

참고

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대해 계속 알아보려면 워크플로 작성을 참조하세요.