"Support" channel for act. Please try to keep all your messages in a thread. We recommend using https://gist.github.com for providing code
docker container
action and it couldn't find java
Hi! I've got an issue with a running a local action. I've got a local Dockerfile
, so in my workflow I've got uses: ./
, which causes act to generate an invalid tag for Docker build
command (i.e. act-:latest
):
docker build -t act-:latest --platform /Users/...
Is there any workaround for this?
Turns out that the ~/.actrc
/ ./.actrc
needs to be one parameter per line.
-P self-hosted=ghcr.io/catthehacker/ubuntu:act-20.04
-P dev=ghcr.io/catthehacker/ubuntu:act-20.04
Maybe I'm confusing the issues I had with the container:
param?
So here's a summary of the issues I've encountered.
container
parameter will override whatever is in the runs-on
java not found
on JVM image.Error: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "java": executable file not found in $PATH: unknown
Is there some way to enable these features on Act?
Is it possible to run node14 in act? I can only see node12 images. When running some yarn cli ive got following error
Publish in Chrome Web Store/publish] ⭐ Run Install chrome web store cli
yarn global v1.22.5
warning package.json: No license field
[1/4] Resolving packages...
[2/4] Fetching packages...
error chrome-webstore-upload-cli@2.0.1: The engine "node" is incompatible with this module. Expected version "^14.13.1 || >=16.0.0". Got "12.20.1"
error Found incompatible module.
info Visit https://yarnpkg.com/en/docs/cli/global for documentation about this command.
[Publish in Chrome Web Store/publish] ❌ Failure - Install chrome web store cli
but I do have
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: 14.x
github/super-linter
(action-linter / shellcheck) seems to hate .github/workflows/checks.yml -- and while I can fix some of the complaints, I can't fix all of them
fmt.Printf
or some relative https://www.irccloud.com/pastebin/S0q05GtQ/act
and so far I've tried a few things. I got to the point where RUNNER_WORKSPACE
is raised as an undefined variable since my action includes it in an entrypoint.sh
, and I was searching for the meaning of that variable and came up somewhat empty on understanding.
-b
for bind mode instead of copy, else I get Permission Denied creating the "bin" dir. I tried changing the script entrypoint.sh to just don't call RUNNER_WORKSPACE anymore, and it didn't seem to have any effect.
unbound variable
error as well. If in my action.yml
file I've got an input defined with a default value (e.g. called min_score
), should there be an environment variable INPUT_MIN_SCORE
that is set to this default value available in entrypoint.sh
file? Because I'm getting unbound variable
errors in this case. I'm not sure if it's how GH actions work or if it's a bug in act itself.
name: Lint Actions workflows
on:
pull_request:
paths:
- .github/workflows/*.yaml
jobs:
lint:
runs-on: ubuntu-latest
container:
image: rhysd/actionlint:latest
args: --entrypoint sh
steps:
- name: Run lint
run: |
echo "::add-matcher::.github/actionlint-matcher.json"
for file in .github/workflows/*.yaml; do
if [ -f "$file" ]; then
actionlint -color $file
fi
done
act pull_request -j lint
I get the error:[Lint Actions workflows/lint] 🐳 docker exec cmd=[bash --noprofile --norc -e -o pipefail /Users/user/git/work/owner/terraform-template-repository/master/workflow/0] user=
[Lint Actions workflows/lint] Exec command '[bash --noprofile --norc -e -o pipefail /Users/user/git/work/owner/terraform-template-repository/master/workflow/0]'
| OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "bash": executable file not found in $PATH: unknown
DEBU[0000] exit with `FAILURE`: 126
I'm using act 0.2.24 and it appears not to copy the repo. Here is a simple workflow that reproduces this:
name: "Test that local file exists"
on:
push:
jobs:
setup_state_calibration:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Make sure requirements.txt exists
run: ls requirements.txt
This gives an error ls: cannot access 'requirements.txt': No such file or directory
. I found a similar thread that suggested using act -P ubuntu-latest=shivammathur/node:latest
but this produced the same result. I can add a with
statement to the check to get the full repo and then this works. However, I'm making local changes so I really want to use my local repo. Any suggestions or workarounds?
Hi!
I can't get azure/login@v1 using service principal (https://github.com/Azure/login#configure-a-service-principal-with-a-secret)
to work locally. When I create the secret in GitHub it works fine:
{ "clientId": "6e...","clientSecret": "TC...", "subscriptionId": "bc...", "tenantId": "a3..." }
When running locally I tested to set the environment variable, both in shell and in file:
SP_CREDS={ "clientId": "6e...","clientSecret": "TC...", "subscriptionId": "bc...", "tenantId": "a3..." }
Then referencing it:
I've tried escaping the quotes, and even trying to put the entire JSON blob directly in the action, but it doesn't work:
[Test/Test] 🐳 docker exec cmd=[node /var/run/act/actions/azure-login@v1/lib/main.js] user=
[Test/Test] Exec command '[node /var/run/act/actions/azure-login@v1/lib/main.js]'
[Test/Test] ❗ ::error::Az CLI Login failed. Please check the credentials. For more information refer https://aka.ms/create-secrets-for-GitHub-workflows
time="2021-11-24T15:35:37+01:00" level=debug msg="exit with FAILURE
: 1"
[Any Test/Test] ❌ Failure - Login to Azure
time="2021-11-24T15:35:37+01:00" level=debug msg="exit with FAILURE
: 1"
Error: exit with FAILURE
: 1
I'm running on Windows as host platform...
Any idea what can be wrong?
act
in https://github.blog/2021-11-04-10-github-actions-resources-basics-ci-cd/#learn-how-to-test-github-actions-you-build but they wrote that it's an action for GitHub Actions :D
Hi!
First of all, thanks for the tool. It is very significant and helpful!
I'm working on trying to create a "local test environment" for Github actions.
These actions invoke a nodejs script that makes some API requests to Github. Is there the possibility to mock this interaction? If yes, how can I reach this goal? Thanks for the help!
Hi! Thanks for this extremely useful tool. I'm currently trying to work out how to locally simulate a deployment step - my Actions file creates several folders of documentation and then uploads them to GitHub Pages. When testing locally I'd like to have these in a local folder so I can look through them, but I can't work out how to get act to do this. In particular, at the end of a successful job, act removes the docker container and volume (see issue here: nektos/act#921).
Does anyone have any idea how I can either 1) get act to keep the docker container alive or 2) mount an external volume into the act job that I can copy files into as part of the run itself?
Hi,
How to simulate the event ${{ github.event.workflow_run.conclusion == 'success' }}
?
I have a workflow like this:
name: build stuff
on:
workflow_run:
workflows: ["construct-build-container"]
types: [completed]
jobs:
on-success:
if: ${{ github.event.workflow_run.conclusion == 'success' }}
runs-on: [self-hosted, kubernetes, docker]
container: ubuntu:20.04
steps:
- run: echo ${{ github.event.workflow_run.conclusion }}
- run: |
echo yo!
I'm running it with act workflow_run -e workflow_scripts/build_completed.json
json:
{
"check_run": {
"conclusion": "success",
"check_suite": {
"conclusion": "success"
}
}
}
But still get an error:ERRO[0000] Unable to interpolate string 'echo ${{ github.event.workflow_run.conclusion }}' - [TypeError: Cannot access member 'conclusion' of undefined]