Введение
В этом руководстве показано, как создавать, тестировать и публиковать пакет Rust.
GitHubразмещенные в среде runners имеют кэш средств с предварительно установленным программным обеспечением, включающее зависимости для Rust. Полный список актуального программного обеспечения и предварительно установленных версий Rust см. в разделе Средства выполнения тестов, размещенные в GitHub.
Необходимые компоненты
Вы уже должны быть знакомы с синтаксисом YAML и его использованием с GitHub Actions. Дополнительные сведения см. в разделе Синтаксис рабочего процесса для GitHub Actions.
Мы рекомендуем иметь базовое представление о языке Rust. Дополнительные сведения см. в статье "Начало работы с Rust".
Использование шаблона рабочего процесса Rust
Чтобы быстро приступить к работе, добавьте шаблон рабочего процесса в .github/workflows каталог репозитория.
GitHub предоставляет шаблон рабочего процесса Rust, который должен работать для большинства основных проектов Rust. В последующих разделах этого руководства приведены примеры настройки этого шаблона рабочего процесса.
-
На GitHubперейдите на главную страницу репозитория. данных repositories.repositories.actions-tab %} 1. Если в вашем репозитории уже используется рабочий процесс, нажмите кнопку Создать рабочий процесс.
-
На странице "Выбор рабочего процесса" показан выбор рекомендуемых шаблонов рабочих процессов. Найдите "Rust".
-
Отфильтруйте выбор рабочих процессов, щелкнув "Непрерывная интеграция".
-
В рабочем процессе "Rust - по GitHub Actions" нажмите кнопку "Настроить".

-
Измените рабочий процесс по мере необходимости. Например, измените версию Rust.
-
Щелкните Зафиксировать изменения.
Файл rust.yml рабочего процесса добавляется в .github/workflows каталог репозитория.
Указание версии Rust
GitHubразмещенных в среде runners включают в себя последнюю версию цепочки инструментов Rust. С помощью rustup можно сообщить о версии, установленной в средстве выполнения, переопределить версию и установить различные цепочки инструментов. Дополнительные сведения см. в книге rustup.
В этом примере показаны шаги, которые можно использовать для настройки среды запуска, чтобы использовать ночную сборку rust и сообщить о версии.
- name: Temporarily modify the rust toolchain version
run: rustup override set nightly
- name: Output rust version for educational purposes
run: rustup --version
- name: Temporarily modify the rust toolchain version
run: rustup override set nightly
- name: Output rust version for educational purposes
run: rustup --version
Кэширование зависимостей
Можно кэшировать и восстанавливать зависимости с помощью действия "Кэш". В этом примере предполагается, что репозиторий содержит Cargo.lock файл.
- name: Cache
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Cache
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
Если у вас есть пользовательские требования или требуются более подробные элементы управления для кэширования, следует изучить другие параметры конфигурации для cache действия. Дополнительные сведения см. в разделе Справочник по кэшированию зависимостей.
Создание и тестирование кода
Вы можете использовать те же команды, которые используются для создания и тестирования кода в локальной среде. В этом примере рабочего процесса показано, как использовать cargo build и cargo test в задании:
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 }}
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 }}
Ключевое слово, используемое release в этом примере, соответствует профилю грузов. Вы можете использовать любой профиль, определенный в Cargo.toml файле.
Публикация пакета или библиотеки в crates.io
После настройки рабочего процесса для создания и тестирования кода можно использовать секрет для входа в систему для crates.io и публикации пакета.
- 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
- 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 файл, см. статью Cargo.toml vs Cargo.lock.
Упаковка данных рабочего процесса в виде артефактов
После завершения рабочего процесса можно отправить полученные артефакты для анализа или использовать в другом рабочем процессе. Эти примеры можно добавить в рабочий процесс для отправки приложения для использования другим рабочим процессом.
- name: Upload release artifact
uses: actions/upload-artifact@v4
with:
name: <my-app>
path: target/${{ matrix.BUILD_TARGET }}/<my-app>
- name: Upload release artifact
uses: actions/upload-artifact@v4
with:
name: <my-app>
path: target/${{ matrix.BUILD_TARGET }}/<my-app>
Чтобы использовать отправленный артефакт в другом задании, убедитесь, что рабочие процессы имеют правильные разрешения для репозитория, см . раздел AUTOTITLE. Эти примеры можно использовать для скачивания приложения, созданного в предыдущем рабочем процессе, и публикации его на GitHub.
- uses: actions/checkout@v5
- name: Download release artifact
uses: actions/download-artifact@v5
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>
- uses: actions/checkout@v5
- name: Download release artifact
uses: actions/download-artifact@v5
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>