78 lines
1.9 KiB
Groovy
78 lines
1.9 KiB
Groovy
// Mirror of ci/Jenkinsfile.titan-iac for multibranch discovery.
|
|
pipeline {
|
|
agent {
|
|
kubernetes {
|
|
defaultContainer 'python'
|
|
yaml """
|
|
apiVersion: v1
|
|
kind: Pod
|
|
spec:
|
|
nodeSelector:
|
|
hardware: rpi5
|
|
kubernetes.io/arch: arm64
|
|
node-role.kubernetes.io/worker: "true"
|
|
containers:
|
|
- name: python
|
|
image: python:3.12-slim
|
|
command:
|
|
- cat
|
|
tty: true
|
|
"""
|
|
}
|
|
}
|
|
environment {
|
|
PIP_DISABLE_PIP_VERSION_CHECK = '1'
|
|
PYTHONUNBUFFERED = '1'
|
|
}
|
|
stages {
|
|
stage('Checkout') {
|
|
steps {
|
|
checkout scm
|
|
}
|
|
}
|
|
stage('Install deps') {
|
|
steps {
|
|
sh 'pip install --no-cache-dir -r ci/requirements.txt'
|
|
}
|
|
}
|
|
stage('Glue tests') {
|
|
steps {
|
|
sh 'pytest -q ci/tests/glue'
|
|
}
|
|
}
|
|
stage('Resolve Flux branch') {
|
|
steps {
|
|
script {
|
|
env.FLUX_BRANCH = sh(
|
|
returnStdout: true,
|
|
script: "awk '/branch:/{print $2; exit}' clusters/atlas/flux-system/gotk-sync.yaml"
|
|
).trim()
|
|
if (!env.FLUX_BRANCH) {
|
|
error('Flux branch not found in gotk-sync.yaml')
|
|
}
|
|
echo "Flux branch: ${env.FLUX_BRANCH}"
|
|
}
|
|
}
|
|
}
|
|
stage('Promote') {
|
|
when {
|
|
expression {
|
|
def branch = env.BRANCH_NAME ?: (env.GIT_BRANCH ?: '').replaceFirst('origin/', '')
|
|
return env.FLUX_BRANCH && branch == env.FLUX_BRANCH
|
|
}
|
|
}
|
|
steps {
|
|
withCredentials([usernamePassword(credentialsId: 'gitea-pat', usernameVariable: 'GIT_USER', passwordVariable: 'GIT_TOKEN')]) {
|
|
sh '''
|
|
set +x
|
|
git config user.email "jenkins@bstein.dev"
|
|
git config user.name "jenkins"
|
|
git remote set-url origin https://${GIT_USER}:${GIT_TOKEN}@scm.bstein.dev/bstein/titan-iac.git
|
|
git push origin HEAD:${FLUX_BRANCH}
|
|
'''
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|