chore(ci): add workflow to package centreon vmware connector

This commit is contained in:
Kevin Duret 2023-05-19 13:32:38 +02:00
parent 14b4494f1a
commit b5bd43e74f
9 changed files with 335 additions and 18 deletions

View File

@ -2,9 +2,15 @@ ARG REGISTRY_URL
FROM ${REGISTRY_URL}/almalinux:8
RUN <<EOF
RUN bash -e <<EOF
dnf -y install git gettext rpm-build dos2unix python3 epel-release
echo '[goreleaser]
name=GoReleaser
baseurl=https://repo.goreleaser.com/yum/
enabled=1
gpgcheck=0' | tee /etc/yum.repos.d/goreleaser.repo
dnf -y install git gettext rpm-build dos2unix python3 epel-release nfpm
dnf -y install perl-App-cpanminus perl-JSON
cpanm App::FatPacker
cpanm File::Copy::Recursive

View File

@ -2,9 +2,15 @@ ARG REGISTRY_URL
FROM ${REGISTRY_URL}/almalinux:9
RUN <<EOF
RUN bash -e <<EOF
dnf -y install git gettext rpm-build dos2unix python3 epel-release
echo '[goreleaser]
name=GoReleaser
baseurl=https://repo.goreleaser.com/yum/
enabled=1
gpgcheck=0' | tee /etc/yum.repos.d/goreleaser.repo
dnf -y install git gettext rpm-build dos2unix python3 epel-release nfpm
dnf -y install perl-App-cpanminus perl-JSON
cpanm App::FatPacker
cpanm File::Copy::Recursive

View File

@ -2,8 +2,10 @@ ARG REGISTRY_URL
FROM ${REGISTRY_URL}/debian:bullseye
ENV DEBIAN_FRONTEND noninteractive
# fix locale
RUN <<EOF
RUN bash -e <<EOF
apt-get update
apt-get install -y locales
@ -15,12 +17,14 @@ EOF
ENV LANG en_US.utf8
RUN <<EOF
RUN bash -e <<EOF
apt-get update
apt-get install -y \
dh-make \
aptitude \
ca-certificates \
lintian \
pbuilder \
quilt \
@ -35,6 +39,11 @@ apt-get install -y \
libapp-fatpacker-perl \
libfile-copy-recursive-perl \
jq
echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | tee /etc/apt/sources.list.d/goreleaser.list
apt-get update
apt-get install -y nfpm
apt-get clean
EOF

View File

@ -2,9 +2,15 @@ ARG REGISTRY_URL
FROM ${REGISTRY_URL}/centos:7
RUN <<EOF
RUN bash -e <<EOF
yum -y install git gettext rpm-build dos2unix python3 epel-release
echo '[goreleaser]
name=GoReleaser
baseurl=https://repo.goreleaser.com/yum/
enabled=1
gpgcheck=0' | tee /etc/yum.repos.d/goreleaser.repo
yum -y install git gettext rpm-build dos2unix python3 epel-release nfpm
yum -y install perl-App-FatPacker perl-File-Copy-Recursive perl-JSON
yum clean all

57
.github/workflows/connector-vmware.yml vendored Normal file
View File

@ -0,0 +1,57 @@
name: connector-vmware
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
on:
workflow_dispatch:
pull_request:
paths:
- 'connectors/vmware/src'
- 'connectors/vmware/packaging'
push:
branches:
- develop
- master
paths:
- 'connectors/vmware/src'
- 'connectors/vmware/packaging'
tags:
- centreon-connector-vmware-*
jobs:
get-environment:
uses: ./.github/workflows/get-environment.yml
with:
version_file: connectors/vmware/src/centreon/script/centreon_vmware.pm
package:
needs:
- get-environment
strategy:
fail-fast: false
matrix:
include:
- package_extension: rpm
image: packaging-plugins-alma8
distrib: el8
- package_extension: rpm
image: packaging-plugins-alma9
distrib: el9
- package_extension: deb
image: packaging-plugins-bullseye
distrib: bullseye
name: package ${{ matrix.distrib }}
uses: ./.github/workflows/package.yml
with:
module_directory: centreon-license-manager
nfpm_file_pattern: "centreon-license-manager/packaging/*.yaml"
distrib: ${{ matrix.distrib }}
package_extension: ${{ matrix.package_extension }}
image_name: ${{ matrix.image }}
version: ${{ needs.get-environment.outputs.version }}
release: ${{ needs.get-environment.outputs.release }}
cache_key: ${{ github.sha }}-${{ github.run_id }}-${{ matrix.package_extension }}-${{ matrix.distrib }}
secrets: inherit

View File

