Skip to main content

Como criar e testar o Rust

Este guia mostra como criar, testar e publicar um pacote do Rust.

Executores hospedados em têm um cache de ferramentas com software pré-instalado que inclui dependências do Rust. Para ver a lista completa de programas de software atualizados e as versões pré-instaladas do Rust, confira Sobre executores hospedados no .

Você já deve estar familiarizado com a sintaxe YAML e como é usado com Actions. Para saber mais, confira Sintaxe de fluxo de trabalho para o Actions.

Recomendamos que você tenha um entendimento básico da linguagem Rust. Para ver mais informações, confira Introdução ao Rust.

Para uma introdução rápida, adicione um modelo de fluxo de trabalho ao diretório ./workflows do repositório.

O fornece um modelo de fluxo de trabalho do Rust que deve funcionar na maioria dos projetos básicos de Rust. As seções subsequentes deste guia fornecem exemplos de como você pode personalizar esse modelo de fluxo de trabalho.

  1. Em , acesse a página principal do repositório.

  2. No nome do repositório, clique em Ações.

    Captura de tela das guias do repositório "github/docs". A guia "Ações" está realçada com um contorno laranja.

  3. Se você já tiver um fluxo de trabalho no repositório, clique em Novo fluxo de trabalho.

  4. A página "Escolher um fluxo de trabalho" mostra uma seleção de modelos de fluxo de trabalho recomendados. Pesquise por "Rust".

  5. Filtre a seleção de fluxos de trabalho clicando em Integração contínua.

  6. No fluxo de trabalho "Rust - by Actions", clique em Configurar.

    Captura de tela da página "Escolher um fluxo de trabalho". O botão "Configurar" no fluxo de trabalho "Rust" é realçado com um contorno laranja.

  7. Edite o fluxo de trabalho conforme necessário. Por exemplo, altere a versão do Rust.

  8. Clique em Confirmar alterações.

O arquivo de fluxo de trabalho rust.yml é adicionado ao diretório ./workflows do seu repositório.

Operadores hospedados no incluem uma versão recente da cadeia de ferramentas do Rust. Você pode usar o rustup para relatar a versão instalada em um operador, substituir a versão e instalar diferentes carrinhos de ferramentas. Para obter mais informações, confira The rustup book.

Este exemplo mostra as etapas que você pode usar para configurar o ambiente do executor para usar o build noturno do rust e relatar a versão.

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

Você pode armazenar em cache e restaurar as dependências usando a ação Armazenar em cache. Este exemplo pressupõe que o repositório contém um arquivo Cargo.lock.

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

Se você tiver requisitos personalizados ou precisar de controles mais refinados para o cache, explore outras opções de configuração para a ação cache. Para saber mais, confira Memorizar dependências para acelerar os fluxos de trabalho.

Você pode usar os mesmos comandos usados localmente para criar e testar seu código. Este fluxo de trabalho de exemplo demonstra como usar cargo build e cargo test em um trabalho:

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@v4
      - 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 }}

A palavra-chave release usada neste exemplo corresponde a um perfil de carga. Você pode usar qualquer perfil definido no arquivo Cargo.toml.

Depois de configurar o fluxo de trabalho para criar e testar seu código, use um segredo para fazer logon em crates.io e publicar seu pacote.

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

Se houver erros ao compilar e empacotar o crate, verifique os metadados no manifesto, arquivo Cargo.toml, confira O formato de manifesto. Verifique também o arquivo Cargo.lock; confira Cargo.toml vs Cargo.lock.

Após a conclusão de um fluxo de trabalho, você pode carregar os artefatos resultantes para análise ou para usar em outro fluxo de trabalho. Você pode adicionar essas etapas de exemplo ao fluxo de trabalho para carregar um aplicativo para uso por outro fluxo de trabalho.

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

Para usar o artefato carregado em um trabalho diferente, verifique se os fluxos de trabalho têm as permissões certas para o repositório. Confira Autenticação automática de token. Você pode usar essas etapas de exemplo para baixar o aplicativo criado no fluxo de trabalho anterior e publicá-lo em .

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