Categories News

Qué almacenar en caché al compilar Rust usando Gitlab CI o similar


16 de septiembre de 2021 [Programming, Rust, Tech]

Actualización: el almacenamiento en caché de $RUSTUP_HOME y $CARGO_HOME no funcionó para mí; los eliminé.

Al construir su proyecto con Gitlab CI o una herramienta de compilación similar, es posible que pase mucho tiempo viendo cómo su compilación repite los mismos pasos una y otra vez. Esto es especialmente frustrante cuando consiste principalmente en descargar y compilar lo mismo que descargamos y compilamos la última vez.

Para mitigar esto, podemos pedirle a Gitlab CI que almacene en caché las mismas cosas más adelante.

Para un proyecto Rust, lo más importante que se debe almacenar en caché es el destino en el directorio local.

Actualización: no, incorrecto Sin embargo, si instaló la herramienta usando Rustup o Cargo, sería útil que también la almacenara en caché. Afortunadamente, Rust conoce su ubicación mediante variables de entorno y se especifica en la imagen estándar de Rust Docker.

Actualización: si alguien sabe cómo almacenar en caché el resultado de las instalaciones de Rustup y Cargo, hágamelo saber. Supongo que necesito enviar la imagen de Docker a Dockerhub para hacer eso.

Podemos asegurarnos de almacenar en caché tanto como sea posible agregando una sección como esta a .gitlab-ci.yml:

    cache:
        key: shared-cache
        paths:
            - target/

Si agrega esto a todos sus trabajos, compartirán un caché entre ellos y almacenarán en caché el directorio de destino local, así como cualquier herramienta instalada con Rustup o Cargo.

Aquí hay un ejemplo completo de mi proyecto Evolve SVGs:

image: rust:latest

before_script:
    - rustup component add rustfmt
    - rustup target add wasm32-unknown-unknown
    - cargo install trunk wasm-bindgen-cli

pages:
    stage: deploy
    script:
        - echo "Publishing pages to" $CI_PAGES_URL
        - make deploy
        - mv dist public
    artifacts:
      paths:
        - public
    only:
        - main
    cache:
        key: shared-cache
        paths:
            - target/

test:
    stage: test
    script:
        - make test
    cache:
        key: shared-cache
        paths:
            - target/

Agen Togel Terpercaya

Bandar Togel

Sabung Ayam Online

Berita Terkini

Artikel Terbaru

Berita Terbaru

Penerbangan

Berita Politik

Berita Politik

Software

Software Download

Download Aplikasi

Berita Terkini

News

Jasa PBN

Jasa Artikel

News

Breaking News

Berita

More From Author