tags: act github

Ensure docker is available:

[root@rocky ~]# systemctl status docker.service containerd.service
[[green:●]] docker.service - Docker Application Container Engine
     Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: disabled)
     Active: [[green:active (running)]] since Mon 2026-08-10 15:46:59 UTC; 6min ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 221885 (dockerd)
      Tasks: 8
     Memory: 107.6M (peak: 121.7M)
        CPU: 644ms
     CGroup: /system.slice/docker.service
             └─221885 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Aug 10 15:46:58 rocky dockerd[221885]: time="2026-08-10T15:46:58.632816723Z" level=info msg="Restoring contain>
Aug 10 15:46:58 rocky dockerd[221885]: time="2026-08-10T15:46:58.703629479Z" level=info msg="Deleting nftables>
Aug 10 15:46:58 rocky dockerd[221885]: time="2026-08-10T15:46:58.709459703Z" level=info msg="Deleting nftables>
Aug 10 15:46:59 rocky dockerd[221885]: time="2026-08-10T15:46:59.196677528Z" level=info msg="Loading container>
Aug 10 15:46:59 rocky dockerd[221885]: time="2026-08-10T15:46:59.233034078Z" level=info msg="Docker daemon" co>
Aug 10 15:46:59 rocky dockerd[221885]: time="2026-08-10T15:46:59.233790527Z" level=info msg="Initializing buil>
Aug 10 15:46:59 rocky dockerd[221885]: time="2026-08-10T15:46:59.523616824Z" level=info msg="Completed buildki>
Aug 10 15:46:59 rocky dockerd[221885]: time="2026-08-10T15:46:59.534309168Z" level=info msg="Daemon has comple>
Aug 10 15:46:59 rocky dockerd[221885]: time="2026-08-10T15:46:59.534691224Z" level=info msg="API listen on /ru>
Aug 10 15:46:59 rocky systemd[1]: Started Docker Application Container Engine.
[[green:●]] containerd.service - containerd container runtime
     Loaded: loaded (/usr/lib/systemd/system/containerd.service; disabled; preset: disabled)
     Active: [[green:active (running)]] since Mon 2026-08-10 15:46:58 UTC; 6min ago
       Docs: https://containerd.io
    Process: 221874 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS)
   Main PID: 221875 (containerd)
      Tasks: 7
     Memory: 43.1M (peak: 54.8M)
        CPU: 385ms
     CGroup: /system.slice/containerd.service
             └─221875 /usr/bin/containerd
Aug 10 15:46:58 rocky containerd[221875]: time="2026-08-10T15:46:58.338957791Z" level=info msg="loading plugin>
Aug 10 15:46:58 rocky containerd[221875]: time="2026-08-10T15:46:58.339261424Z" level=info msg="skip loading p>
Aug 10 15:46:58 rocky containerd[221875]: time="2026-08-10T15:46:58.339281431Z" level=info msg="loading plugin>
Aug 10 15:46:58 rocky containerd[221875]: time="2026-08-10T15:46:58.339380258Z" level=info msg="loading plugin>
Aug 10 15:46:58 rocky containerd[221875]: time="2026-08-10T15:46:58.339396066Z" level=info msg="skip loading p>
Aug 10 15:46:58 rocky containerd[221875]: time="2026-08-10T15:46:58.342053162Z" level=info msg=serving... addr>
Aug 10 15:46:58 rocky containerd[221875]: time="2026-08-10T15:46:58.342223678Z" level=info msg="starting GRPC >
Aug 10 15:46:58 rocky containerd[221875]: time="2026-08-10T15:46:58.342334702Z" level=info msg=serving... addr>
Aug 10 15:46:58 rocky systemd[1]: Started containerd container runtime.
Aug 10 15:46:58 rocky containerd[221875]: time="2026-08-10T15:46:58.347490292Z" level=info msg="containerd suc>

Install act:

[root@rocky ~]# cd /tmp
[root@rocky tmp]# curl --location --remote-name https://github.com/nektos/act/releases/latest/download/act_Linux_x86_64.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 8007k  100 8007k    0     0  23.1M      0 --:--:-- --:--:-- --:--:-- 23.1M

