Gitea seems not to receive updates from act runner - stuck at complete job phase #15020

Closed
opened 2025-11-02 11:28:10 -06:00 by GiteaMirror · 4 comments
Owner

Originally created by @deB4SH on GitHub (Oct 12, 2025).

Description

Hi all,
I'm currently a bit puzzled due to a seemingly new bug? Upgraded my whole infrastructure to the latest version of gitea (1.24.6) and also restarted and upgraded my gitea_act_runner to the latest nightly.

When running a action the whole workflow works perfectly fine but is stuck at the "complete job" phase. From my first debug log reading it seems like the gitea instance doesn't receive the latest status updates from the act runner. The gitea instance just waits for the cleaning up of all started containers which are removed by the runner itself.

logs from my local gitea instance:

  🐳  docker exec cmd=[node /var/run/act/actions/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/dist/index.js] user= workdir=
Exec command '[node /var/run/act/actions/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/dist/index.js]'
Working directory '/workspace/Docker/gitea_act_runner_homelab'
[command]/usr/bin/git version
git version 2.47.1
***
Temporarily overriding HOME='/tmp/87bbc9c4-d95d-44e5-a6fd-3db1de5aac00' before making global git config changes
Adding repository directory to the temporary git global config as a safe directory
[command]/usr/bin/git config --global --add safe.directory /workspace/Docker/gitea_act_runner_homelab
[command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
[command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
[command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/git\.LOCAL_LAB_ADR\.de\/\.extraheader
http.https://git.LOCAL_LAB_ADR.de/.extraheader
[command]/usr/bin/git config --local --unset-all http.https://git.LOCAL_LAB_ADR.de/.extraheader
[command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/git\.LOCAL_LAB_ADR\.de\/\.extraheader' && git config --local --unset-all 'http.https://git.LOCAL_LAB_ADR.de/.extraheader' || :"
  ✅  Success - Post Checkout
Cleaning up container for job build

When looking into the debug logs of the runner it seems everything works fine.
logs from my local runner:

[build/build] Cleaning up container for job build
[build/build] [DEBUG] Removed container: 73f2734c3c33d91bf2b29be4dd4084a2ce1169cf21d52f8f46ff7531ae4fba38
[build/build] [DEBUG]   🐳  docker volume rm GITEA-ACTIONS-TASK-4182_WORKFLOW-build_JOB-build
[build/build] [DEBUG]   🐳  docker volume rm GITEA-ACTIONS-TASK-4182_WORKFLOW-build_JOB-build-env
[build/build] Cleaning up network for job build, and network name is: GITEA-ACTIONS-TASK-4182_WORKFLOW-build_JOB-build-build-network
[build/build] 🏁  Job succeeded

When running the demo action to test the whole runner I'm able to observe the same issue.( demo action from here: https://docs.gitea.com/usage/actions/quickstart#use-actions )
logs from gitea:

expression 'echo "🍏 This job's status is ${{ job.status }}."' rewritten to 'format('echo "🍏 This job''s status is {0}."', job.status)'
evaluating expression 'format('echo "🍏 This job''s status is {0}."', job.status)'
expression 'format('echo "🍏 This job''s status is {0}."', job.status)' evaluated to '%!t(string=echo "🍏 This job's status is success.")'
expression 'echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner."' rewritten to 'format('echo "💡 The {0} repository has been cloned to the runner."', gitea.repository)'
evaluating expression 'format('echo "💡 The {0} repository has been cloned to the runner."', gitea.repository)'
expression 'format('echo "💡 The {0} repository has been cloned to the runner."', gitea.repository)' evaluated to '%!t(string=echo "💡 The Test/ActionRunnerTest repository has been cloned to the runner.")'
evaluating expression 'always()'
expression 'always()' evaluated to 'true'
⭐ Run Post Check out repository code
run post step for 'Check out repository code'
executing remote job container: [node /root/.cache/act/273d039c6fd5bc07/act/actions/656c968832d266db0fe5f8f638000eea9e6a5501569cb9a87c7fdaefedb6a0b6/dist/index.js]
(node:281) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
[command]/usr/bin/git version
git version 2.49.1
***
Temporarily overriding HOME='/root/.cache/act/273d039c6fd5bc07/tmp/e7b166a8-f4ac-423b-a3ab-c3dd3813208b' before making global git config changes
Adding repository directory to the temporary git global config as a safe directory
[command]/usr/bin/git config --global --add safe.directory /root/.cache/act/273d039c6fd5bc07/hostexecutor
[command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
[command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
[command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/git\.LOCAL_LAB_ADR\.de\/\.extraheader
http.https://git.LOCAL_LAB_ADR.de/.extraheader
[command]/usr/bin/git config --local --unset-all http.https://git.LOCAL_LAB_ADR.de/.extraheader
[command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/git\.LOCAL_LAB_ADR\.de\/\.extraheader' && git config --local --unset-all 'http.https://git.LOCAL_LAB_ADR.de/.extraheader' || :"

logs from runner:

[Gitea Actions Demo/Explore-Gitea-Actions]   ✅  Success - Post Check out repository code
[Gitea Actions Demo/Explore-Gitea-Actions] [DEBUG] expression 'echo "🔎 The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}."' rewritten to 'format('echo "🔎 The name of your branch is {0} and your repository is {1}."', gitea.ref, gitea.repository)'
[Gitea Actions Demo/Explore-Gitea-Actions] [DEBUG] evaluating expression 'format('echo "🔎 The name of your branch is {0} and your repository is {1}."', gitea.ref, gitea.repository)'
[Gitea Actions Demo/Explore-Gitea-Actions] [DEBUG] expression 'format('echo "🔎 The name of your branch is {0} and your repository is {1}."', gitea.ref, gitea.repository)' evaluated to '%!t(string=echo "🔎 The name of your branch is refs/heads/main and your repository is Test/ActionRunnerTest.")'
[Gitea Actions Demo/Explore-Gitea-Actions] [DEBUG] expression 'echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!"' rewritten to 'format('echo "🐧 This job is now running on a {0} server hosted by Gitea!"', runner.os)'
[Gitea Actions Demo/Explore-Gitea-Actions] [DEBUG] evaluating expression 'format('echo "🐧 This job is now running on a {0} server hosted by Gitea!"', runner.os)'
[Gitea Actions Demo/Explore-Gitea-Actions] [DEBUG] expression 'format('echo "🐧 This job is now running on a {0} server hosted by Gitea!"', runner.os)' evaluated to '%!t(string=echo "🐧 This job is now running on a linux server hosted by Gitea!")'
[Gitea Actions Demo/Explore-Gitea-Actions] [DEBUG] expression 'echo "🎉 The job was automatically triggered by a ${{ gitea.event_name }} event."' rewritten to 'format('echo "🎉 The job was automatically triggered by a {0} event."', gitea.event_name)'
[Gitea Actions Demo/Explore-Gitea-Actions] [DEBUG] evaluating expression 'format('echo "🎉 The job was automatically triggered by a {0} event."', gitea.event_name)'
[Gitea Actions Demo/Explore-Gitea-Actions] [DEBUG] expression 'format('echo "🎉 The job was automatically triggered by a {0} event."', gitea.event_name)' evaluated to '%!t(string=echo "🎉 The job was automatically triggered by a push event.")'
[Gitea Actions Demo/Explore-Gitea-Actions] Cleaning up container for job Explore-Gitea-Actions
[Gitea Actions Demo/Explore-Gitea-Actions] 🏁  Job succeeded

Did someone else run into the same issues?

Also found relative close issues ( https://gitea.com/gitea/act_runner/issues/707 https://gitea.com/gitea/act_runner/issues/496 ) but nothing resolved my current issue.

Gitea Version

1.24.6

Can you reproduce the bug on the Gitea demo site?

No

Log Gist

No response

Screenshots

No response

Git Version

No response

Operating System

debian bookworm

How are you running Gitea?

runner as docker container with docker-compose
gitea within kubernetes

Database

PostgreSQL

Originally created by @deB4SH on GitHub (Oct 12, 2025). ### Description Hi all, I'm currently a bit puzzled due to a seemingly new bug? Upgraded my whole infrastructure to the latest version of gitea (1.24.6) and also restarted and upgraded my gitea_act_runner to the latest nightly. When running a action the whole workflow works perfectly fine but is stuck at the "complete job" phase. From my first debug log reading it seems like the gitea instance doesn't receive the latest status updates from the act runner. The gitea instance just waits for the cleaning up of all started containers which are removed by the runner itself. logs from my local gitea instance: ``` 🐳 docker exec cmd=[node /var/run/act/actions/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/dist/index.js] user= workdir= Exec command '[node /var/run/act/actions/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/dist/index.js]' Working directory '/workspace/Docker/gitea_act_runner_homelab' [command]/usr/bin/git version git version 2.47.1 *** Temporarily overriding HOME='/tmp/87bbc9c4-d95d-44e5-a6fd-3db1de5aac00' before making global git config changes Adding repository directory to the temporary git global config as a safe directory [command]/usr/bin/git config --global --add safe.directory /workspace/Docker/gitea_act_runner_homelab [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :" [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/git\.LOCAL_LAB_ADR\.de\/\.extraheader http.https://git.LOCAL_LAB_ADR.de/.extraheader [command]/usr/bin/git config --local --unset-all http.https://git.LOCAL_LAB_ADR.de/.extraheader [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/git\.LOCAL_LAB_ADR\.de\/\.extraheader' && git config --local --unset-all 'http.https://git.LOCAL_LAB_ADR.de/.extraheader' || :" ✅ Success - Post Checkout Cleaning up container for job build ``` When looking into the debug logs of the runner it seems everything works fine. logs from my local runner: ``` [build/build] Cleaning up container for job build [build/build] [DEBUG] Removed container: 73f2734c3c33d91bf2b29be4dd4084a2ce1169cf21d52f8f46ff7531ae4fba38 [build/build] [DEBUG] 🐳 docker volume rm GITEA-ACTIONS-TASK-4182_WORKFLOW-build_JOB-build [build/build] [DEBUG] 🐳 docker volume rm GITEA-ACTIONS-TASK-4182_WORKFLOW-build_JOB-build-env [build/build] Cleaning up network for job build, and network name is: GITEA-ACTIONS-TASK-4182_WORKFLOW-build_JOB-build-build-network [build/build] 🏁 Job succeeded ``` When running the demo action to test the whole runner I'm able to observe the same issue.( demo action from here: https://docs.gitea.com/usage/actions/quickstart#use-actions ) logs from gitea: ``` expression 'echo "🍏 This job's status is ${{ job.status }}."' rewritten to 'format('echo "🍏 This job''s status is {0}."', job.status)' evaluating expression 'format('echo "🍏 This job''s status is {0}."', job.status)' expression 'format('echo "🍏 This job''s status is {0}."', job.status)' evaluated to '%!t(string=echo "🍏 This job's status is success.")' expression 'echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner."' rewritten to 'format('echo "💡 The {0} repository has been cloned to the runner."', gitea.repository)' evaluating expression 'format('echo "💡 The {0} repository has been cloned to the runner."', gitea.repository)' expression 'format('echo "💡 The {0} repository has been cloned to the runner."', gitea.repository)' evaluated to '%!t(string=echo "💡 The Test/ActionRunnerTest repository has been cloned to the runner.")' evaluating expression 'always()' expression 'always()' evaluated to 'true' ⭐ Run Post Check out repository code run post step for 'Check out repository code' executing remote job container: [node /root/.cache/act/273d039c6fd5bc07/act/actions/656c968832d266db0fe5f8f638000eea9e6a5501569cb9a87c7fdaefedb6a0b6/dist/index.js] (node:281) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead. (Use `node --trace-deprecation ...` to show where the warning was created) [command]/usr/bin/git version git version 2.49.1 *** Temporarily overriding HOME='/root/.cache/act/273d039c6fd5bc07/tmp/e7b166a8-f4ac-423b-a3ab-c3dd3813208b' before making global git config changes Adding repository directory to the temporary git global config as a safe directory [command]/usr/bin/git config --global --add safe.directory /root/.cache/act/273d039c6fd5bc07/hostexecutor [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :" [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/git\.LOCAL_LAB_ADR\.de\/\.extraheader http.https://git.LOCAL_LAB_ADR.de/.extraheader [command]/usr/bin/git config --local --unset-all http.https://git.LOCAL_LAB_ADR.de/.extraheader [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/git\.LOCAL_LAB_ADR\.de\/\.extraheader' && git config --local --unset-all 'http.https://git.LOCAL_LAB_ADR.de/.extraheader' || :" ``` logs from runner: ``` [Gitea Actions Demo/Explore-Gitea-Actions] ✅ Success - Post Check out repository code [Gitea Actions Demo/Explore-Gitea-Actions] [DEBUG] expression 'echo "🔎 The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}."' rewritten to 'format('echo "🔎 The name of your branch is {0} and your repository is {1}."', gitea.ref, gitea.repository)' [Gitea Actions Demo/Explore-Gitea-Actions] [DEBUG] evaluating expression 'format('echo "🔎 The name of your branch is {0} and your repository is {1}."', gitea.ref, gitea.repository)' [Gitea Actions Demo/Explore-Gitea-Actions] [DEBUG] expression 'format('echo "🔎 The name of your branch is {0} and your repository is {1}."', gitea.ref, gitea.repository)' evaluated to '%!t(string=echo "🔎 The name of your branch is refs/heads/main and your repository is Test/ActionRunnerTest.")' [Gitea Actions Demo/Explore-Gitea-Actions] [DEBUG] expression 'echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!"' rewritten to 'format('echo "🐧 This job is now running on a {0} server hosted by Gitea!"', runner.os)' [Gitea Actions Demo/Explore-Gitea-Actions] [DEBUG] evaluating expression 'format('echo "🐧 This job is now running on a {0} server hosted by Gitea!"', runner.os)' [Gitea Actions Demo/Explore-Gitea-Actions] [DEBUG] expression 'format('echo "🐧 This job is now running on a {0} server hosted by Gitea!"', runner.os)' evaluated to '%!t(string=echo "🐧 This job is now running on a linux server hosted by Gitea!")' [Gitea Actions Demo/Explore-Gitea-Actions] [DEBUG] expression 'echo "🎉 The job was automatically triggered by a ${{ gitea.event_name }} event."' rewritten to 'format('echo "🎉 The job was automatically triggered by a {0} event."', gitea.event_name)' [Gitea Actions Demo/Explore-Gitea-Actions] [DEBUG] evaluating expression 'format('echo "🎉 The job was automatically triggered by a {0} event."', gitea.event_name)' [Gitea Actions Demo/Explore-Gitea-Actions] [DEBUG] expression 'format('echo "🎉 The job was automatically triggered by a {0} event."', gitea.event_name)' evaluated to '%!t(string=echo "🎉 The job was automatically triggered by a push event.")' [Gitea Actions Demo/Explore-Gitea-Actions] Cleaning up container for job Explore-Gitea-Actions [Gitea Actions Demo/Explore-Gitea-Actions] 🏁 Job succeeded ``` Did someone else run into the same issues? Also found relative close issues ( https://gitea.com/gitea/act_runner/issues/707 https://gitea.com/gitea/act_runner/issues/496 ) but nothing resolved my current issue. ### Gitea Version 1.24.6 ### Can you reproduce the bug on the Gitea demo site? No ### Log Gist _No response_ ### Screenshots _No response_ ### Git Version _No response_ ### Operating System debian bookworm ### How are you running Gitea? runner as docker container with docker-compose gitea within kubernetes ### Database PostgreSQL
GiteaMirror added the topic/gitea-actionsissue/needs-feedbacktype/bug labels 2025-11-02 11:28:10 -06:00
Author
Owner

@lunny commented on GitHub (Oct 12, 2025):

Maybe you can try https://gitea.com/gitea/act_runner/issues/707#issuecomment-1015187 ?

@lunny commented on GitHub (Oct 12, 2025): Maybe you can try https://gitea.com/gitea/act_runner/issues/707#issuecomment-1015187 ?
Author
Owner

@deB4SH commented on GitHub (Oct 13, 2025):

Hi @lunny
I already read through your linked issue. Sadly this didn't help. I'm also not running my own CA infrastructure. Gitea runs behind a reverse-proxy (cilium) and is terminated with a valid certificate from lets encrypt. Also observed that this issue seems to be flickering.

Image

I'm currently a bit puzzled on this. It doesn't seem like a dns issue.

@deB4SH commented on GitHub (Oct 13, 2025): Hi @lunny I already read through your linked issue. Sadly this didn't help. I'm also not running my own CA infrastructure. Gitea runs behind a reverse-proxy (cilium) and is terminated with a valid certificate from lets encrypt. Also observed that this issue seems to be flickering. <img width="980" height="326" alt="Image" src="https://github.com/user-attachments/assets/8d67dd9d-c9f9-4738-9d10-b4ed5f778a6d" /> I'm currently a bit puzzled on this. It doesn't seem like a dns issue.
Author
Owner

@ChristopherHX commented on GitHub (Oct 13, 2025):

Some Versions of act do

  • log 🏁 Job succeeded
  • Cleaning up container for job Explore-Gitea-Action timed out (this highly depends on dockerd resources)
  • actual job result failure due to timeout

my act runner for GitHub Actions, ignores the failure and skips waiting after 1minute


What does not help:

  • act_runner silently not log anything about log upload failures, while my act runner for GitHub has a --trace option to dump every http call with method, url, headers, body, response headers and response body
    • in mysql log upload failure can be due to the wrong charset / invalid symbols in log
@ChristopherHX commented on GitHub (Oct 13, 2025): Some Versions of act do - log 🏁 Job succeeded - Cleaning up container for job Explore-Gitea-Action timed out (this highly depends on dockerd resources) - actual job result failure due to timeout _my act runner for GitHub Actions, ignores the failure and skips waiting after 1minute_ --- What does not help: - act_runner silently not log anything about log upload failures, while my act runner for GitHub has a --trace option to dump every http call with method, url, headers, body, response headers and response body - in mysql log upload failure can be due to the wrong charset / invalid symbols in log
Author
Owner

@deB4SH commented on GitHub (Oct 15, 2025):

Hi @lunny and @ChristopherHX
seems that I found an issue. I ran both gitea and the act_runner in trace mode and found out that on the gitea side there was an issue with the folder actions_log/.
Gitea had some issues writing to it from time to time, which resulted in the flickering effect I reported. Updated an cleaned the rights for this folder and everything seems to work now.
Maybe this is a downstream issue due to an switch from the "normal" image towards the rootless. Nevertheless seems to work now and I'll close this issue. Thanks for the hints!

@deB4SH commented on GitHub (Oct 15, 2025): Hi @lunny and @ChristopherHX seems that I found an issue. I ran both gitea and the act_runner in trace mode and found out that on the gitea side there was an issue with the folder actions_log/. Gitea had some issues writing to it from time to time, which resulted in the flickering effect I reported. Updated an cleaned the rights for this folder and everything seems to work now. Maybe this is a downstream issue due to an switch from the "normal" image towards the rootless. Nevertheless seems to work now and I'll close this issue. Thanks for the hints!
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/gitea#15020