From 29f299f984d513bb2dc2413bab735ecc84072463 Mon Sep 17 00:00:00 2001 From: Stephen Simpson Date: Mon, 24 Nov 2025 15:19:32 -0600 Subject: [PATCH] Remove GitHub Pages deployment step from build workflow and add Jenkinsfile for Kubernetes-based builds Signed-off-by: Stephen Simpson --- .github/workflows/build.yml | 8 --- Jenkinsfile | 114 ++++++++++++++++++++++++++++++++++++ 2 files changed, 114 insertions(+), 8 deletions(-) create mode 100644 Jenkinsfile diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a550712..b40a5c2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -55,11 +55,3 @@ jobs: name: rocky-man-pages path: html/ retention-days: 30 - - - name: Deploy to GitHub Pages - if: github.ref == 'refs/heads/main' - uses: peaceiris/actions-gh-pages@v3 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./html - force_orphan: true diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..b0f6b10 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,114 @@ +// 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 + volumes: + - name: docker-sock + emptyDir: {} +""" + } + } + + parameters { + string( + name: 'VERSIONS', + defaultValue: '8.10 9.6 10.0', + description: 'Rocky Linux versions to build (space-separated)' + ) + } + + options { + buildDiscarder(logRotator(numToKeepStr: '10')) + timeout(time: 2, unit: 'HOURS') + timestamps() + } + + 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:/data/html" \ + -v "$(pwd)/tmp:/data/tmp" \ + rocky-man:${BUILD_NUMBER} \ + --versions ${VERSIONS} \ + --verbose + ''' + } + } + } + + stage('Archive Artifacts') { + steps { + archiveArtifacts artifacts: 'html/**/*', fingerprint: true + } + } + } + + post { + success { + echo 'Build completed successfully!' + } + 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 + ''' + } + } + } +}