[root@rocky tmp]# ls -l act_Linux_x86_64.tar.gz 
-rw-r--r--. 1 root root 8200078 Aug 10 15:57 act_Linux_x86_64.tar.gz

[root@rocky tmp]# tar zxvf act_Linux_x86_64.tar.gz 
LICENSE
README.md
act                                                                                                          ---this

[root@rocky tmp]# ls -l act
-rwxr-xr-x. 1 kmaau kmaau 21115064 Jun  1 03:19 act
[root@rocky tmp]# file act
act: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=db116eca44300636802ec580c6ea7a83f8a3f8e1, stripped

[root@rocky tmp]# mv act /usr/local/bin
[root@rocky tmp]# chown root:root /usr/local/bin/act 
[root@rocky tmp]# ls -l /usr/local/bin/act 
-rwxr-xr-x. 1 root root 21115064 Jun  1 03:19 /usr/local/bin/act

[root@rocky tmp]# which act
/usr/local/bin/act
[root@rocky tmp]# act --version
act version 0.2.89

Working with act:

[root@rocky tmp]# su - kmaau
Last login: Mon Aug 10 05:26:23 UTC 2026 on pts/0

[kmaau@rocky ~]$ whoami
kmaau

[kmaau@rocky ~]$ mkdir ${HOME}/act-demo
[kmaau@rocky ~]$ ls -ld ${HOME}/act-demo
drwxr-xr-x. 2 kmaau kmaau 6 Aug 10 16:04 /home/kmaau/act-demo
[kmaau@rocky ~]$ cd ${HOME}/act-demo

[kmaau@rocky act-demo]$ ls -la
drwxr-xr-x. 2 kmaau kmaau    6 Aug 10 16:04 .
drwx------. 4 kmaau kmaau 4096 Aug 10 16:04 ..

[kmaau@rocky act-demo]$ git init
Initialized empty Git repository in /home/kmaau/act-demo/.git/

[kmaau@rocky act-demo]$ ls -la
drwxr-xr-x. 3 kmaau kmaau   18 Aug 10 16:05 .
drwx------. 4 kmaau kmaau 4096 Aug 10 16:04 ..
drwxr-xr-x. 6 kmaau kmaau  103 Aug 10 16:05 .git

[kmaau@rocky act-demo]$ mkdir -p .github/workflows

#
# create workflow:
#
[kmaau@rocky act-demo]$ vi .github/workflows/ci.yml
::
::

[kmaau@rocky act-demo]$ cat .github/workflows/ci.yml
[[blue:name: Demo CI]]
[[blue:]]
[[blue:on:]]
[[blue:  push:]]
[[blue:]]
[[blue:jobs:]]
[[blue:  hello:]]
[[blue:    runs-on: ubuntu-latest]]
[[blue:]]
[[blue:    steps:]]
[[blue:      - name: Checkout]]
[[blue:        uses: actions/checkout@v4]]
[[blue:]]
[[blue:      - name: Show Environment]]
[[blue:        run: |]]
[[blue:          echo "Hello from GitHub Actions"]]
[[blue:          uname -a]]
[[blue:          pwd]]

[kmaau@rocky workflows]$ act --list
[[blue:INFO[0000]]] Using docker host 'unix:///var/run/docker.sock', and daemon socket 'unix:///var/run/docker.sock' 
[[red:Error: stat /home/kmaau/act-demo/.github/workflows/.github/workflows: no such file or directory]]

[kmaau@rocky workflows]$ cd ${HOME}/act-demo
[kmaau@rocky act-demo]$ act --list
[[blue:INFO]][0000] Using docker host 'unix:///var/run/docker.sock', and daemon socket 'unix:///var/run/docker.sock' 
Stage  Job ID  Job name  Workflow name  Workflow file  Events
0      hello   hello     Demo CI        ci.yml         push  

#
# run the workflow by simulate a GitHub push:
#
[kmaau@rocky act-demo]$ act push
[[blue:INFO]][0000] Using docker host 'unix:///var/run/docker.sock', and daemon socket 'unix:///var/run/docker.sock' 
[[green:?]] Please choose the default image you want to use with act:
  - Large size image: ca. 17GB download + 53.1GB storage, you will need 75GB of free disk space,
    snapshots of GitHub Hosted Runners without snap and pulled docker images
  - Medium size image: ~500MB, includes only necessary tools to bootstrap actions and aims to be compatible with most actions
  - blue:Micro size image: <200MB, contains only NodeJS required to bootstrap actions, doesn't work with all actions
