Jenkins CI Runners #22864
This file contains 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
name: "Jenkins CI Runners" | |
on: | |
workflow_dispatch: | |
inputs: | |
AGENT_HOST: | |
description: agent host | |
required: true | |
type: string | |
AGENT_FORWARD_PORT: | |
description: agent forward port | |
required: true | |
type: string | |
JENKINS_JOB_NAME: | |
description: Jenkins Job Name | |
required: true | |
type: string | |
JENKINS_JOB_BUILD_NUMBER: | |
description: Jenkins Job Build Number | |
required: true | |
type: number | |
MAVEN_WAIT_TIMEOUT: | |
description: Maven startup wait timeout | |
required: false | |
default: 60 | |
type: number | |
maven_version: | |
description: Maven version | |
default: "3.9.9" | |
required: false | |
type: string | |
jdk_major_version: | |
description: JDK Major version (eg 8, 11, 14, 17, 21,...) | |
default: 21 | |
required: false | |
type: number | |
maximize_build_space: | |
description: Maximize Build Space for Bigger Projects Unit tests based on files and blocks | |
type: boolean | |
required: false | |
default: false | |
jobs: | |
provision: | |
name: "Build ${{ inputs.JENKINS_JOB_NAME }} #${{ inputs.JENKINS_JOB_BUILD_NUMBER }}" | |
runs-on: ubuntu-24.04 | |
timeout-minutes: 120 | |
concurrency: | |
group: ${{ inputs.JENKINS_JOB_NAME }} | |
cancel-in-progress: true | |
steps: | |
# Hack: Maximize Disk space for big & legacy projects (May become unsupported in future Azure runner releases) | |
- name: Maximize build space | |
uses: easimon/maximize-build-space@v10 | |
if: ${{ inputs.maximize_build_space == true }} | |
with: | |
root-reserve-mb: 2048 | |
temp-reserve-mb: 2048 | |
swap-size-mb: 1024 | |
remove-dotnet: 'true' | |
remove-android: 'true' | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
# Setup Maven | |
- name: Set up Maven ${{ inputs.maven_version }} | |
uses: stCarolas/setup-maven@v5 | |
with: | |
maven-version: ${{ inputs.maven_version }} | |
# Restore Cache Maven Artifcats to boost up builds | |
- name: Restore Maven artifacts Cache | |
uses: actions/cache/restore@v4 | |
with: | |
path: ~/.m2/repository | |
key: generic-m2-repository | |
- name: Install SSH key | |
uses: shimataro/ssh-key-action@v2 | |
with: | |
key: ${{ secrets.PRIVATE_KEY }} | |
known_hosts: ${{ secrets.KNOWN_HOSTS }} | |
config: | | |
Host ${{ inputs.AGENT_HOST }} | |
HostName ${{ inputs.AGENT_HOST }} | |
User ${{ secrets.USERNAME }} | |
Port ${{ secrets.PORT }} | |
StrictHostKeyChecking no | |
- name: Setup JDK Environment Variables | |
run: | | |
sudo update-alternatives --remove-all java | |
sudo update-alternatives --remove-all javac | |
echo "export JAVA_HOME=${JAVA_HOME_${{ inputs.jdk_major_version }}_X64}" | sudo tee -a /etc/profile | |
sudo update-alternatives --install /usr/bin/java java ${JAVA_HOME_${{ inputs.jdk_major_version }}_X64}/bin/java 9999 | |
sudo update-alternatives --install /usr/bin/javac javac ${JAVA_HOME_${{ inputs.jdk_major_version }}_X64}/bin/javac 9999 | |
- name: Setup Maven for SSH Connection | |
run: | | |
ghaRunnerURL="${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" | |
cat > runnerinfo << EOF | |
echo "${ghaRunnerURL}" | |
EOF | |
sudo mv runnerinfo /usr/bin/ | |
sudo chmod +x /usr/bin/runnerinfo | |
cat > mvn << EOF | |
. /etc/profile | |
echo $\$ > /tmp/.mvnpid | |
/opt/hostedtoolcache/maven/${{ inputs.maven_version }}/x64/bin/mvn -V \$@ | |
EOF | |
sudo mv mvn /usr/bin/ | |
sudo chmod +x /usr/bin/mvn | |
echo "KillUserProcesses=yes" | sudo tee -a /etc/systemd/logind.conf | |
sudo systemctl restart systemd-logind.service | |
- name: Init gnupg for signing artifacts | |
run: | | |
chmod +x initgpg.sh | |
./initgpg.sh | |
env: | |
AGENT_HOST: ${{ inputs.AGENT_HOST }} | |
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} | |
- name: Connect to agent | |
run: | | |
chmod +x daemon.sh | |
echo "Staring agent daemon..." | |
./daemon.sh | |
env: | |
MAVEN_WAIT_TIMEOUT: ${{ inputs.MAVEN_WAIT_TIMEOUT }} | |
AGENT_HOST: ${{ inputs.AGENT_HOST }} | |
AGENT_FORWARD_PORT: ${{ inputs.AGENT_FORWARD_PORT }} | |
- name: Stop runner | |
if: always() | |
run: | | |
echo "Job has been stopped" |