Skip to content

docs(PL-391): add guide for installing extra JDK versions on self-hosted runners - #38

Draft
arcappcircle wants to merge 1 commit into
masterfrom
docs/pl-391-self-hosted-runner-custom-jdk
Draft

docs(PL-391): add guide for installing extra JDK versions on self-hosted runners#38
arcappcircle wants to merge 1 commit into
masterfrom
docs/pl-391-self-hosted-runner-custom-jdk

Conversation

@arcappcircle

Copy link
Copy Markdown
Contributor

Summary

Adds a customer-facing guide for installing a JDK version that is not preinstalled on a self-hosted Linux runner, using Java 18 as the worked example.

Context is PL-391. The issue originally asked to preinstall Java 18 on the runner image; the outcome of the discussion there is that we do not ship non-LTS / EOL tooling on runner images, and a customer needing one performs the install on their own self-hosted runner. This page is the procedure that makes that answer actionable. It is the public counterpart to the internal LTS/EOL policy in ac-doc-internal#203.

Changes

  • New page self-hosted-appcircle/self-hosted-runner/configure-runner/custom-jdk-versions.md:
    • Install the JDK with SDKMAN, including the local-candidate path for versions that SDKMAN has dropped from its catalog (Java 18 is no longer listed for any vendor).
    • Declare JAVA_HOME_<major>_X64 in /etc/systemd/system/io.appcircle.runner.service. Adding the export to ~/.bashrc alone does not work, because the generated startup.sh does not source it at runtime, and the unit template only covers 8, 11, 17 and 21.
    • systemctl daemon-reload before restarting, since ac-runner service -c restart only stops and starts the service.
    • Select the JDK from a workflow with a Custom Script step, because the Select Java Version dropdown is a fixed list.
    • Docker-based runners: the mechanism is identical since systemd runs as PID 1 inside the container, with three deltas (run the steps via docker exec, HOME is always /root, and container recreation is the one lifecycle event that loses the JDK). Also states explicitly that docker run -e, --env-file, Compose environment: and Dockerfile ENV do not reach the runner.
  • Link added from infrastructure/android-build-infrastructure.md, in the ## Java Version section right after the Select Java Version sentence, via the ContentRef component already imported on that page.
  • Link added from the Configure Runner index.md for discoverability.

Review notes

  • Please double-check the Azul download URL and the zulu18.32.13-ca-jdk18.0.2.1-linux_x64 archive name in Step 2 against Azul's current download page. The build string comes from the PL-391 discussion, not from a verified download.
  • The volume names in the Docker docker run example are illustrative. We do not publish a runner image, so there is no canonical mount layout to match.

🤖 Generated with Claude Code


Created on behalf of ilhan@appcircle.io via Arc.

…ted runners

Document how a customer installs a JDK that is not preinstalled on a
self-hosted Linux runner, using Java 18 as the worked example: install via
SDKMAN (including the local-candidate path for versions dropped from the
catalog), declare JAVA_HOME_<major>_X64 in the runner systemd unit, reload
systemd, and select the JDK from a workflow with a Custom Script step.

Covers Docker-based runners, where the mechanism is identical because
systemd runs inside the container, and where container recreation is the
only thing that loses the JDK.

Link the new page from the Android build stacks Java Version section and
from the Configure Runner index.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Aug 27, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: f15d9b7d-2797-44f3-b96c-7af36903f486

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@ilhancengiz
ilhancengiz marked this pull request as draft August 27, 2026 15:24
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
appcircle-docs 93fe7c0 Commit Preview URL

Branch Preview URL
Aug 27 2026, 03:25 PM

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
appcircle-docs 93fe7c0 Commit Preview URL

Branch Preview URL
Aug 27 2026, 03:25 PM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants