-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Forgejo-Runner #15046
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
michelroegl-brunner
merged 9 commits into
main
from
add-script-forgejo-runner-1781158665
Jul 7, 2026
+199
−0
Merged
Forgejo-Runner #15046
Changes from all commits
Commits
Show all changes
9 commits
Select commit
Hold shift + click to select a range
ced83cc
Add forgejo-runner (ct)
push-app-to-main[bot] 7960185
Apply suggestion from @CrazyWolf13
michelroegl-brunner a886786
Update ct/forgejo-runner.sh
MickLesk edb7a15
Update ct/forgejo-runner.sh
MickLesk 9dfad63
Update install/forgejo-runner-install.sh
MickLesk 2441df8
Clean up comments in forgejo-runner.sh
MickLesk 799e638
Add post-setup message for Forgejo Runner
MickLesk a17b21e
Update install/forgejo-runner-install.sh
MickLesk b5dac27
Simplify Forgejo runner installation script prompts
MickLesk File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,79 @@ | ||
| #!/usr/bin/env bash | ||
| source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) | ||
| # Copyright (c) 2021-2026 community-scripts ORG | ||
| # Author: Simon Friedrich (lengschder97) | ||
| # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE | ||
| # Source: https://forgejo.org/ | ||
|
|
||
| APP="Forgejo-Runner" | ||
| var_tags="${var_tags:-ci}" | ||
| var_cpu="${var_cpu:-2}" | ||
| var_ram="${var_ram:-2048}" | ||
| var_disk="${var_disk:-8}" | ||
| var_os="${var_os:-debian}" | ||
| var_version="${var_version:-13}" | ||
| var_arm64="${var_arm64:-yes}" | ||
| var_unprivileged="${var_unprivileged:-1}" | ||
| var_nesting="${var_nesting:-1}" | ||
| var_keyctl="${var_keyctl:-1}" | ||
|
|
||
| export var_forgejo_instance="${var_forgejo_instance:-}" | ||
| export var_forgejo_runner_token="${var_forgejo_runner_token:-}" | ||
| export var_runner_labels="${var_runner_labels:-}" | ||
|
|
||
| header_info "$APP" | ||
| variables | ||
| color | ||
| catch_errors | ||
|
|
||
| function update_script() { | ||
| header_info | ||
| check_container_storage | ||
| check_container_resources | ||
|
|
||
| if [[ ! -f /usr/local/bin/forgejo-runner ]]; then | ||
| msg_error "No ${APP} installation found!" | ||
| exit 1 | ||
| fi | ||
|
|
||
| RELEASE=$(curl -fsSL https://data.forgejo.org/api/v1/repos/forgejo/runner/releases/latest | grep -oP '"tag_name":\s*"\K[^"]+' | sed 's/^v//') | ||
| if [[ "${RELEASE}" == "$(cat ~/.forgejo-runner 2>/dev/null)" ]]; then | ||
| msg_ok "No update required. ${APP} is already at v${RELEASE}" | ||
| exit | ||
| fi | ||
|
|
||
| msg_info "Stopping Services" | ||
| systemctl stop forgejo-runner | ||
| msg_ok "Stopped Services" | ||
|
|
||
| msg_info "Updating Forgejo Runner to v${RELEASE}" | ||
| curl -fsSL "https://code.forgejo.org/forgejo/runner/releases/download/v${RELEASE}/forgejo-runner-${RELEASE}-linux-$(arch_resolve)" -o /usr/local/bin/forgejo-runner | ||
| chmod +x /usr/local/bin/forgejo-runner | ||
| echo "${RELEASE}" >~/.forgejo-runner | ||
| msg_ok "Updated Forgejo Runner" | ||
|
|
||
| msg_info "Starting Services" | ||
| systemctl start forgejo-runner | ||
| msg_ok "Started Services" | ||
| msg_ok "Updated successfully!" | ||
| exit | ||
| } | ||
|
|
||
| if [[ -n "${mode:-}" ]]; then | ||
| if [[ -z "${var_forgejo_instance:-}" ]]; then | ||
| msg_error "var_forgejo_instance is required for unattended installs." | ||
| exit 1 | ||
| fi | ||
| if [[ -z "${var_forgejo_runner_token:-}" ]]; then | ||
| msg_error "var_forgejo_runner_token is required for unattended installs." | ||
| exit 1 | ||
| fi | ||
| fi | ||
|
|
||
| start | ||
| build_container | ||
| description | ||
|
|
||
| msg_ok "Completed successfully!\n" | ||
| echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" | ||
|
MickLesk marked this conversation as resolved.
|
||
| echo -e "${INFO}${YW} After first boot, check your Forgejo Instance for the new Runner.${CL}" | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| ______ _ ____ | ||
| / ____/___ _________ ____ (_)___ / __ \__ ______ ____ ___ _____ | ||
| / /_ / __ \/ ___/ __ `/ _ \ / / __ \______/ /_/ / / / / __ \/ __ \/ _ \/ ___/ | ||
| / __/ / /_/ / / / /_/ / __/ / / /_/ /_____/ _, _/ /_/ / / / / / / / __/ / | ||
| /_/ \____/_/ \__, /\___/_/ /\____/ /_/ |_|\__,_/_/ /_/_/ /_/\___/_/ | ||
| /____/ /___/ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,114 @@ | ||
| #!/usr/bin/env bash | ||
| # Copyright (c) 2021-2026 community-scripts ORG | ||
| # Author: Simon Friedrich (lengschder97) | ||
| # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE | ||
| # Source: https://forgejo.org/ | ||
|
|
||
| source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" | ||
| color | ||
| verb_ip6 | ||
| catch_errors | ||
| setting_up_container | ||
| network_check | ||
| update_os | ||
|
|
||
| setup_yq | ||
|
MickLesk marked this conversation as resolved.
|
||
|
|
||
| if [[ -z "${var_forgejo_instance:-}" ]]; then | ||
| read -r -p "${TAB3}Forgejo Instance URL (e.g. https://codeberg.org): " var_forgejo_instance | ||
| var_forgejo_instance="${var_forgejo_instance:-https://codeberg.org}" | ||
| fi | ||
|
|
||
| if [[ -z "${var_forgejo_runner_uuid:-}" ]]; then | ||
| read -r -p "${TAB3}Forgejo Runner UUID: " var_forgejo_runner_uuid | ||
| fi | ||
|
|
||
| if [[ -z "${var_forgejo_runner_uuid:-}" ]]; then | ||
| msg_error "No runner UUID provided. Cannot continue." | ||
| exit 1 | ||
| fi | ||
|
|
||
| if [[ -z "${var_forgejo_runner_token:-}" ]]; then | ||
| read -r -p "${TAB3}Forgejo Runner Token: " var_forgejo_runner_token | ||
| fi | ||
|
|
||
| if [[ -z "${var_forgejo_runner_token:-}" ]]; then | ||
| msg_error "No runner registration token provided. Cannot continue." | ||
| exit 1 | ||
| fi | ||
|
|
||
|
MickLesk marked this conversation as resolved.
|
||
| DEFAULT_RUNNER_LABELS="linux-amd64:docker://node:22-bookworm" | ||
| if [[ -z "${var_runner_labels:-}" ]]; then | ||
| read -r -p "${TAB3}Additional runner labels (comma-separated, or leave blank for default only): " var_runner_labels | ||
| fi | ||
| if [[ -n "${var_runner_labels:-}" ]]; then | ||
| RUNNER_LABELS="${DEFAULT_RUNNER_LABELS},${var_runner_labels}" | ||
| else | ||
| RUNNER_LABELS="${DEFAULT_RUNNER_LABELS}" | ||
| fi | ||
|
|
||
| export FORGEJO_INSTANCE="$var_forgejo_instance" | ||
| export FORGEJO_RUNNER_TOKEN="$var_forgejo_runner_token" | ||
| export FORGEJO_RUNNER_UUID="$var_forgejo_runner_uuid" | ||
| export RUNNER_LABELS | ||
|
|
||
| msg_info "Installing dependencies" | ||
| $STD apt install -y \ | ||
| git \ | ||
| podman podman-docker | ||
| msg_ok "Installed dependencies" | ||
|
|
||
| msg_info "Enabling Podman socket" | ||
| systemctl enable --now podman.socket | ||
| msg_ok "Enabled Podman socket" | ||
|
|
||
| msg_info "Installing Forgejo Runner" | ||
| RUNNER_VERSION=$(curl -fsSL https://data.forgejo.org/api/v1/repos/forgejo/runner/releases/latest | jq -r .name | sed 's/^v//') | ||
|
MickLesk marked this conversation as resolved.
|
||
| curl -fsSL "https://code.forgejo.org/forgejo/runner/releases/download/v${RUNNER_VERSION}/forgejo-runner-${RUNNER_VERSION}-linux-$(arch_resolve)" -o /usr/local/bin/forgejo-runner | ||
| chmod +x /usr/local/bin/forgejo-runner | ||
| echo "${RUNNER_VERSION}" >~/.forgejo-runner | ||
| msg_ok "Installed Forgejo Runner" | ||
|
|
||
| msg_info "Registering Forgejo Runner" | ||
| export DOCKER_HOST="unix:///run/podman/podman.sock" | ||
|
|
||
| msg_info "Generating Forgejo Runner Configuration" | ||
| mkdir -p /etc/forgejo-runner | ||
| CONFIG_FILE="/etc/forgejo-runner/config.yaml" | ||
| forgejo-runner generate-config > $CONFIG_FILE | ||
|
MickLesk marked this conversation as resolved.
|
||
| yq -i ' | ||
| .container.docker_host = strenv(DOCKER_HOST) | | ||
| .server.connections.forgejo.url = strenv(FORGEJO_INSTANCE) | | ||
| .server.connections.forgejo.uuid = strenv(FORGEJO_RUNNER_UUID) | | ||
| .server.connections.forgejo.token = strenv(FORGEJO_RUNNER_TOKEN) | | ||
| .server.connections.forgejo.labels = (strenv(RUNNER_LABELS) | split(",") | map(select(length > 0))) | ||
| ' $CONFIG_FILE | ||
| msg_ok "Generated Forgejo Runner Configuration" | ||
|
|
||
|
|
||
| msg_info "Creating Services" | ||
| cat <<EOF >/etc/systemd/system/forgejo-runner.service | ||
| [Unit] | ||
| Description=Forgejo Runner | ||
| Documentation=https://forgejo.org/docs/latest/admin/actions/ | ||
| After=podman.socket | ||
| Requires=podman.socket | ||
|
|
||
| [Service] | ||
| User=root | ||
| WorkingDirectory=/root | ||
| Environment=DOCKER_HOST=unix:///run/podman/podman.sock | ||
| ExecStart=/usr/local/bin/forgejo-runner daemon -c $CONFIG_FILE | ||
| Restart=on-failure | ||
| RestartSec=10 | ||
| TimeoutSec=0 | ||
|
|
||
| [Install] | ||
| WantedBy=multi-user.target | ||
| EOF | ||
| systemctl enable -q --now forgejo-runner | ||
| msg_ok "Created Services" | ||
|
|
||
| motd_ssh | ||
| customize | ||
| cleanup_lxc | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.