123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- name: Setup environment
- inputs:
- cargo-cache-key:
- description: The key to cache cargo dependencies. Skips cargo caching if not provided.
- required: false
- cargo-cache-fallback-key:
- description: The fallback key to use when caching cargo dependencies. Default to not using a fallback key.
- required: false
- cargo-cache-local-key:
- description: The key to cache local cargo dependencies. Skips local cargo caching if not provided.
- required: false
- clippy:
- description: Install Clippy if `true`. Defaults to `false`.
- required: false
- purge:
- description: Purge unused directories if `true`. Defaults to `false`.
- required: false
- rustfmt:
- description: Install Rustfmt if `true`. Defaults to `false`.
- required: false
- solana:
- description: Install Solana if `true`. Defaults to `false`.
- required: false
- runs:
- using: 'composite'
- steps:
- - name: Setup pnpm
- uses: pnpm/action-setup@v3
- - name: Setup Node.js
- uses: actions/setup-node@v4
- with:
- node-version: 20
- cache: 'pnpm'
- - name: Purge unused ubuntu runner directories
- if: ${{ inputs.purge == 'true' }}
- shell: bash
- run: |
- # If there are still disk space issues, try to add more packages from
- # https://github.com/jlumbroso/free-disk-space
- sudo rm -rf /usr/share/dotnet
- sudo rm -rf /usr/share/swift
- sudo rm -rf /usr/share/mysql
- sudo rm -rf /usr/share/az_*
- sudo rm -rf /usr/share/postgresql-common
- sudo rm -rf /opt/ghc
- sudo rm -rf /usr/local/.ghcup
- sudo rm -rf /opt/az
- sudo rm -rf /opt/pipx
- sudo rm -rf /opt/microsoft
- sudo rm -rf /opt/google
- sudo rm -rf /opt/hostedtoolcache
- sudo rm -rf /usr/local/lib/android
- sudo rm -rf /usr/local/lib/heroku
- sudo rm -rf /imagegeneration
- sudo rm -rf "$AGENT_TOOLSDIRECTORY"
- sudo docker image prune --all --force
- sudo docker system prune -af
- # Clear additional caches that might be large
- sudo rm -rf /tmp/*
- sudo rm -rf /var/tmp/*
- # This packages aren't that big, ~500MB total
- #sudo apt-get remove -y '^php.*' --fix-missing
- #sudo apt-get remove -y '^dotnet-.*' --fix-missing
- #sudo apt-get remove -y '^mongodb-.*' --fix-missing
- #sudo apt-get remove -y '^mysql-.*' --fix-missing
- sudo apt-get remove -y '^aspnetcore-.*' azure-cli google-chrome-stable firefox powershell mono-devel libgl1-mesa-dri google-cloud-cli --fix-missing
- sudo apt-get autoremove -y
- sudo apt-get clean
- #sudo swapoff -a
- #sudo rm -f /mnt/swapfile
-
- - name: Install Dependencies
- run: pnpm install --frozen-lockfile
- shell: bash
- - name: Set Environment Variables
- shell: bash
- run: pnpm zx ./scripts/ci/set-env.mjs
- - name: Install Rustfmt
- if: ${{ inputs.rustfmt == 'true' }}
- uses: dtolnay/rust-toolchain@master
- with:
- toolchain: ${{ env.TOOLCHAIN_FORMAT }}
- components: rustfmt
- - name: Install Clippy
- if: ${{ inputs.clippy == 'true' }}
- uses: dtolnay/rust-toolchain@master
- with:
- toolchain: ${{ env.TOOLCHAIN_LINT }}
- components: clippy
- - name: Install Solana
- if: ${{ inputs.solana == 'true' }}
- uses: solana-program/actions/install-solana@v1
- with:
- version: ${{ env.SOLANA_VERSION }}
- cache: true
- - name: Cache Cargo Dependencies
- if: ${{ inputs.cargo-cache-key && !inputs.cargo-cache-fallback-key }}
- uses: actions/cache@v4
- with:
- path: |
- ~/.cargo/bin/
- ~/.cargo/registry/index/
- ~/.cargo/registry/cache/
- ~/.cargo/git/db/
- target/
- key: ${{ runner.os }}-${{ inputs.cargo-cache-key }}-${{ hashFiles('**/Cargo.lock') }}
- restore-keys: ${{ runner.os }}-${{ inputs.cargo-cache-key }}
- - name: Cache Cargo Dependencies With Fallback
- if: ${{ inputs.cargo-cache-key && inputs.cargo-cache-fallback-key }}
- uses: actions/cache@v4
- with:
- path: |
- ~/.cargo/bin/
- ~/.cargo/registry/index/
- ~/.cargo/registry/cache/
- ~/.cargo/git/db/
- target/
- key: ${{ runner.os }}-${{ inputs.cargo-cache-key }}-${{ hashFiles('**/Cargo.lock') }}
- restore-keys: |
- ${{ runner.os }}-${{ inputs.cargo-cache-key }}
- ${{ runner.os }}-${{ inputs.cargo-cache-fallback-key }}-${{ hashFiles('**/Cargo.lock') }}
- ${{ runner.os }}-${{ inputs.cargo-cache-fallback-key }}
- - name: Cache Local Cargo Dependencies
- if: ${{ inputs.cargo-cache-local-key }}
- uses: actions/cache@v4
- with:
- path: |
- .cargo/bin/
- .cargo/registry/index/
- .cargo/registry/cache/
- .cargo/git/db/
- key: ${{ runner.os }}-${{ inputs.cargo-cache-local-key }}-${{ hashFiles('**/Cargo.lock') }}
- restore-keys: ${{ runner.os }}-${{ inputs.cargo-cache-local-key }}
|