Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Centreon 24.04 #1034

Merged
merged 20 commits into from
Apr 21, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
293 changes: 293 additions & 0 deletions .github/workflows/build-release-latest-test-artifacts.yml_deactivated
Original file line number Diff line number Diff line change
@@ -0,0 +1,293 @@
name: build-release-latest
on:
push:
tags-ignore: 'v*'
branches:
- '**'
- '!master'
- '!*.*.*'

env:
python_win_version: 3.11.8
repo_dir: nagstamon-jekyll/docs/repo
cr_image: ghcr.io/henriwahl/build-nagstamon
# to be increased if new updates of build images are necessary
cr_image_version: 4
# release type this file is used for
release: latest

jobs:
debian:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# docker login is needed for pushing the build image
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
# if image defined by variable cr_image_version is not pullable aka does not exist it will be created and pushed
- run: docker pull ${{ env.cr_image }}-${{ github.job }}:${{ env.cr_image_version }} || /usr/bin/docker build -t ${{ env.cr_image }}-${{ github.job }}:${{ env.cr_image_version }} -f build/docker/Dockerfile-${{ github.job }} .
- run: docker push ${{ env.cr_image }}-${{ github.job }}:${{ env.cr_image_version }}
# building in precompiled image makes them way faster instead of creating the build environment every time from scratch
- run: /usr/bin/docker run -v ${{ github.workspace }}:/nagstamon -e DEB_BUILD_OPTIONS=nocheck ${{ env.cr_image }}-${{ github.job }}:${{ env.cr_image_version }}
- uses: actions/upload-artifact@v4
with:
path: build/*.deb
retention-days: 1
if-no-files-found: error
name: ${{ github.job }}

fedora-37:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# docker login is needed for pushing the build image
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
# if image defined by variable cr_image_version is not pullable aka does not exist it will be created and pushed
- run: docker pull ${{ env.cr_image }}-${{ github.job }}:${{ env.cr_image_version }} || /usr/bin/docker build -t ${{ env.cr_image }}-${{ github.job }}:${{ env.cr_image_version }} -f build/docker/Dockerfile-${{ github.job }} .
- run: docker push ${{ env.cr_image }}-${{ github.job }}:${{ env.cr_image_version }}
# building in precompiled image makes them way faster instead of creating the build environment every time from scratch
- run: /usr/bin/docker run -v ${{ github.workspace }}:/nagstamon ${{ env.cr_image }}-${{ github.job }}:${{ env.cr_image_version }}
- uses: actions/upload-artifact@v4
with:
path: build/*.rpm
retention-days: 1
if-no-files-found: error
name: ${{ github.job }}

fedora-38:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# docker login is needed for pushing the build image
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
# if image defined by variable cr_image_version is not pullable aka does not exist it will be created and pushed
- run: docker pull ${{ env.cr_image }}-${{ github.job }}:${{ env.cr_image_version }} || /usr/bin/docker build -t ${{ env.cr_image }}-${{ github.job }}:${{ env.cr_image_version }} -f build/docker/Dockerfile-${{ github.job }} .
- run: docker push ${{ env.cr_image }}-${{ github.job }}:${{ env.cr_image_version }}
# building in precompiled image makes them way faster instead of creating the build environment every time from scratch
- run: /usr/bin/docker run -v ${{ github.workspace }}:/nagstamon ${{ env.cr_image }}-${{ github.job }}:${{ env.cr_image_version }}
- uses: actions/upload-artifact@v4
with:
path: build/*.rpm
retention-days: 1
if-no-files-found: error
name: ${{ github.job }}

fedora-39:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# docker login is needed for pushing the build image
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
# if image defined by variable cr_image_version is not pullable aka does not exist it will be created and pushed
- run: docker pull ${{ env.cr_image }}-${{ github.job }}:${{ env.cr_image_version }} || /usr/bin/docker build -t ${{ env.cr_image }}-${{ github.job }}:${{ env.cr_image_version }} -f build/docker/Dockerfile-${{ github.job }} .
- run: docker push ${{ env.cr_image }}-${{ github.job }}:${{ env.cr_image_version }}
# building in precompiled image makes them way faster instead of creating the build environment every time from scratch
- run: /usr/bin/docker run -v ${{ github.workspace }}:/nagstamon ${{ env.cr_image }}-${{ github.job }}:${{ env.cr_image_version }}
- uses: actions/upload-artifact@v4
with:
path: build/*.rpm
retention-days: 1
if-no-files-found: error
name: ${{ github.job }}

fedora-40:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# docker login is needed for pushing the build image
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
# if image defined by variable cr_image_version is not pullable aka does not exist it will be created and pushed
- run: docker pull ${{ env.cr_image }}-${{ github.job }}:${{ env.cr_image_version }} || /usr/bin/docker build -t ${{ env.cr_image }}-${{ github.job }}:${{ env.cr_image_version }} -f build/docker/Dockerfile-${{ github.job }} .
- run: docker push ${{ env.cr_image }}-${{ github.job }}:${{ env.cr_image_version }}
# building in precompiled image makes them way faster instead of creating the build environment every time from scratch
- run: /usr/bin/docker run -v ${{ github.workspace }}:/nagstamon ${{ env.cr_image }}-${{ github.job }}:${{ env.cr_image_version }}
- uses: actions/upload-artifact@v4
with:
path: build/*.rpm
retention-days: 1
if-no-files-found: error
name: ${{ github.job }}

fedora-41:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# docker login is needed for pushing the build image
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
# if image defined by variable cr_image_version is not pullable aka does not exist it will be created and pushed
- run: docker pull ${{ env.cr_image }}-${{ github.job }}:${{ env.cr_image_version }} || /usr/bin/docker build -t ${{ env.cr_image }}-${{ github.job }}:${{ env.cr_image_version }} -f build/docker/Dockerfile-${{ github.job }} .
- run: docker push ${{ env.cr_image }}-${{ github.job }}:${{ env.cr_image_version }}
# building in precompiled image makes them way faster instead of creating the build environment every time from scratch
- run: /usr/bin/docker run -v ${{ github.workspace }}:/nagstamon ${{ env.cr_image }}-${{ github.job }}:${{ env.cr_image_version }}
- uses: actions/upload-artifact@v4
with:
path: build/*.rpm
retention-days: 1
if-no-files-found: error
name: ${{ github.job }}

rhel-9:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# docker login is needed for pushing the build image
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
# if image defined by variable cr_image_version is not pullable aka does not exist it will be created and pushed
- run: docker pull ${{ env.cr_image }}-${{ github.job }}:${{ env.cr_image_version }} || /usr/bin/docker build -t ${{ env.cr_image }}-${{ github.job }}:${{ env.cr_image_version }} -f build/docker/Dockerfile-${{ github.job }} .
- run: docker push ${{ env.cr_image }}-${{ github.job }}:${{ env.cr_image_version }}
# building in precompiled image makes them way faster instead of creating the build environment every time from scratch
- run: /usr/bin/docker run -v ${{ github.workspace }}:/nagstamon ${{ env.cr_image }}-${{ github.job }}:${{ env.cr_image_version }}
- uses: actions/upload-artifact@v4
with:
path: build/*.rpm
retention-days: 1
if-no-files-found: error
name: ${{ github.job }}

# borrowed from dhcpy6d
repo-debian:
runs-on: ubuntu-latest
# try to avoid race condition and start uploading only after the last install package has been build
needs: [debian, fedora-37, fedora-38, fedora-39, fedora-40, fedora-41, rhel-9]
env:
family: debian
steps:
- uses: actions/checkout@v4
# get binaries created by other jobs
- uses: actions/download-artifact@v4
with:
pattern: 'debian*'
path: artifact
merge-multiple: true
- run: pwd
- run: find . -name '*.deb'
# get secret signing key
- run: echo "${{ secrets.PACKAGE_SIGNING_KEY }}" > signing_key.asc
# organize SSH deploy key for nagstamon-jekyll repo
- run: mkdir ~/.ssh
- run: echo "${{ secrets.NAGSTAMON_REPO_KEY_WEB }}" > ~/.ssh/id_ed25519
- run: chmod -R go-rwx ~/.ssh
# get and prepare nagstamon-jekyll
- run: git clone [email protected]:HenriWahl/nagstamon-jekyll.git
- run: rm -rf ${{ env.repo_dir }}/${{ env.family }}/${{ env.dist }}/${{ env.release }}
- run: mkdir -p ${{ env.repo_dir }}/${{ env.family }}/${{ env.dist }}/${{ env.release }}
# create deb repo via Debian build container
- run: |
/usr/bin/docker run --rm \
-v ${{ github.workspace }}:/workspace \
-v $PWD/${{ env.repo_dir }}/${{ env.family }}/${{ env.release }}:/repo \
${{ env.cr_image }}-${{ env.family }}:${{ env.cr_image_version }} \
/bin/sh -c "cd /workspace && \
gpg --import signing_key.asc && \
cp -r artifact/*.deb nagstamon-jekyll/docs/repo/${{ env.family }}/${{ env.release }} && \
cd nagstamon-jekyll/docs/repo/${{ env.family }}/${{ env.release }}
dpkg-scanpackages . > Packages && \
gzip -k -f Packages && \
apt-ftparchive release . > Release && \
gpg -abs -o Release.gpg Release && \
gpg --clearsign -o InRelease Release && \
gpg --output key.gpg --armor --export"
# commit and push new binaries to nagstamon-jekyll
- run: git config --global user.email "[email protected]" && git config --global user.name "Nagstamon Repository"
- run: cd ${{ env.repo_dir }} && git add . && git commit -am "new ${{ env.release }} repo ${{ env.family }}" && git push

repo-rpm-fedora:
runs-on: ubuntu-latest
# if not all are ready there might be trouble when downloading artifacts
# maybe faster now with build containers
needs: [repo-debian]
env:
family: fedora
# which image to use for packaging
cr_image_latest: 39
steps:
# get binaries created by other jobs
- uses: actions/download-artifact@v4
with:
pattern: 'fedora*'
path: artifact
merge-multiple: true
# organize SSH deploy key for nagstamon-repo
- run: mkdir ~/.ssh
- run: echo "${{ secrets.NAGSTAMON_REPO_KEY_WEB }}" > ~/.ssh/id_ed25519
- run: chmod -R go-rwx ~/.ssh
# get and prepare nagstamon-jekyll
- run: git clone [email protected]:HenriWahl/nagstamon-jekyll.git
- run: rm -rf ${{ env.repo_dir }}/${{ env.family }}/${{ env.release }}
- run: mkdir -p ${{ env.repo_dir }}/${{ env.family }}/${{ env.release }}
# copy *.rpm files into nagstamon-jekyll and create repodata
- run: |
version=${{ env.release }} && \
mkdir -p mkdir -p ${{ env.repo_dir }}/${{ env.family }}/${version} && \
cp -r artifact/*.${{ env.family }}* ${{ env.repo_dir }}/${{ env.family }}/${version} && \
docker run --rm -v ${PWD}/${{ env.repo_dir }}/${{ env.family }}/${version}:/repo \
${{ env.cr_image }}-${{ env.family }}-${{ env.cr_image_latest }}:${{ env.cr_image_version }} \
/bin/bash -c "createrepo --verbose --workers 1 /repo" && \
ls -laR ${PWD}/${{ env.repo_dir }}/${{ env.family }}/${version}
# commit and push new binaries to nagstamon-repo
- run: git config --global user.email "[email protected]" && git config --global user.name "Nagstamon Repository"
- run: cd ${{ env.repo_dir }} && git pull && git add . && git commit -am "new latest repo ${{ env.family }}" && git push

repo-rpm-rhel:
runs-on: ubuntu-latest
# if not all are ready there might be trouble when downloading artifacts
# maybe faster now with build containers
needs: [repo-rpm-fedora]
env:
family: rhel
# currently just one version available
version: 9
steps:
# get binaries created by other jobs
- uses: actions/download-artifact@v4
with:
pattern: 'rhel*'
path: artifact
merge-multiple: true
# organize SSH deploy key for nagstamon-repo
- run: mkdir ~/.ssh
- run: echo "${{ secrets.NAGSTAMON_REPO_KEY_WEB }}" > ~/.ssh/id_ed25519
- run: chmod -R go-rwx ~/.ssh
# get and prepare nagstamon-jekyll
- run: git clone [email protected]:HenriWahl/nagstamon-jekyll.git
- run: rm -rf ${{ env.repo_dir }}/${{ env.family }}/${{ env.release }}
- run: mkdir -p ${{ env.repo_dir }}/${{ env.family }}/${{ env.release }}
# copy *.rpm files into nagstamon-jekyll and create repodata
- run: |
version=${{ env.release }} && \
mkdir -p mkdir -p ${{ env.repo_dir }}/${{ env.family }}/${version} && \
cp -r artifact/*.${{ env.family }}* ${{ env.repo_dir }}/${{ env.family }}/${version} && \
docker run --rm -v ${PWD}/${{ env.repo_dir }}/${{ env.family }}/${version}:/repo \
${{ env.cr_image }}-${{ env.family }}-${{ env.version }}:${{ env.cr_image_version }} \
/bin/bash -c "createrepo --verbose --workers 1 /repo" && \
ls -laR ${PWD}/${{ env.repo_dir }}/${{ env.family }}/${version}
# commit and push new binaries to nagstamon-repo
- run: git config --global user.email "[email protected]" && git config --global user.name "Nagstamon Repository"
- run: cd ${{ env.repo_dir }} && git pull && git add . && git commit -am "new latest repo ${{ env.family }}" && git push
Loading
Loading