-
-
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
base: main
Are you sure you want to change the base?
Forgejo-Runner #15046
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -0,0 +1,84 @@ | ||||||
| #!/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:-no}" | ||||||
| var_unprivileged="${var_unprivileged:-1}" | ||||||
| var_nesting="${var_nesting:-1}" | ||||||
| var_keyctl="${var_keyctl:-1}" | ||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. why is this added?
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Dont ask me. You write more with the dev in VED ^^ ask him
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||||||
|
|
||||||
| # App-specific variables (not in build.func whitelist) | ||||||
| # Export so they survive lxc-attach into the container | ||||||
|
Comment on lines
+21
to
+22
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. is this documented in website? |
||||||
| 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-amd64" -o /usr/local/bin/forgejo-runner | ||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. possibly use this safe curl download func?
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
| 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 | ||||||
| } | ||||||
|
|
||||||
| # Fail early if running unattended without required values | ||||||
| # mode is only set when the user explicitly passes it (automating); | ||||||
| # bare "bash -c $(curl ...)" leaves mode empty and shows the whiptail menu | ||||||
| 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}" | ||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. instructions what is to do after installation |
||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| ______ _ ____ | ||
| / ____/___ _________ ____ (_)___ / __ \__ ______ ____ ___ _____ | ||
| / /_ / __ \/ ___/ __ `/ _ \ / / __ \______/ /_/ / / / / __ \/ __ \/ _ \/ ___/ | ||
| / __/ / /_/ / / / /_/ / __/ / / /_/ /_____/ _, _/ /_/ / / / / / / / __/ / | ||
| /_/ \____/_/ \__, /\___/_/ /\____/ /_/ |_|\__,_/_/ /_/_/ /_/\___/_/ | ||
| /____/ /___/ |
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,115 @@ | ||||||||||||||||||||||||||||||||||
| #!/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 | ||||||||||||||||||||||||||||||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| # Get required configuration — skip prompts if already set (generated/unattended mode) | ||||||||||||||||||||||||||||||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||||
| 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 | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
|
Comment on lines
+31
to
+39
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. possibly something like this;
Suggested change
|
||||||||||||||||||||||||||||||||||
| # Runner labels — default is always included; additional labels are appended | ||||||||||||||||||||||||||||||||||
| 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-amd64" -o /usr/local/bin/forgejo-runner | ||||||||||||||||||||||||||||||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||||
| 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 | ||||||||||||||||||||||||||||||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't think this extra var is worth it. |
||||||||||||||||||||||||||||||||||
| 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 | ||||||||||||||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.