act icon indicating copy to clipboard operation
act copied to clipboard

Allow more control over how reusable Github actions are cloned

Open mtrmarko opened this issue 10 months ago • 5 comments

Act version

0.2.74

Feature description

Running into an issue where I am trying to use docker/scout-action@v1 Github reusable action. On first workflow execution, act tries to clone this action's repository. Well, the repository is over 6GB in size and cloning kept going very slowly even though I am on a 1Gbps fiber connection. Then after about an hour watch du -s stopped incrementing on the repo directory .cache/act/docker-scout-action@v1 while act kept sitting on ☁ git clone 'https://github.com/docker/scout-action' # ref=v1 step. Trying to do CTRL+C did not immediately stop the run. Took several tries. This repo appears to be large because Docker folks are committing a dist folder with all the pre-compiled binaries of Docker Scout CLI. This adds up. It would be nice to have something like a --action-fetch-depth parameter, or similar that would essentially allow act to run something like git clone --depth 1 --branch v1 https://github.com/docker/scout-action.git docker-scout-action@v1. Not sure if this fits act design goals or if the request even makes sense. For now, I am going to resort to installing Docker Scout CLI manually and running it as a bash step instead. This is what part of my workflow looked like when using the reusable action:

      - name: Run Scout Scan
        uses: docker/scout-action@v1
        with:
          command: cves
          image: ${{ env.DOCKER_ORG }}/${{ env.DOCKER_IMAGE }}:latest
          only-fixed: true
          exit-code: true
          sbom: true
          attestation-add: true

mtrmarko avatar Feb 21 '25 06:02 mtrmarko

Thanks for your suggestion.

Shallow fetch seems to be reasonable to do here, my linked PR only applies this for a currently disabled backend of actions caching.

By more control you want to provide custom git cli arguments? we use go-git not git cli this is not straight forward

ChristopherHX avatar Feb 22 '25 14:02 ChristopherHX

@ChristopherHX thank you so much for the quick response and for the referenced PR. How do I best take advantage of the change for my use case?

As for my original suggestion, I only gave an example of a git cli command to better explain what I think could solve the issue. While I am not a golang developer, in your PR, I think you seem to be using go-git's Depth option to accomplish the shallow clone, which should do. As for making this configurable, my suggestion of using --action-fetch-depth was in reference to act argument we could pass from command line (ie act --action-fetch-dept 1 or from .actrc file kind of thing. Please let me know if I can provide any additional information, and thanks again.

mtrmarko avatar Feb 22 '25 23:02 mtrmarko

The code of my PR is behind cli --use-new-action-cache (or if you activate the local repository feature), you currently need the snapshot of that PR to see it.

If you are using docker container actions (running job in container is ok) I still advice not to activate this toggle at the moment.

Since actions itself are send as tar/zip archives if we make GitHub Actions Runner as example.

To be considered

ChristopherHX avatar Feb 22 '25 23:02 ChristopherHX

Got it. Thank you!

mtrmarko avatar Feb 22 '25 23:02 mtrmarko

Has this been fixed? Or how to use this feature. My runner still gets stuck on cloning the scout action...

DaanSelen avatar Aug 08 '25 13:08 DaanSelen