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

chore(ci): package lua-curl (#1557) #1562

Merged
merged 3 commits into from
Jul 24, 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
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}