Skip to content

Commit

Permalink
chore(ci): package lua-curl (#1557) (#1562)
Browse files Browse the repository at this point in the history
  • Loading branch information
kduret authored Jul 24, 2024
1 parent 6653fe3 commit 9a276d6
Show file tree
Hide file tree
Showing 10 changed files with 304 additions and 13 deletions.
4 changes: 2 additions & 2 deletions .github/actions/package/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,8 @@ runs:
# Update if condition to true to get packages as artifacts
- if: ${{ false }}
name: Upload package artifacts
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4
with:
name: packages-${{ inputs.distrib }}
name: ${{ inputs.arch != '' && format('packages-{0}-{1}', inputs.distrib, inputs.arch) || format('packages-{0}', inputs.distrib) }}
path: ./*.${{ inputs.package_extension}}
retention-days: 1
5 changes: 0 additions & 5 deletions .github/actions/promote-to-stable/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,6 @@ inputs:
major_version:
description: "Centreon packaged major version"
required: true
minor_version:
description: "Centreon package minor version"
required: true
stability:
description: "The package stability (stable, testing, unstable)"
required: true
Expand Down Expand Up @@ -44,7 +41,6 @@ runs:
# DEBUG
echo "[DEBUG] - Major version: ${{ inputs.major_version }}"
echo "[DEBUG] - Minor version: ${{ inputs.minor_version }}"
echo "[DEBUG] - Distrib: ${{ inputs.distrib }}"
echo "[DEBUG] - release_cloud: ${{ inputs.release_cloud }}"
echo "[DEBUG] - release_type: ${{ inputs.release_type }}"
Expand Down Expand Up @@ -113,7 +109,6 @@ runs:
set -eux
echo "[DEBUG] - Major version: ${{ inputs.major_version }}"
echo "[DEBUG] - Minor version: ${{ inputs.minor_version }}"
echo "[DEBUG] - Distrib: ${{ inputs.distrib }}"
# Define ROOT_REPO_PATH for debian
Expand Down
2 changes: 2 additions & 0 deletions .github/scripts/collect-prepare-test-robot.sh
Original file line number Diff line number Diff line change
Expand Up @@ -63,10 +63,12 @@ cd tests
if [ "$distrib" = "ALMALINUX" ]; then
dnf groupinstall -y "Development Tools"
dnf install -y python3-devel
dnf clean all
else
apt-get update
apt-get install -y build-essential
apt-get install -y python3-dev
apt-get clean
fi


Expand Down
1 change: 0 additions & 1 deletion .github/workflows/centreon-collect.yml
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,6 @@ jobs:
module_name: collect
distrib: ${{ matrix.distrib }}
major_version: ${{ needs.get-version.outputs.major_version }}
minor_version: ${{ needs.get-version.outputs.minor_version }}
stability: ${{ needs.get-version.outputs.stability }}
github_ref_name: ${{ github.ref_name }}
release_type: ${{ needs.get-version.outputs.release_type }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/get-version.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ on:

jobs:
get-version:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
outputs:
major_version: ${{ steps.get_version.outputs.major_version }}
minor_version: ${{ steps.get_version.outputs.minor_version }}
Expand Down
1 change: 0 additions & 1 deletion .github/workflows/gorgone.yml
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,6 @@ jobs:
module_name: gorgone
distrib: ${{ matrix.distrib }}
major_version: ${{ needs.get-version.outputs.major_version }}
minor_version: ${{ needs.get-version.outputs.minor_version }}
stability: ${{ needs.get-version.outputs.stability }}
github_ref_name: ${{ github.ref_name }}
release_type: ${{ needs.get-version.outputs.release_type }}
Expand Down
1 change: 0 additions & 1 deletion .github/workflows/libzmq.yml
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,6 @@ jobs:
module_name: libzmq
distrib: ${{ matrix.distrib }}
major_version: ${{ needs.get-version.outputs.major_version }}
minor_version: ${{ needs.get-version.outputs.minor_version }}
stability: ${{ needs.get-version.outputs.stability }}
github_ref_name: ${{ github.ref_name }}
release_type: ${{ needs.get-version.outputs.release_type }}
Expand Down
244 changes: 244 additions & 0 deletions .github/workflows/lua-curl.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,244 @@
name: lua-curl

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

on:
workflow_dispatch:
pull_request:
paths:
- lua-curl/**
push:
branches:
- develop
- dev-[2-9][0-9].[0-9][0-9].x
- master
- "[2-9][0-9].[0-9][0-9].x"
paths:
- lua-curl/**

env:
major_version: 0.3
minor_version: 13
release: 10 # 10 for openssl 1.1.1 / 20 for openssl system

jobs:
get-version:
uses: ./.github/workflows/get-version.yml

package:
needs: [get-version]
if: ${{ needs.get-version.outputs.stability != 'stable' }}

strategy:
fail-fast: false
matrix:
include:
- package_extension: rpm
image: centreon-collect-alma8
distrib: el8
lua_version: 5.3
runner: ubuntu-24.04
arch: amd64
- package_extension: rpm
image: centreon-collect-alma9
distrib: el9
lua_version: 5.4
runner: ubuntu-24.04
arch: amd64
- package_extension: deb
image: centreon-collect-debian-bullseye
distrib: bullseye
lua_version: 5.3
runner: ubuntu-24.04
arch: amd64
- package_extension: deb
image: centreon-collect-debian-bullseye-arm64
distrib: bullseye
lua_version: 5.3
runner: ["self-hosted", "collect-arm64"]
arch: arm64

runs-on: ${{ matrix.runner }}

container:
image: ${{ vars.DOCKER_INTERNAL_REGISTRY_URL }}/${{ matrix.image }}:${{ needs.get-version.outputs.img_version }}
credentials:
username: ${{ secrets.DOCKER_REGISTRY_ID }}
password: ${{ secrets.DOCKER_REGISTRY_PASSWD }}

name: package ${{ matrix.distrib }} ${{ matrix.arch }}

steps:
- name: Checkout sources
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7

- name: Checkout sources of lua-curl
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
repository: Lua-cURL/Lua-cURLv3
path: lua-curl-src
ref: v${{ env.major_version }}.${{ env.minor_version }}

- name: Compile lua-curl and prepare packaging
run: |
if [ "${{ matrix.package_extension }}" == "rpm" ]; then
dnf install -y dnf-plugins-core
if [ "${{ matrix.distrib }}" == "el8" ]; then
dnf config-manager --set-enabled powertools
else
dnf config-manager --set-enabled crb
fi
dnf install -y make cmake gcc openssl openssl-devel libcurl-devel lua lua-devel python3-pip cpanminus
else
apt-get update
apt-get install -y make cmake gcc openssl libssl-dev libcurl4-openssl-dev lua${{ matrix.lua_version }} liblua${{ matrix.lua_version }} liblua${{ matrix.lua_version }}-dev python3-pip cpanminus
fi
cpanm -v \
IPC::Cmd \
Digest::SHA \
Thread::Queue \
IO::Socket::SSL \
File::Copy \
File::Compare
cd lua-curl-src
pip3 install conan==2.5.0
conan profile detect
cat <<'EOF' >> conanfile.txt
[requires]
libcurl/8.0.1
openssl/1.1.1t
zlib/1.2.13
[generators]
CMakeToolchain
[options]
libcurl/*:with_ca_bundle=/etc/ssl/certs/ca-bundle.crt
libcurl/*:with_ca_fallback=False
libcurl/*:with_ca_path=/etc/ssl/certs/
EOF
conan install . --build=missing --deployer=full_deploy
if [ "${{ matrix.package_extension }}" == "rpm" ]; then
sed -i "s#^CURL_LIBS.*#CURL_LIBS=-Lfull_deploy/host/libcurl/8.0.1/Release/x86_64/lib -l:libcurl.a -Lfull_deploy/host/openssl/1.1.1t/Release/x86_64/lib -l:libssl.a -l:libcrypto.a -Lfull_deploy/host/zlib/1.2.13/Release/x86_64/lib -l:libz.a -lpthread#" Makefile
else
sed -i "s#^CURL_LIBS.*#CURL_LIBS=-Lfull_deploy/host/libcurl/8.0.1/Release/x86_64/lib -l:libcurl.a -Lfull_deploy/host/openssl/1.1.1t/Release/x86_64/lib -l:libssl.a -l:libcrypto.a -Lfull_deploy/host/zlib/1.2.13/Release/x86_64/lib -l:libz.a -lpthread -I/usr/include/lua5.3#" Makefile
fi
make
cd ..
sed -i "s/@luaver@/${{ matrix.lua_version }}/g" lua-curl/packaging/lua-curl.yaml
shell: bash

- name: Package
uses: ./.github/actions/package
with:
nfpm_file_pattern: "lua-curl/packaging/lua-curl.yaml"
distrib: ${{ matrix.distrib }}
package_extension: ${{ matrix.package_extension }}
major_version: ${{ env.major_version }}
minor_version: ${{ env.minor_version }}
release: ${{ env.release }}
arch: ${{ matrix.arch }}
commit_hash: ${{ github.sha }}
cache_key: ${{ github.sha }}-${{ github.run_id }}-${{ matrix.package_extension }}-lua-curl-${{ matrix.distrib }}-${{ matrix.arch }}
rpm_gpg_key: ${{ secrets.RPM_GPG_SIGNING_KEY }}
rpm_gpg_signing_key_id: ${{ secrets.RPM_GPG_SIGNING_KEY_ID }}
rpm_gpg_signing_passphrase: ${{ secrets.RPM_GPG_SIGNING_PASSPHRASE }}
stability: ${{ needs.get-version.outputs.stability }}

deliver-rpm:
if: ${{ contains(fromJson('["testing", "unstable"]'), needs.get-version.outputs.stability) }}
needs: [get-version, package]
runs-on: ubuntu-22.04
strategy:
matrix:
include:
- distrib: el8
arch: amd64
- distrib: el9
arch: amd64
name: deliver ${{ matrix.distrib }} ${{ matrix.arch }}

steps:
- name: Checkout sources
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7

- name: Publish RPM packages
uses: ./.github/actions/rpm-delivery
with:
module_name: lua-curl
distrib: ${{ matrix.distrib }}
version: ${{ needs.get-version.outputs.major_version }}
artifactory_token: ${{ secrets.ARTIFACTORY_ACCESS_TOKEN }}
cache_key: ${{ github.sha }}-${{ github.run_id }}-rpm-lua-curl-${{ matrix.distrib }}-${{ matrix.arch }}
stability: ${{ needs.get-version.outputs.stability }}
release_type: ${{ needs.get-version.outputs.release_type }}
release_cloud: ${{ needs.get-version.outputs.release_cloud }}

deliver-deb:
if: ${{ contains(fromJson('["testing", "unstable"]'), needs.get-version.outputs.stability) }}
needs: [get-version, package]
runs-on: ubuntu-22.04
strategy:
matrix:
include:
- distrib: bullseye
arch: amd64
- distrib: bullseye
arch: arm64
- distrib: bookworm
arch: amd64
- distrib: jammy
arch: amd64
name: deliver ${{ matrix.distrib }} ${{ matrix.arch }}

steps:
- name: Checkout sources
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7

- name: Publish DEB packages
uses: ./.github/actions/deb-delivery
with:
module_name: lua-curl
distrib: ${{ matrix.distrib }}
version: ${{ needs.get-version.outputs.major_version }}
artifactory_token: ${{ secrets.ARTIFACTORY_ACCESS_TOKEN }}
cache_key: ${{ github.sha }}-${{ github.run_id }}-deb-lua-curl-${{ matrix.distrib }}-${{ matrix.arch }}
stability: ${{ needs.get-version.outputs.stability }}
release_type: ${{ needs.get-version.outputs.release_type }}
release_cloud: ${{ needs.get-version.outputs.release_cloud }}

promote:
needs: [get-version]
if: ${{ contains(fromJson('["stable"]'), needs.get-version.outputs.stability) && github.event_name != 'workflow_dispatch' }}
runs-on: [self-hosted, common]
strategy:
matrix:
distrib: [el8, el9, bullseye, bookworm]

steps:
- name: Checkout sources
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1

- name: Promote ${{ matrix.distrib }} to stable
uses: ./.github/actions/promote-to-stable
with:
artifactory_token: ${{ secrets.ARTIFACTORY_ACCESS_TOKEN }}
module_name: lua-curl
distrib: ${{ matrix.distrib }}
major_version: ${{ needs.get-version.outputs.major_version }}
stability: ${{ needs.get-version.outputs.stability }}
github_ref_name: ${{ github.ref_name }}
release_type: ${{ needs.get-version.outputs.release_type }}
release_cloud: ${{ needs.get-version.outputs.release_cloud }}
4 changes: 2 additions & 2 deletions .github/workflows/robot-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -110,14 +110,14 @@ jobs:
fetch-depth: 0

- name: Restore image
uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0
uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
with:
path: /tmp/${{inputs.image}}
key: ${{inputs.image_test}}
fail-on-cache-miss: true

- name: Restore packages
uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0
uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
with:
path: ${{ inputs.package_cache_path }}
key: ${{ inputs.package_cache_key }}
Expand Down
53 changes: 53 additions & 0 deletions lua-curl/packaging/lua-curl.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: "lua-curl"
arch: "${ARCH}"
platform: "linux"
version_schema: "none"
version: "${VERSION}"
release: "${RELEASE}${DIST}"
section: "default"
priority: "optional"
maintainer: "Centreon <[email protected]>"
description: |
lua curl library
Commit: @COMMIT_HASH@
vendor: "Centreon"
homepage: "https://www.centreon.com"
license: "Apache-2.0"

contents:
- src: "../../lua-curl-src/lcurl.so"
dst: "/usr/lib64/lua/@luaver@/lcurl.so"
file_info:
mode: 0644
packager: rpm
- src: "../../lua-curl-src/lcurl.so"
dst: "/usr/lib/x86_64-linux-gnu/lua/@luaver@/lcurl.so"
file_info:
mode: 0644
packager: deb

- src: "../../lua-curl-src/src/lua/cURL.lua"
dst: "/usr/share/lua/@luaver@/cURL.lua"

- src: "../../lua-curl-src/src/lua/cURL"
dst: "/usr/share/lua/@luaver@/cURL"

overrides:
rpm:
depends:
- lua
deb:
depends:
- lua@luaver@
provides:
- lua@luaver@-curl
conflicts:
- lua@luaver@-curl
replaces:
- lua@luaver@-curl

rpm:
summary: lua curl
signature:
key_file: ${RPM_SIGNING_KEY_FILE}
key_id: ${RPM_SIGNING_KEY_ID}

0 comments on commit 9a276d6

Please sign in to comment.