Default image and other options can be changed manually in /home/kmaau/.config/act/actrc 
(please refer to https://nektosact.com/usage/index.html?highlight=configur#configuration-file for additional information about file structure) [[blue:Micro]]
[[yellow:WARN]][0033] unable to get git ref: reference not found   
[[yellow:WARN]][0033] unable to get git revision: reference not found 
[[yellow:[Demo CI/hello]]] ⭐ Run Set up job
[[yellow:[Demo CI/hello]]] 🚀  Start image=node:16-buster-slim
[[yellow:[Demo CI/hello]]]   🐳  docker pull image=node:16-buster-slim platform= username= forcePull=true
[[yellow:[Demo CI/hello]]]   🐳  docker create image=node:16-buster-slim platform= entrypoint=["tail" "-f" "/dev/null"] cmd=[] network="host"
[[yellow:[Demo CI/hello]]]   🐳  docker run image=node:16-buster-slim platform= entrypoint=["tail" "-f" "/dev/null"] cmd=[] network="host"
[[yellow:[Demo CI/hello]]]   🐳  docker exec cmd=[node --no-warnings -e console.log(process.execPath)] user= workdir=
[[yellow:[Demo CI/hello]]]   ✅  Success - Set up job
[[yellow:[Demo CI/hello]]] unable to get git ref: reference not found
[[yellow:[Demo CI/hello]]] unable to get git revision: reference not found
[[yellow:[Demo CI/hello]]] unable to get git ref: reference not found
[[yellow:[Demo CI/hello]]] unable to get git revision: reference not found
[[yellow:[Demo CI/hello]]] unable to get git ref: reference not found
[[yellow:[Demo CI/hello]]] unable to get git revision: reference not found
[[yellow:[Demo CI/hello]]] unable to get git ref: reference not found
[[yellow:[Demo CI/hello]]] unable to get git revision: reference not found
[[yellow:[Demo CI/hello]]] unable to get git ref: reference not found
[[yellow:[Demo CI/hello]]] unable to get git revision: reference not found
[[yellow:[Demo CI/hello]]] unable to get git ref: reference not found
[[yellow:[Demo CI/hello]]] unable to get git revision: reference not found
[[yellow:[Demo CI/hello]]] unable to get git ref: reference not found
[[yellow:[Demo CI/hello]]] unable to get git revision: reference not found
[[yellow:[Demo CI/hello]]] unable to get git ref: reference not found
[[yellow:[Demo CI/hello]]] unable to get git revision: reference not found
[[yellow:[Demo CI/hello]]] ⭐ Run Main Checkout
[[yellow:[Demo CI/hello]]] unable to get git ref: reference not found
[[yellow:[Demo CI/hello]]] unable to get git revision: reference not found
[[yellow:[Demo CI/hello]]] unable to get git ref: reference not found
[[yellow:[Demo CI/hello]]] unable to get git revision: reference not found
[[yellow:[Demo CI/hello]]]   🐳  docker cp src=/home/kmaau/act-demo/. dst=/home/kmaau/act-demo
[[yellow:[Demo CI/hello]]]   ✅  Success - Main Checkout [27.940818ms]
[[yellow:[Demo CI/hello]]] unable to get git ref: reference not found
[[yellow:[Demo CI/hello]]] unable to get git revision: reference not found
[[yellow:[Demo CI/hello]]] unable to get git ref: reference not found
[[yellow:[Demo CI/hello]]] unable to get git revision: reference not found
[[yellow:[Demo CI/hello]]] unable to get git ref: reference not found
[[yellow:[Demo CI/hello]]] unable to get git revision: reference not found
[[yellow:[Demo CI/hello]]] unable to get git ref: reference not found
[[yellow:[Demo CI/hello]]] unable to get git revision: reference not found
[[yellow:[Demo CI/hello]]] unable to get git ref: reference not found
[[yellow:[Demo CI/hello]]] unable to get git revision: reference not found
[[yellow:[Demo CI/hello]]] ⭐ Run Main Show Environment
[[yellow:[Demo CI/hello]]] unable to get git ref: reference not found
[[yellow:[Demo CI/hello]]] unable to get git revision: reference not found
[[yellow:[Demo CI/hello]]] unable to get git ref: reference not found
[[yellow:[Demo CI/hello]]] unable to get git revision: reference not found
[[yellow:[Demo CI/hello]]] unable to get git ref: reference not found
[[yellow:[Demo CI/hello]]] unable to get git revision: reference not found
[[yellow:[Demo CI/hello]]] unable to get git ref: reference not found
[[yellow:[Demo CI/hello]]] unable to get git revision: reference not found
[[yellow:[Demo CI/hello]]]   🐳  docker exec cmd=[bash -e /var/run/act/workflow/1] user= workdir=
| Hello from GitHub Actions
| Linux rocky 5.14.0-687.10.1.el9_8.0.1.x86_64 #1 SMP PREEMPT_DYNAMIC Sun May 24 12:01:19 UTC 2026 x86_64 GNU/Linux
| /home/kmaau/act-demo
[[yellow:[Demo CI/hello]]]   ✅  Success - Main Show Environment [111.10422ms]
[[yellow:[Demo CI/hello]]] ⭐ Run Complete job
[[yellow:[Demo CI/hello]]] Cleaning up container for job hello
[[yellow:[Demo CI/hello]]] unable to get git ref: reference not found
[[yellow:[Demo CI/hello]]] unable to get git revision: reference not found
[[yellow:[Demo CI/hello]]]   ✅  Success - Complete job
[[yellow:[Demo CI/hello]]] 🏁  Job succeeded

Using secret:

[kmaau@rocky act-demo]$ vi .github/workflows/secret.yml 
::
::

[kmaau@rocky act-demo]$ cat .github/workflows/secret.yml 
[[blue:name: Using Secret]]
[[blue:]]
[[blue:on:]]
[[blue:  push:]]
[[blue:]]
[[blue:env:]]
[[blue:  GH_TOKEN: ${{ secrets.GH_TOKEN }}]]
[[blue:]]
[[blue:jobs:]]
[[blue:  secret:]]
[[blue:    runs-on: ubuntu-latest]]
[[blue:]]
[[blue:    steps:]]
[[blue:      - name: Checkout]]
[[blue:        uses: actions/checkout@v4]]
[[blue:]]
[[blue:      - name: Echo Secret]]
[[blue:        run: |]]
[[blue:          echo "$GH_TOKEN"]]
[[blue:          echo "${{ env.GH_TOKEN }}"]]

[kmaau@rocky act-demo]$ act --list
INFO[0000] Using docker host 'unix:///var/run/docker.sock', and daemon socket 'unix:///var/run/docker.sock' 
Stage  Job ID  Job name  Workflow name  Workflow file  Events
0      hello   hello     Demo CI        ci.yml         push  
0      secret  secret    Using Secret   secret.yml     push  

[kmaau@rocky act-demo]$ act --job secret --secret GH_TOKEN=myToken
[[green:INFO]][0000] Using docker host 'unix:///var/run/docker.sock', and daemon socket 'unix:///var/run/docker.sock' 
[[yellow:WARN]][0000] unable to get git ref: reference not found   
[[yellow:WARN]][0000] unable to get git revision: reference not found 
[[yellow:[Using Secret/secret]]] ⭐ Run Set up job
[[yellow:[Using Secret/secret]]] 🚀  Start image=node:16-buster-slim
[[yellow:[Using Secret/secret]]]   🐳  docker pull image=node:16-buster-slim platform= username= forcePull=true
[[yellow:[Using Secret/secret]]]   🐳  docker create image=node:16-buster-slim platform= entrypoint=["tail" "-f" "/dev/null"] cmd=[] network="host"
[[yellow:[Using Secret/secret]]]   🐳  docker run image=node:16-buster-slim platform= entrypoint=["tail" "-f" "/dev/null"] cmd=[] network="host"
[[yellow:[Using Secret/secret]]]   🐳  docker exec cmd=[node --no-warnings -e console.log(process.execPath)] user= workdir=
[[yellow:[Using Secret/secret]]]   ✅  Success - Set up job
[[yellow:[Using Secret/secret]]] unable to get git ref: reference not found
[[yellow:[Using Secret/secret]]] unable to get git revision: reference not found
[[yellow:[Using Secret/secret]]] unable to get git ref: reference not found
[[yellow:[Using Secret/secret]]] unable to get git revision: reference not found
[[yellow:[Using Secret/secret]]] unable to get git ref: reference not found
[[yellow:[Using Secret/secret]]] unable to get git revision: reference not found
[[yellow:[Using Secret/secret]]] unable to get git ref: reference not found
[[yellow:[Using Secret/secret]]] unable to get git revision: reference not found
[[yellow:[Using Secret/secret]]] unable to get git ref: reference not found
[[yellow:[Using Secret/secret]]] unable to get git revision: reference not found
[[yellow:[Using Secret/secret]]] unable to get git ref: reference not found
[[yellow:[Using Secret/secret]]] unable to get git revision: reference not found
[[yellow:[Using Secret/secret]]] unable to get git ref: reference not found
[[yellow:[Using Secret/secret]]] unable to get git revision: reference not found
[[yellow:[Using Secret/secret]]] unable to get git ref: reference not found
[[yellow:[Using Secret/secret]]] unable to get git revision: reference not found
[[yellow:[Using Secret/secret]]] ⭐ Run Main Checkout
[[yellow:[Using Secret/secret]]] unable to get git ref: reference not found
[[yellow:[Using Secret/secret]]] unable to get git revision: reference not found
[[yellow:[Using Secret/secret]]] unable to get git ref: reference not found
[[yellow:[Using Secret/secret]]] unable to get git revision: reference not found
[[yellow:[Using Secret/secret]]]   🐳  docker cp src=/home/kmaau/act-demo/. dst=/home/kmaau/act-demo
[[yellow:[Using Secret/secret]]]   ✅  Success - Main Checkout [30.346656ms]
[[yellow:[Using Secret/secret]]] unable to get git ref: reference not found
[[yellow:[Using Secret/secret]]] unable to get git revision: reference not found
[[yellow:[Using Secret/secret]]] unable to get git ref: reference not found
[[yellow:[Using Secret/secret]]] unable to get git revision: reference not found
[[yellow:[Using Secret/secret]]] unable to get git ref: reference not found
[[yellow:[Using Secret/secret]]] unable to get git revision: reference not found
[[yellow:[Using Secret/secret]]] unable to get git ref: reference not found
[[yellow:[Using Secret/secret]]] unable to get git revision: reference not found
[[yellow:[Using Secret/secret]]] unable to get git ref: reference not found
[[yellow:[Using Secret/secret]]] unable to get git revision: reference not found
[[yellow:[Using Secret/secret]]] ⭐ Run Main Echo Secret
[[yellow:[Using Secret/secret]]] unable to get git ref: reference not found
[[yellow:[Using Secret/secret]]] unable to get git revision: reference not found
[[yellow:[Using Secret/secret]]] unable to get git ref: reference not found
[[yellow:[Using Secret/secret]]] unable to get git revision: reference not found
[[yellow:[Using Secret/secret]]] unable to get git ref: reference not found
[[yellow:[Using Secret/secret]]] unable to get git revision: reference not found
[[yellow:[Using Secret/secret]]] unable to get git ref: reference not found
[[yellow:[Using Secret/secret]]] unable to get git revision: reference not found
[[yellow:[Using Secret/secret]]]   🐳  docker exec cmd=[bash -e /var/run/act/workflow/1] user= workdir=
| ***
| ***
[[yellow:[Using Secret/secret]]]   ✅  Success - Main Echo Secret [119.241268ms]
[[yellow:[Using Secret/secret]]] ⭐ Run Complete job
[[yellow:[Using Secret/secret]]] Cleaning up container for job secret
[[yellow:[Using Secret/secret]]] unable to get git ref: reference not found
[[yellow:[Using Secret/secret]]] unable to get git revision: reference not found
[[yellow:[Using Secret/secret]]]   ✅  Success - Complete job
[[yellow:[Using Secret/secret]]] 🏁  Job succeeded

Clean up:

[kmaau@rocky act-demo]$ cd ${HOME}
[kmaau@rocky ~]$ rm -rf ${HOME}/act-demo