Skip to content

Tool Cache

Actions
Implementation of Tool Cache in composite GitHub Actions
v1
Latest
Star (12)

Tool Cache in Composite Action

Implementation of actions/tool-cache toolkit in composite GitHub Actions.

A Tool Cache for composite-based GitHub Actions.

This action supports Ubuntu, Windows, and macOS.

Rationale

The purpose of this action is to provide composite-based actions an easy way to install programs on GitHub Actions.

JavaScript-based actions already have actions/tool-cache toolkit to facilitate in installing programs in GitHub Actions.

With this tool cache action, you don't need to worry writing a code in installing the program and adding it to PATH, you just download the program and extract it to a folder inside runner temp, just like actions/tool-cache toolkit.

Usage

  1. Create a folder with the name of the program you want to install inside ${{ runner.temp }}.
  2. Extract all of the files required by the program to that folder inside ${{ runner.temp }} you have created.
  3. Run this action with the name of the folder inside ${{ runner.temp }} you used to extract all the files needed for the program.

Example workflow

steps:
  - name: Download Hello World binary (Unix-like)
    if: runner.os == 'Linux' || runner.os == 'macOS'
    working-directory: ${{ runner.temp }}
    run: |
      if [ $RUNNER_OS = macOS ]; then os=macos; else os=linux; fi
      mkdir hello-world
      wget -O hello-world/hello $GITHUB_SERVER_URL/AnimMouse/Hello-World-Binaries/raw/main/hello-$os
      chmod +x hello-world/hello
      
  - name: Download Hello World binary (Windows)
    if: runner.os == 'Windows'
    working-directory: ${{ runner.temp }}
    run: |
      New-Item hello-world -ItemType Directory
      Invoke-WebRequest $env:GITHUB_SERVER_URL/AnimMouse/Hello-World-Binaries/raw/main/hh2.golden.exe -OutFile hello-world\hello.exe
      
  - name: Install the Hello World binary using tool-cache
    uses: AnimMouse/tool-cache@v1
    with:
      folder_name: hello-world

Example workflow with cache

steps:
  - name: Restore Hello World cache
    id: cache
    uses: actions/cache/restore@v4
    with:
      path: ${{ runner.tool_cache }}/hello-world
      key: hello-world-${{ runner.os }}
      
  - name: Download Hello World binary (Unix-like)
    if: (runner.os == 'Linux' || runner.os == 'macOS') && ! steps.cache.outputs.cache-hit
    working-directory: ${{ runner.temp }}
    run: |
      if [ $RUNNER_OS = macOS ]; then os=macos; else os=linux; fi
      mkdir hello-world
      wget -O hello-world/hello $GITHUB_SERVER_URL/AnimMouse/Hello-World-Binaries/raw/main/hello-$os
      chmod +x hello-world/hello
      
  - name: Download Hello World binary (Windows)
    if: runner.os == 'Windows' && ! steps.cache.outputs.cache-hit
    working-directory: ${{ runner.temp }}
    run: |
      New-Item hello-world -ItemType Directory
      Invoke-WebRequest $env:GITHUB_SERVER_URL/AnimMouse/Hello-World-Binaries/raw/main/hh2.golden.exe -OutFile hello-world\hello.exe
      
  - name: Install the Hello World binary using tool-cache
    uses: AnimMouse/tool-cache@v1
    with:
      folder_name: hello-world
      cache_hit: ${{ steps.cache.outputs.cache-hit }}
      
  - name: Save Hello World cache
    if: '! steps.cache.outputs.cache-hit'
    uses: actions/cache/save@v4
    with:
      path: ${{ runner.tool_cache }}/hello-world
      key: hello-world-${{ runner.os }}

You can check the .github/workflows/test.yaml file inside this repository to see how it works by installing a Hello World program.
You can also check actions that uses this tool cache.

Used by

  1. AnimMouse/setup-rclone
  2. AnimMouse/setup-cloudflared
  3. AnimMouse/setup-yt-dlp
  4. AnimMouse/setup-restic
  5. AnimMouse/setup-youtubeuploader
  6. AnimMouse/setup-appimage
  7. AnimMouse/setup-ffmpeg
  8. AnimMouse/setup-age
  9. AnimMouse/setup-p7zip-fork
  10. AnimMouse/setup-mermaid-cli
  11. AnimMouse/setup-appimage

Similar actions

  1. supplypike/setup-bin
  2. pbrisbin/setup-tool-action
  3. jcwillox/install-tool-action
  4. prantlf/install-release-action

Tool Cache is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.

About

Implementation of Tool Cache in composite GitHub Actions
v1
Latest

Tool Cache is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.