Skip to content

Release 1.5.0-3

Release 1.5.0-3 #44

#
# SELinux policy module RPMs build
#
name: "Build RPM and DEB packages to install compiled SELinux policy module"
concurrency:
group: SELinux_compile-${{ github.ref }}
on:
release:
types: [ published ]
workflow_dispatch:
jobs:
get_release_info:
name: Get release info
runs-on: ubuntu-latest
outputs:
upload_url: ${{ steps.get_release_url.outputs.upload_url }}
version_number: ${{ steps.get_release_version.outputs.version }}
release_number: ${{ steps.get_release_version.outputs.release }}
previous_tag: ${{ steps.get_release_version.outputs.previous_tag }}
steps:
- name: Checkout code
uses: actions/checkout@master
with:
ref: ${{ github.ref }}
- name: Get release upload URL
id: get_release_url
uses: bruceadams/[email protected]
env:
GITHUB_TOKEN: ${{ github.token }}
- name: Retrieve version/release numbers, and previous tag
id: get_release_version
run: |
if [ "${{ github.ref_type }}" = 'tag' ]
then
awk -F '-' 'BEGIN {v="1.0"; r="1"}
/v?[0-9]+(\.[0-9]+(\.[0-9]+)?)?(-[0-9]+)?$/ {
v=$1 ; sub("^v?", "", v)
if (NF==2) { r=$2 }
}
END { print "version="v ; print "release="r }' <<< '${{ github.ref_name }}' >> $GITHUB_OUTPUT
git tag | tail -2 | awk '(NR==1){print "previous_tag="$1}' >> $GITHUB_OUTPUT
else
if [ -f "main-semodule-file" ]
then
semodule_file=$( cat main-semodule-file )
if [ -f "${semodule_file}" ]
then
awk '
/^[[:blank:]]*module[[:blank:]]+/ {
sub("[[:blank:]]*;$", "")
module_vers=$3
}
/^[[:blank:]]*policy_module[[:blank:]]*\(/ {
sub("^[[:blank:]]*policy_module[[:blank:]]*[(][[:blank:]]*", "")
sub("[[:blank:]]*)[[:blank:]]*$", "")
split($0, a, "[[:blank:]]*,[[:blank:]]*")
module_vers=a[2]
}
END {
print "version="module_vers
print "release=1"
}' ${semodule_file} >> $GITHUB_OUTPUT
else
echo '::error title=SEmoduleNotFound::Unable to retrieve SELinux module name'
exit 1
fi
else
echo '::error title=SEmoduleNotFound::Unable to retrieve SELinux module name'
exit 1
fi
fi
build_Fedora:
name: Build RPMs for Fedora and upload them to release
needs: get_release_info
uses: lhqg/build_selinux_packages/.github/workflows/build_semodule_rpm.yml@main
secrets:
gpg_private_key: ${{ secrets.RPM_SIGNING_KEY }}
gpg_private_key_password: ${{ secrets.RPM_SIGNING_KEY_PASSWORD }}
sftp_password: ${{ secrets.SSH_OVH_PASSWORD }}
with:
build_distro: fedora
build_distro_versions: '[ "37", "38", "39", "40" ]'
spec_file_location: rpm/
release_upload_url: ${{ needs.get_release_info.outputs.upload_url }}
provided_version: ${{ needs.get_release_info.outputs.version_number }}
provided_release: ${{ needs.get_release_info.outputs.release_number }}
sftp_server: ${{ vars.SSH_OVH_HOST }}
sftp_user: ${{ vars.SSH_OVH_USER }}
sftp_remote_path: www/repo/public/fc
build_EL:
name: Build RPMs for EL and upload them to release
needs: get_release_info
uses: lhqg/build_selinux_packages/.github/workflows/build_semodule_rpm.yml@main
secrets:
gpg_private_key: ${{ secrets.RPM_SIGNING_KEY }}
gpg_private_key_password: ${{ secrets.RPM_SIGNING_KEY_PASSWORD }}
sftp_password: ${{ secrets.SSH_OVH_PASSWORD }}
with:
build_distro: almalinux
build_distro_versions: '[ "8", "9" ]'
spec_file_location: rpm/
release_upload_url: ${{ needs.get_release_info.outputs.upload_url }}
provided_version: ${{ needs.get_release_info.outputs.version_number }}
provided_release: ${{ needs.get_release_info.outputs.release_number }}
sftp_server: ${{ vars.SSH_OVH_HOST }}
sftp_user: ${{ vars.SSH_OVH_USER }}
sftp_remote_path: www/repo/public/el
build_Debian:
name: Build Debian packages and upload them to release
needs: get_release_info
uses: lhqg/build_selinux_packages/.github/workflows/build_semodule_deb.yml@main
secrets:
gpg_private_key: ${{ secrets.DEB_SIGNING_KEY }}
gpg_private_key_password: ${{ secrets.DEB_SIGNING_KEY_PASSWORD }}
sftp_password: ${{ secrets.SSH_OVH_PASSWORD }}
with:
build_distro: debian
build_distro_versions: '[ "11", "12" ]'
build_material_dir: dpkg
release_upload_url: ${{ needs.get_release_info.outputs.upload_url }}
package_version: ${{ needs.get_release_info.outputs.version_number }}-${{ needs.get_release_info.outputs.release_number }}
previous_tag: ${{ needs.get_release_info.outputs.previous_tag }}
sftp_server: ${{ vars.SSH_OVH_HOST }}
sftp_user: ${{ vars.SSH_OVH_USER }}
sftp_remote_path: www/repo/public/debian
build_Ubuntu:
name: Build Ubuntu packages and upload them to release
needs: get_release_info
uses: lhqg/build_selinux_packages/.github/workflows/build_semodule_deb.yml@main
secrets:
gpg_private_key: ${{ secrets.DEB_SIGNING_KEY }}
gpg_private_key_password: ${{ secrets.DEB_SIGNING_KEY_PASSWORD }}
sftp_password: ${{ secrets.SSH_OVH_PASSWORD }}
with:
build_distro: ubuntu
build_distro_versions: '[ "22.04", "24.04" ]'
build_material_dir: dpkg
release_upload_url: ${{ needs.get_release_info.outputs.upload_url }}
package_version: ${{ needs.get_release_info.outputs.version_number }}-${{ needs.get_release_info.outputs.release_number }}
previous_tag: ${{ needs.get_release_info.outputs.previous_tag }}
sftp_server: ${{ vars.SSH_OVH_HOST }}
sftp_user: ${{ vars.SSH_OVH_USER }}
sftp_remote_path: www/repo/public/ubuntu
all_green:
name: All jobs successful
if: ${{ always() }}
needs:
- build_EL
- build_Fedora
- build_Debian
- build_Ubuntu
runs-on: ubuntu-latest
steps:
- name: Synthetize results
run: |
grep -Eqv 'failure' <<< '${{ needs.build_EL.result }},${{ needs.build_Fedora.result }},${{ needs.build_Debian.result }},${{ needs.build_Ubuntu.result }}'