Skip to main content

이 버전의 GitHub Enterprise Server는 다음 날짜에 중단됩니다. 2026-03-17. 중요한 보안 문제에 대해서도 패치 릴리스가 이루어지지 않습니다. 더 뛰어난 성능, 향상된 보안, 새로운 기능을 위해 최신 버전의 GitHub Enterprise Server로 업그레이드합니다. 업그레이드에 대한 도움말은 GitHub Enterprise 지원에 문의하세요.

Rust 빌드 및 테스트

CI(연속 통합) 워크플로를 만들어 Rust 프로젝트를 빌드하고 테스트하는 방법을 알아보세요.

참고 항목

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

소개

이 가이드에서는 Rust 패키지를 빌드하고 테스트하고 게시하는 방법을 보여 줍니다.

GitHub 호스팅 실행기에는 사전 설치된 소프트웨어가 포함된 도구 캐시가 있으며, 여기에는 Rust의 종속성이 포함되어 있습니다. 최신 소프트웨어 및 사전 설치된 Rust 버전의 전체 목록은 AUTOTITLE을(를) 참조하세요.

필수 조건

YAML 구문과 이를 GitHub Actions와 함께 사용하는 방법에 대해 잘 알고 있어야 합니다. 자세한 내용은 AUTOTITLE을(를) 참조하세요.

Rust 언어를 기본적으로 이해하는 것이 좋습니다. 자세한 내용은 Rust 시작하기를 참조하세요.

Rust 워크플로 템플릿 사용

빠르게 시작하려면 워크플로 템플릿을 리포지토리의 .github/workflows 디렉터리에 추가합니다.

GitHub은 대부분의 Rust 프로젝트에서 작동하는 Rust 워크플로 템플릿을 제공합니다. 이 가이드의 후속 섹션에서는 이 워크플로 템플릿을 사용자 지정하는 방법에 대한 예시를 제공합니다.

  1. GitHub에서 리포지토리의 기본 페이지로 이동합니다.

  2. 리포지토리 이름에서 작업을 클릭합니다.

    "github/docs" 리포지토리의 탭 스크린샷. "작업" 탭은 주황색 윤곽선으로 강조 표시됩니다.

  3. 리포지토리에 워크플로가 이미 있는 경우 새 워크플로를 클릭합니다.

  4. "워크플로 선택" 페이지에는 권장되는 워크플로 템플릿의 선택 항목이 표시됩니다. “Rust”를 검색합니다.

  5. 지속적 통합을 클릭하여 워크플로 선택을 필터링합니다.

  6. GitHub Actions의 ‘Rust - by’ 워크플로 설정을 클릭하세요.

    "워크플로 선택" 페이지의 스크린샷. “Rust” 워크플로의 “구성” 버튼은 주황색 윤곽선으로 강조 표시되어 있습니다.

GitHub Actions에서 “Go” 워크플로 템플릿을 사용할 수 없는 경우, 다음 워크플로 코드를 리포지토리의 해당 디렉터리에 새 파일로 생성하여 붙여넣으세요.

YAML
name: Rust

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

env:
  CARGO_TERM_COLOR: never

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v5
    - name: Build
      run: cargo build --verbose
    - name: Run tests
      run: cargo test --verbose
  1. 필요에 따라 워크플로를 편집합니다. 예를 들어 Rust 버전을 변경합니다.
  2. 변경 내용 커밋을 클릭합니다.

Rust 버전 지정

GitHub-호스팅 러너에는 최신 버전의 Rust 도구 체인이 포함되어 있습니다. rustup을 사용하여 실행기에서 설치된 버전을 보고하고 버전을 재정의하고 다른 도구 체인을 설치할 수 있습니다. 자세한 내용은 rustup 책을 참조하세요.

이 예제에서는 실행기 환경을 설정하여 rust의 야간 빌드를 사용하고 버전을 보고하기 위해 사용할 수 있는 단계를 보여 줍니다.

YAML
      - name: Temporarily modify the rust toolchain version
        run: rustup override set nightly
      - name: Output rust version for educational purposes
        run: rustup --version

종속성 캐시 처리

캐시 작업을 사용하여 종속성을 캐시하고 복원할 수 있습니다. 이 예제에서는 리포지토리에 파일이 포함되어 있다고 가정합니다.

YAML
      - name: Cache
        uses: actions/cache@v4
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            target
          key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}

사용자 지정 요구 사항이 있거나 캐싱에 대한 더 세부적인 제어가 필요한 경우 작업에 대한 다른 구성 옵션을 탐색해야 합니다. 자세한 내용은 AUTOTITLE을(를) 참조하세요.

코드 빌드 및 테스트

코드를 빌드하고 테스트하기 위해 로컬에서 사용하는 것과 동일한 명령을 사용할 수 있습니다. 이 예시 워크플로에서는 작업에서 및 를 사용하는 방법을 보여 줍니다.

YAML
jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        BUILD_TARGET: [release] # refers to a cargo profile
    outputs:
      release_built: ${{ steps.set-output.outputs.release_built }}
    steps:
      - uses: actions/checkout@v5
      - name: Build binaries in "${{ matrix.BUILD_TARGET }}" mode
        run: cargo build --profile ${{ matrix.BUILD_TARGET }}
      - name: Run tests in "${{ matrix.BUILD_TARGET }}" mode
        run: cargo test --profile ${{ matrix.BUILD_TARGET }}

이 예제에서 사용되는 키워드는 화물 프로필에 해당합니다. 파일에서 정의한 모든 프로필을 사용할 수 있습니다.

패키지 또는 라이브러리를 crates.io에 게시

워크플로를 설정하여 코드를 빌드하고 테스트한 후에는 비밀을 사용하여 로그인하여 패키지를 crates.io에 게시할 수 있습니다.

YAML
      - name: Login into crates.io
        run: cargo login ${{ secrets.CRATES_IO }}
      - name: Build binaries in "release" mode
        run: cargo build -r
      - name: "Package for crates.io"
        run: cargo package # publishes a package as a tarball
      - name: "Publish to crates.io"
        run: cargo publish # publishes your crate as a library that can be added as a dependency

크레이트를 빌드하고 패키징하는 데 오류가 있는 경우 매니페스트, 파일에서 메타데이터를 확인합니다. 매니페스트 형식을 참조하세요. 또한 파일을 확인해야 합니다. Cargo.toml 및 Cargo.lock 을 참조하세요.

워크플로 데이터를 아티팩트로 패키지

워크플로가 완료되면 분석을 위해 결과 아티팩트를 업로드하거나 다른 워크플로에서 사용할 수 있습니다. 워크플로에 이러한 예제 단계를 추가하여 다른 워크플로에서 사용할 애플리케이션을 업로드할 수 있습니다.

YAML
      - name: Upload release artifact
        uses: actions/upload-artifact@v3
        with:
          name: <my-app>
          path: target/${{ matrix.BUILD_TARGET }}/<my-app>

업로드된 아티팩트를 다른 작업에서 사용하려면 워크플로에 리포지토리에 대한 올바른 권한이 있는지 확인합니다. AUTOTITLE을(를) 참조하세요. 다음 예제 단계를 사용하여 이전 워크플로에서 만든 앱을 다운로드하고 GitHub에 게시할 수 있습니다.

YAML
      - uses: actions/checkout@v5
      - name: Download release artifact
        uses: actions/download-artifact@v3
        with:
          name: <my-app>
          path: ./<my-app>
      - name: Publish built binary to GitHub releases
      - run: |
          gh release create --generate-notes ./<my-app>/<my-project>#<my-app>