Skip to content

Jenkins CI Runners #22851

Jenkins CI Runners

Jenkins CI Runners #22851

Workflow file for this run

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"