Tired of waiting for the 'Set up job' step to finish? This action caches the actions cache for self-hosted runners.
Action runners already have the cache mechanism built-in. This action simply puts the files of the current actions script in that folder to avoid downloading it in the future.
- Give the project a star! ⭐
- Setup your self-hosted runner to use the cache. You must set env variable
ACTIONS_RUNNER_ACTION_ARCHIVE_CACHEfor the runner to a folder that is writeable.
Example, we use AutoscalingRunnerSet:
apiVersion: actions.github.com/v1alpha1 kind: AutoscalingRunnerSet metadata: labels: app.kubernetes.io/component: "autoscaling-runner-set" actions.github.com/scale-set-name: cg-linux actions.github.com/scale-set-namespace: {{ .Release.Namespace }} {{- include "labels" . | nindent 4 }} name: gha-linux namespace: {{ .Release.Namespace }} spec: githubConfigSecret: github-auth githubConfigUrl: 'https://github.com/Catglobe' maxRunners: 6 minRunners: 6 runnerGroup: default runnerScaleSetName: cg-linux template: spec: containers: - name: runner image: catglobe/gha-runner-linux:205 env: - name: NUGET_PACKAGES value: "/opt/hostedtoolcache/nuget" - name: npm_config_cache value: "/opt/hostedtoolcache/npm" - name: RUNNER_TOOL_CACHE value: "/opt/hostedtoolcache/tool" - name: ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE value: "/opt/hostedtoolcache/actions" - name: REPO_CACHE value: "/opt/hostedtoolcache/repo-cache" #- name: STARTUP_DELAY_IN_SECONDS # value: "600" volumeMounts: - mountPath: /actions-runner/_work name: work - mountPath: /opt/hostedtoolcache name: cache initContainers: - name: mkdir image: alpine:3@sha256:a8560b36e8b8210634f77d9f7f9efd7ffa463e380b75e2e74aff4511df3ef88c command: - /bin/sh - -c - | mkdir -p /opt/hostedtoolcache/repo-cache && mkdir -p /opt/hostedtoolcache/tool && mkdir -p /opt/hostedtoolcache/nuget && mkdir -p /opt/hostedtoolcache/npm && mkdir -p /opt/hostedtoolcache/actions && chmod 777 /opt/hostedtoolcache && chmod 777 /opt/hostedtoolcache/repo-cache && chmod 777 /opt/hostedtoolcache/tool && chmod 777 /opt/hostedtoolcache/nuget && chmod 777 /opt/hostedtoolcache/npm && chmod 777 /opt/hostedtoolcache/actions volumeMounts: - mountPath: /opt/hostedtoolcache name: cache - mountPath: /actions-runner/_work name: work nodeSelector: kubernetes.io/os: linux gha-runner: "true" securityContext: fsGroup: 121 fsGroupChangePolicy: "OnRootMismatch" volumes: - name: cache persistentVolumeClaim: claimName: github-cache-local-ssd - emptyDir: {} name: work- If you care about security, fork this repository. That prevents any attack vector from being introduced in the future.
- Add this to all of your actions workflows:
jobs: MyFirstJob: runs-on: cg-linux # or whatever you named your runner ... steps: - name: Save actions cache uses: catglobe/save-actions-cache@v1 OtherJob: runs-on: cg-linux # or whatever you named your runner ... steps: - name: Save actions cache uses: catglobe/save-actions-cache@v1 PublicRunnerJob: #No runs-on: ==> don't add the stepReplace catglobe with your own company name or GitHub username if you made a fork.
If your work folder is not in /actions-runner/_work, you can set actionsFolder to your path (don't forget to append /actions):
- name: Save actions cache uses: catglobe/save-actions-cache@v1 with: actionsFolder: /my_custom_work_folder/actions- Profit!
Set up jobshould take single digit seconds, not minutes.
Run your job in debug mode and check the logs. You should see something like this:
Download action repository 'actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683' (SHA:11bd71901bbe5b1630ceea73d27597364c9af683) ##[debug]Copied action archive '/opt/hostedtoolcache/actions/actions_checkout/11bd71901bbe5b1630ceea73d27597364c9af683.tar.gz' to '/actions-runner/_work/_actions/_temp_42fdacac-a721-4309-8fce-fb5f1ecef8d5/c30cfe66-109b-46ed-b245-25a6f6f36b8a.tar.gz' ##[debug]Unwrap 'actions-checkout-11bd719' to '/actions-runner/_work/_actions/actions/checkout/11bd71901bbe5b1630ceea73d27597364c9af683' ##[debug]Archive '/actions-runner/_work/_actions/_temp_42fdacac-a721-4309-8fce-fb5f1ecef8d5/c30cfe66-109b-46ed-b245-25a6f6f36b8a.tar.gz' has been unzipped into '/actions-runner/_work/_actions/actions/checkout/11bd71901bbe5b1630ceea73d27597364c9af683'. MIT