Skip to main content

Enterprise Server 3.22 은(는) 현재 릴리스 후보로 제공됩니다.

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

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

참고

GitHub Enterprise Server 호스트 실행기는 현재 GitHub에서 지원되지 않습니다.

소개

이 가이드는 Travis CI에서 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@v7
        with:
          node-version: '16.x'
      - run: npm install
      - run: npm run build
      - run: npm test

다음 단계

주요 기능에 GitHub Actions대해 계속 알아보려면 워크플로 작성을 참조하세요.