name: cache-bootstrap description: Creates a cache with the given extension for lerna packages inputs: extension: description: Extension for cache name partial: description: Boolean flag to describe whether or not to run a partial bootstrap when finding cache default: false runs: using: composite steps: # for always overriding cache, use: pat-s/always-upload-cache@v2.1.5 - uses: actions/cache@v2 id: cache with: path: | node_modules */*/node_modules key: ${{ runner.os }}-yarn-${{inputs.extension}}-v8-${{ hashFiles('**/yarn.lock') }} # We want to only bootstrap and install if no cache is found. # Futhermore, we might want to do a partial, hoisted, bootstrap towards # the base branch if it exists, otherwise we choose develop for this. # yarn install --frozen-lockfile - run: | if [[ "${{steps.cache.outputs.cache-hit}}" != "true" || "${{inputs.partial}}" != "true" ]]; then yarn install --frozen-lockfile yarn bootstrap --concurrency=2 elif [[ "${{inputs.partial}}" = "true" ]]; then [[ ! -z "${GITHUB_BASE_REF}" ]] && ref="${GITHUB_BASE_REF#refs/heads/}" || ref="develop" yarn bootstrap --npm-client=npm --hoist --since "origin/${ref}...HEAD" --concurrency=2 fi shell: bash