Files
rocky-man/Jenkinsfile
2025-11-25 08:28:52 -06:00

143 lines
3.7 KiB
Groovy

// Jenkinsfile for Rocky Man
// This pipeline uses Kubernetes agents to build and run the container
pipeline {
agent {
kubernetes {
yaml """
apiVersion: v1
kind: Pod
metadata:
labels:
jenkins: agent
spec:
containers:
- name: docker
image: docker:24-dind
securityContext:
privileged: true
volumeMounts:
- name: docker-sock
mountPath: /var/run
command:
- dockerd-entrypoint.sh
- name: docker-cli
image: docker:24-cli
command:
- cat
tty: true
volumeMounts:
- name: docker-sock
mountPath: /var/run
- name: b2
image: backblazeit/b2:latest
command:
- cat
tty: true
volumes:
- name: docker-sock
emptyDir: {}
"""
}
}
parameters {
string(
name: 'VERSIONS',
defaultValue: '8.10 9.6 10.0',
description: 'Rocky Linux versions to build (space-separated)'
)
string(
name: 'B2_BUCKET_NAME',
defaultValue: 'rockyman',
description: 'B2 bucket name for uploads'
)
}
options {
buildDiscarder(logRotator(numToKeepStr: '10'))
timeout(time: 2, unit: 'HOURS')
}
stages {
stage('Checkout') {
steps {
checkout scm
}
}
stage('Build Docker Image') {
steps {
container('docker-cli') {
sh '''
docker build -t rocky-man:${BUILD_NUMBER} .
docker tag rocky-man:${BUILD_NUMBER} rocky-man:latest
'''
}
}
}
stage('Build Man Pages') {
steps {
container('docker-cli') {
sh """
# Create output directories
mkdir -p ./html ./tmp
# Run the container to build man pages
docker run --rm \
-v "\$(pwd)/html:/app/html" \
-v "\$(pwd)/tmp:/data/tmp" \
rocky-man:${BUILD_NUMBER} \
--versions ${params.VERSIONS} \
--verbose
"""
}
}
}
#stage('Archive Artifacts') {
# steps {
# archiveArtifacts artifacts: 'html/**/*', fingerprint: true
# }
#}
stage('Upload to B2') {
steps {
container('b2') {
withCredentials([
string(credentialsId: 'b2-app-id', variable: 'B2_APPLICATION_ID'),
string(credentialsId: 'b2-app-key', variable: 'B2_APPLICATION_KEY')
]) {
sh '''
b2 authorize-account ${B2_APPLICATION_ID} ${B2_APPLICATION_KEY}
b2 sync \
--allowEmptySource \
--compareVersions size \
./html/ \
b2://${B2_BUCKET_NAME}/builds/${BUILD_NUMBER}/
'''
}
}
}
}
}
post {
success {
echo 'Build completed successfully and uploaded to B2!'
}
failure {
echo 'Build failed!'
}
cleanup {
container('docker-cli') {
sh '''
# Clean up Docker images to save space
docker rmi rocky-man:${BUILD_NUMBER} || true
docker rmi rocky-man:latest || true
'''
}
}
}
}