@ -1,5 +1,9 @@
on:
workflow_call:
inputs:
version_file:
required: false
type: string
outputs:
stability:
description: "branch stability (stable, testing, unstable, canary)"
@ -45,9 +49,13 @@ jobs:
echo "stability=$STABILITY" >> $GITHUB_OUTPUT
VERSION=`date '+%Y%m%d'`
if [[ "${{ inputs.version_file }}" == "" ]]; then
VERSION=$(date '+%Y%m%d')
else
VERSION=$(grep VERSION ${{ inputs.version_file }} | cut -d "'" -f 2)
fi
echo "version=$(echo $VERSION)" >> $GITHUB_OUTPUT
RELEASE=`date '+%H%M%S'`
RELEASE=$(date '+%H%M%S')
echo "release=$(echo $RELEASE)" >> $GITHUB_OUTPUT
shell: bash

139
.github/workflows/package.yml vendored Normal file
View File

@ -0,0 +1,139 @@
on:
workflow_call:
inputs:
module_directory:
type: string
description: The module directory
required: true
nfpm_file_pattern:
type: string
description: The pattern of the nfpm configuration file(s)
required: true
distrib:
type: string
description: The distrib
required: true
package_extension:
type: string
description: The package extension (deb or rpm)
required: true
image_name:
type: string
description: The image name
required: true
version:
type: string
description: The package version
required: true
release:
type: string
description: The release number
required: true
cache_key:
type: string
description: The package files cache key
required: true
jobs:
package:
runs-on: ubuntu-22.04
container:
image: ${{ vars.DOCKER_INTERNAL_REGISTRY_URL }}/${{ inputs.image_name }}
credentials:
username: ${{ secrets.DOCKER_REGISTRY_ID }}
password: ${{ secrets.DOCKER_REGISTRY_PASSWD }}
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Replace git sources by encoded files
if: "${{ inputs.encode_cache_key != '' }}"
run: |
rm -rf ${{ inputs.module_directory }}
tar zxf ${{ inputs.module_directory }}-${{ inputs.major_version }}.${{ inputs.minor_version }}.tar.gz
rm -f ${{ inputs.module_directory }}-${{ inputs.major_version }}.${{ inputs.minor_version }}.tar.gz
mv ${{ inputs.module_directory }}-${{ inputs.major_version }}.${{ inputs.minor_version }} ${{ inputs.module_directory }}
shell: bash
- name: Restore static directory cache
if: "${{ inputs.frontend_static_directory != '' && inputs.frontend_static_cache_key != '' }}"
uses: actions/cache@v3
with:
path: ${{ inputs.frontend_static_directory }}
key: ${{ inputs.frontend_static_cache_key }}
fail-on-cache-miss: true
- name: Restore translation directory cache
if: "${{ inputs.translation_directory != '' && inputs.translation_cache_key != '' }}"
uses: actions/cache@v3
with:
path: ${{ inputs.translation_directory }}
key: ${{ inputs.translation_cache_key }}
fail-on-cache-miss: true
- name: Import gpg key
env:
RPM_GPG_SIGNING_KEY: ${{ secrets.RPM_GPG_SIGNING_KEY }}
run: echo -n "$RPM_GPG_SIGNING_KEY" > key.gpg
shell: bash
- name: Build ${{ inputs.package_extension }} files
env:
RPM_GPG_SIGNING_KEY_ID: ${{ secrets.RPM_GPG_SIGNING_KEY_ID }}
RPM_GPG_SIGNING_PASSPHRASE: ${{ secrets.RPM_GPG_SIGNING_PASSPHRASE }}
run: |
export MAJOR_VERSION="${{ inputs.major_version }}"
export VERSION="${{ inputs.major_version }}.${{ inputs.minor_version }}"
export RELEASE="${{ inputs.release }}"
if [ "${{ inputs.package_extension }}" = "rpm" ]; then
export DIST=".${{ inputs.distrib }}"
export APACHE_USER="apache"
export APACHE_GROUP="apache"
else
export DIST=""
export APACHE_USER="www-data"
export APACHE_GROUP="www-data"
fi
MAJOR_LEFT=$( echo $MAJOR_VERSION | cut -d "." -f1 )
MAJOR_RIGHT=$( echo $MAJOR_VERSION | cut -d "-" -f1 | cut -d "." -f2 )
BUMP_MAJOR_RIGHT=$(( MAJOR_RIGHT_PART + 1 ))
if [ "$MAJOR_RIGHT" = "04" ]; then
BUMP_MAJOR_LEFT="$MAJOR_LEFT"
BUMP_MAJOR_RIGHT="10"
else
BUMP_MAJOR_LEFT=$(( $MAJOR_LEFT + 1 ))
BUMP_MAJOR_RIGHT="04"
fi
export NEXT_MAJOR_VERSION="$BUMP_MAJOR_LEFT.$BUMP_MAJOR_RIGHT"
export RPM_SIGNING_KEY_FILE="$(pwd)/key.gpg"
export RPM_SIGNING_KEY_ID="$RPM_GPG_SIGNING_KEY_ID"
export NFPM_RPM_PASSPHRASE="$RPM_GPG_SIGNING_PASSPHRASE"
for FILE in ${{ inputs.nfpm_file_pattern }}; do
DIRNAME=$(dirname $FILE)
BASENAME=$(basename $FILE)
cd $DIRNAME
sed -i "s/@COMMIT_HASH@/${{ github.sha }}/g" $BASENAME
nfpm package --config $BASENAME --packager ${{ inputs.package_extension }}
cd -
mv $DIRNAME/*.${{ inputs.package_extension }} ./
done
shell: bash
- name: Upload package artifacts
uses: actions/upload-artifact@v3
with:
name: packages-${{ inputs.package_extension }}
path: ./*.${{ inputs.package_extension }}
retention-days: 1
- name: Cache packages
uses: actions/cache@v3
with:
path: ./*.${{ inputs.package_extension }}
key: ${{ inputs.cache_key }}

View File

@ -0,0 +1,93 @@
name: "centreon-plugin-Virtualization-VMWare-daemon"
arch: "all"
platform: "linux"
version_schema: "none"
version: "${VERSION}"
release: "${RELEASE}${DIST}"
section: "default"
priority: "optional"
maintainer: "Centreon <contact@centreon.com>"
description: |
Centreon VMWare connector to interact from centreon plugins to vmware sdk.
Commit: @COMMIT_HASH@
vendor: "Centreon"
homepage: "https://centreon.com"
license: "Apache-2.0"
replaces:
- ces-plugins-Virtualization-VMWare-daemon
- centreon-plugin-Virtualisation-VMWare-daemon
conflicts:
- ces-plugins-Virtualization-VMWare-daemon
- centreon-plugin-Virtualisation-VMWare-daemon
provides:
- ces-plugins-Virtualization-VMWare-daemon
- centreon-plugin-Virtualisation-VMWare-daemon
contents:
- src: "../src/centreon/vmware"
dst: "/usr/share/perl5/vendor_perl/centreon/vmware"
packager: rpm
- src: "../src/centreon/vmware"
dst: "/usr/share/perl5/centreon/vmware"
packager: deb
- src: "../src/centreon/script/centreon_vmware.pm"
dst: "/usr/share/perl5/vendor_perl/centreon/script/centreon_vmware.pm"
packager: rpm
- src: "../src/centreon/script/centreon_vmware.pm"
dst: "/usr/share/perl5/centreon/script/centreon_vmware.pm"
packager: deb
- src: "../src/centreon_vmware.pl"
dst: "/usr/bin/centreon_vmware.pl"
file_info:
mode: 0755
- src: "../redhat/centreon_vmware-systemd"
dst: "/etc/systemd/system/centreon_vmware.service"
file_info:
mode: 0755
packager: rpm
- src: "../debian/centreon_vmware-systemd"
dst: "/lib/systemd/system/centreon_vmware.service"
file_info:
mode: 0755
packager: deb
- src: "../redhat/centreon_vmware-sysconfig"
dst: "/etc/sysconfig/centreon_vmware"
packager: rpm
- src: "../debian/centreon_vmware-default"
dst: "/etc/default/centreon_vmware"
packager: deb
- src: "../config/centreon_vmware-conf.pm"
dst: "/etc/centreon/centreon_vmware.pm"
type: config|noreplace
overrides:
rpm:
depends:
- perl-VMware-vSphere >= 5.1
- perl(ZMQ::LibZMQ4)
- perl(ZMQ::Constants)
- perl(LWP::Protocol::https)
- perl(IO::Socket::INET6)
- perl(JSON::XS)
- perl-Net-Curl
deb:
depends:
- perl-vmware-vsphere
- zmq-libzmq4-perl
- libzmq-constants-perl
- liblwp-protocol-https-perl
- libio-socket-inet6-perl
- libjson-xs-perl
- libnet-curl-perl
- libtext-template-perl
rpm:
signature:
key_file: ${RPM_SIGNING_KEY_FILE}
key_id: ${RPM_SIGNING_KEY_ID}

View File

@ -1,9 +1,2 @@
# Configuration for /etc/init.d/centreon_vmware
# If run centcore at startup default: YES
RUN_AT_STARTUP="YES"
# Centreon user default: root
CENTREON_USER="root"
# centreon_vmware command line options
OPTIONS="--logfile=/var/log/centreon_vmware.log --severity=error"