Centreon Monitoring Agent Windows build and packaging #788
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Centreon Monitoring Agent Windows build and packaging | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
on: | |
workflow_dispatch: | |
inputs: | |
installer_in_artifact: | |
description: 'Save installer and binary in artifacts' | |
required: true | |
default: false | |
type: boolean | |
pull_request: | |
paths: | |
- agent/** | |
- common/** | |
- custom-triplets/** | |
- CMakeLists.txt | |
- CMakeListsWindows.txt | |
- vcpkg.json | |
push: | |
branches: | |
- develop | |
- dev-[2-9][0-9].[0-9][0-9].x | |
- master | |
- "[2-9][0-9].[0-9][0-9].x" | |
paths: | |
- agent/** | |
- common/** | |
- custom-triplets/** | |
- CMakeLists.txt | |
- CMakeListsWindows.txt | |
- vcpkg.json | |
jobs: | |
get-environment: | |
uses: ./.github/workflows/get-environment.yml | |
with: | |
version_file: CMakeLists.txt | |
build-and-test-agent: | |
needs: [get-environment] | |
runs-on: windows-latest | |
env: | |
AWS_ACCESS_KEY_ID: ${{ secrets.COLLECT_S3_ACCESS_KEY }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.COLLECT_S3_SECRET_KEY }} | |
steps: | |
- uses: jfrog/setup-jfrog-cli@26da2259ee7690e63b5410d7451b2938d08ce1f9 # v4.0.0 | |
env: | |
JF_URL: https://centreon.jfrog.io | |
JF_ACCESS_TOKEN: ${{ secrets.ARTIFACTORY_ACCESS_TOKEN }} | |
# in order to have the same checksum between windows-agent and windows-agent-robot-test | |
- name: No crlf conversion | |
run: git config --system core.autocrlf false | |
- name: Checkout sources | |
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 | |
- name: Compile Agent only | |
run: .github/scripts/windows-agent-compile.ps1 | |
shell: powershell | |
- name: Common test | |
run: | | |
cd build_windows | |
tests/ut_common | |
- name: Agent test | |
run: | | |
cd build_windows | |
tests/ut_agent | |
- name: Sign agent | |
if: | | |
contains(fromJson('["unstable", "testing"]'), needs.get-environment.outputs.stability) && | |
! cancelled() && | |
! contains(needs.*.result, 'failure') && | |
! contains(needs.*.result, 'cancelled') | |
uses: azure/[email protected] | |
with: | |
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} | |
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} | |
azure-client-secret: ${{ secrets.AZURE_CLIENT_SECRET }} | |
endpoint: https://weu.codesigning.azure.net/ | |
trusted-signing-account-name: Centreon-signature-RD | |
certificate-profile-name: Cert-Signature-RD | |
files-folder: build_windows\agent\Release | |
files-folder-filter: centagent.exe | |
files-folder-recurse: false | |
file-digest: SHA256 | |
timestamp-rfc3161: http://timestamp.acs.microsoft.com | |
timestamp-digest: SHA256 | |
- name: Build modifier | |
run: | | |
cmake -DCMAKE_BUILD_TYPE=Release -DWITH_TESTING=On -DWINDOWS=On -DBUILD_FROM_CACHE=On -S. -DVCPKG_CRT_LINKAGE=dynamic -DBUILD_SHARED_LIBS=OFF -DWITH_BUILD_AGENT_MODIFIER=On -Bbuild_windows | |
cmake --build build_windows --config Release | |
- name: Sign modifier | |
if: | | |
contains(fromJson('["unstable", "testing"]'), needs.get-environment.outputs.stability) && | |
! cancelled() && | |
! contains(needs.*.result, 'failure') && | |
! contains(needs.*.result, 'cancelled') | |
uses: azure/[email protected] | |
with: | |
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} | |
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} | |
azure-client-secret: ${{ secrets.AZURE_CLIENT_SECRET }} | |
endpoint: https://weu.codesigning.azure.net/ | |
trusted-signing-account-name: Centreon-signature-RD | |
certificate-profile-name: Cert-Signature-RD | |
files-folder: agent\installer | |
files-folder-filter: centreon-monitoring-agent-modify.exe | |
file-digest: SHA256 | |
timestamp-rfc3161: http://timestamp.acs.microsoft.com | |
timestamp-digest: SHA256 | |
- name: Build installer | |
run: | | |
cmake -DCMAKE_BUILD_TYPE=Release -DWITH_TESTING=On -DWINDOWS=On -DBUILD_FROM_CACHE=On -S. -DVCPKG_CRT_LINKAGE=dynamic -DBUILD_SHARED_LIBS=OFF -DWITH_BUILD_AGENT_INSTALLER=On -Bbuild_windows | |
cmake --build build_windows --config Release | |
- name: Sign installer | |
if: | | |
contains(fromJson('["unstable", "testing"]'), needs.get-environment.outputs.stability) && | |
! cancelled() && | |
! contains(needs.*.result, 'failure') && | |
! contains(needs.*.result, 'cancelled') | |
uses: azure/[email protected] | |
with: | |
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} | |
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} | |
azure-client-secret: ${{ secrets.AZURE_CLIENT_SECRET }} | |
endpoint: https://weu.codesigning.azure.net/ | |
trusted-signing-account-name: Centreon-signature-RD | |
certificate-profile-name: Cert-Signature-RD | |
files-folder: agent\installer | |
files-folder-filter: centreon-monitoring-agent.exe | |
file-digest: SHA256 | |
timestamp-rfc3161: http://timestamp.acs.microsoft.com | |
timestamp-digest: SHA256 | |
- name: Installer test | |
run: .github/scripts/agent_installer_test.ps1 | |
shell: powershell | |
- name: Upload package artifacts | |
if: | | |
inputs.installer_in_artifact == true || | |
(github.event_name != 'workflow_dispatch' && | |
contains(fromJson('["stable"]'), needs.get-environment.outputs.stability) && | |
! cancelled() && | |
! contains(needs.*.result, 'failure') && | |
! contains(needs.*.result, 'cancelled')) | |
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 | |
with: | |
name: packages-centreon-monitoring-agent-windows | |
path: | | |
agent\installer\centreon-monitoring-agent.exe | |
build_windows\agent\Release\centagent.exe | |
- name: Deliver | |
if: | | |
contains(fromJson('["unstable", "testing"]'), needs.get-environment.outputs.stability) && | |
! cancelled() && | |
! contains(needs.*.result, 'failure') && | |
! contains(needs.*.result, 'cancelled') | |
run: | | |
Write-Host "[DEBUG] deliver to testing - Major version: ${{ needs.get-environment.outputs.major_version }}" | |
Write-Host "[DEBUG] deliver to testing - Minor version: ${{ needs.get-environment.outputs.minor_version }}" | |
$VERSION = "${{ needs.get-environment.outputs.major_version }}.${{ needs.get-environment.outputs.minor_version }}" | |
$MODULE_NAME = "monitoring-agent-$VERSION" | |
$STABILITY = "${{ needs.get-environment.outputs.stability }}" | |
$TARGET_PATH = "installers/monitoring-agent/${{ needs.get-environment.outputs.major_version }}/$STABILITY/$MODULE_NAME/" | |
$VERSION_EXE = "centreon-monitoring-agent-${VERSION}.exe" | |
Copy-Item -Path "agent\installer\centreon-monitoring-agent.exe" -Destination "${VERSION_EXE}" | |
Write-Host "[DEBUG] deliver testing to - Target path: ${TARGET_PATH}" | |
jf rt upload $VERSION_EXE "${TARGET_PATH}" --sync-deletes="${TARGET_PATH}" | |
- name: Promote testing to stable | |
if: | | |
needs.get-environment.outputs.stability == 'stable' && github.event_name != 'workflow_dispatch' && ! cancelled() | |
run: | | |
Write-Host "[DEBUG] promote to stable - Major version: ${{ needs.get-environment.outputs.major_version }}" | |
Write-Host "[DEBUG] promote to stable - Minor version: ${{ needs.get-environment.outputs.minor_version }}" | |
$VERSION= "${{ needs.get-environment.outputs.major_version }}.${{ needs.get-environment.outputs.minor_version }}" | |
$MODULE_NAME= "monitoring-agent-${{ needs.get-environment.outputs.major_version }}.${{ needs.get-environment.outputs.minor_version }}" | |
$STABILITY= "${{ needs.get-environment.outputs.stability }}" | |
$SRC_PATH = "installers/monitoring-agent/${{ needs.get-environment.outputs.major_version }}/testing/$MODULE_NAME/" | |
$TARGET_PATH = "installers/monitoring-agent/${{ needs.get-environment.outputs.major_version }}/$STABILITY/$MODULE_NAME/" | |
$VERSION_EXE = "centreon-monitoring-agent-${VERSION}.exe" | |
Write-Host "[DEBUG] promote to stable from: ${SRC_PATH}${VERSION_EXE}" | |
jf rt download "${SRC_PATH}${VERSION_EXE}" --flat | |
Write-Host "[DEBUG] promote to stable ${VERSION_EXE} to path: ${TARGET_PATH}" | |
jf rt upload $VERSION_EXE "${TARGET_PATH}" --sync-deletes="${TARGET_PATH}" | |
shell: powershell |