diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5b2b7f1..665c115 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,213 +1,213 @@ -# on: -# push: -# branches: [ main ] - -# name: Create linupdate release - -# jobs: -# build-deb: -# name: Build deb package -# runs-on: ubuntu-latest -# container: -# image: debian:latest -# options: --user root -# steps: -# - name: Checkout -# uses: actions/checkout@v3 - -# - name: Get linupdate version -# run: echo "VERSION=$(cat ${GITHUB_WORKSPACE}/version)" >> $GITHUB_ENV - -# - name: Install dependencies packages -# run: apt-get update && apt-get install build-essential binutils lintian debhelper dh-make devscripts -y - -# - name: Create build environment -# run: | -# mkdir -p /tmp/linupdate-build/DEBIAN -# mkdir -p /tmp/linupdate-build/etc/linupdate/modules -# mkdir -p /tmp/linupdate-build/opt/linupdate -# mkdir -p /tmp/linupdate-build/opt/linupdate/.src/ -# mkdir -p /tmp/linupdate-build/opt/linupdate/mods-available/ -# mkdir -p /tmp/linupdate-build/opt/linupdate/mods-enabled/ -# mkdir -p /tmp/linupdate-build/opt/linupdate/agents-available/ -# mkdir -p /tmp/linupdate-build/opt/linupdate/service/ -# mkdir -p /tmp/linupdate-build/lib/systemd/system/ - -# - name: Copy files to include in the build -# run: | -# cp -r ${GITHUB_WORKSPACE}/src/* /tmp/linupdate-build/opt/linupdate/.src/ -# cp -r ${GITHUB_WORKSPACE}/mods-available/* /tmp/linupdate-build/opt/linupdate/mods-available/ -# cp -r ${GITHUB_WORKSPACE}/service/* /tmp/linupdate-build/opt/linupdate/service/ -# cp ${GITHUB_WORKSPACE}/linupdate /tmp/linupdate-build/opt/linupdate/linupdate -# cp ${GITHUB_WORKSPACE}/version /tmp/linupdate-build/opt/linupdate/version -# cp -r ${GITHUB_WORKSPACE}/service/linupdate.systemd.template /tmp/linupdate-build/lib/systemd/system/linupdate.service - -# - name: Copy control file -# run: | -# cp ${GITHUB_WORKSPACE}/.github/workflows/packaging/deb/control /tmp/linupdate-build/DEBIAN/control -# sed -i "s/__VERSION__/${{ env.VERSION }}/g" /tmp/linupdate-build/DEBIAN/control - -# - name: Copy preinst and postinst script -# run: | -# cp ${GITHUB_WORKSPACE}/.github/workflows/packaging/deb/preinst /tmp/linupdate-build/DEBIAN/preinst -# cp ${GITHUB_WORKSPACE}/.github/workflows/packaging/deb/postinst /tmp/linupdate-build/DEBIAN/postinst -# chmod 755 /tmp/linupdate-build/DEBIAN/preinst /tmp/linupdate-build/DEBIAN/postinst - -# - name: Build package -# run: | -# cd /tmp -# dpkg-deb --build linupdate-build -# mv /tmp/linupdate-build.deb /tmp/linupdate_${{ env.VERSION }}_all.deb - -# - name: Upload artifact -# uses: actions/upload-artifact@v3 -# with: -# name: linupdate_${{ env.VERSION }}_all.deb -# path: /tmp/linupdate_${{ env.VERSION }}_all.deb -# retention-days: 3 - - -# # Build rpm package -# # Even it is build on CentOS7, package should be installable on RHEL7/8/9 based systems -# build-rpm: -# name: Build rpm package -# runs-on: ubuntu-latest -# env: -# # Force to use node16 (for actions/checkout@v3) -# ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION: node16 -# ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true -# container: -# image: centos:7 -# options: --user root -# steps: -# - name: Checkout -# uses: actions/checkout@v3 - -# - name: Get linupdate version -# run: echo "VERSION=$(cat ${GITHUB_WORKSPACE}/version)" >> $GITHUB_ENV - -# - name: Install CentOS7 archive repositories -# run: | -# rm /etc/yum.repos.d/* -f - -# echo "[os] -# name=os repo -# baseurl=https://vault.centos.org/7.9.2009/os/x86_64/ -# enabled=1 -# gpgkey=https://vault.centos.org/RPM-GPG-KEY-CentOS-7 -# gpgcheck=1" > /etc/yum.repos.d/os.repo - -# echo "[extras] -# name=extras repo -# baseurl=https://vault.centos.org/7.9.2009/extras/x86_64/ -# enabled=1 -# gpgkey=https://vault.centos.org/RPM-GPG-KEY-CentOS-7 -# gpgcheck=1" > /etc/yum.repos.d/extras.repo - -# echo "[updates] -# name=updates repo -# baseurl=https://vault.centos.org/7.9.2009/updates/x86_64/ -# enabled=1 -# gpgkey=https://vault.centos.org/RPM-GPG-KEY-CentOS-7 -# gpgcheck=1" > /etc/yum.repos.d/updates.repo - -# yum clean all - -# - name: Install dependencies packages -# run: yum install rpmdevtools rpmlint -y - -# - name: Create build environment -# run: | -# mkdir -p $HOME/rpmbuild/BUILD -# mkdir -p $HOME/rpmbuild/BUILDROOT -# mkdir -p $HOME/rpmbuild/RPMS -# mkdir -p $HOME/rpmbuild/SOURCES -# mkdir -p $HOME/rpmbuild/SPECS -# mkdir -p /etc/linupdate/modules -# mkdir -p /opt/linupdate -# mkdir -p /opt/linupdate/.src/ -# mkdir -p /opt/linupdate/mods-available/ -# mkdir -p /opt/linupdate/mods-enabled/ -# mkdir -p /opt/linupdate/agents-available/ -# mkdir -p /opt/linupdate/agents-enabled/ -# mkdir -p /opt/linupdate/service/ -# mkdir -p /lib/systemd/system/ - -# - name: Copy files to include in the build -# run: | -# cp -r ${GITHUB_WORKSPACE}/src/* /opt/linupdate/.src/ -# cp -r ${GITHUB_WORKSPACE}/mods-available/* /opt/linupdate/mods-available/ -# cp -r ${GITHUB_WORKSPACE}/service/* /opt/linupdate/service/ -# cp ${GITHUB_WORKSPACE}/linupdate /opt/linupdate/linupdate -# cp ${GITHUB_WORKSPACE}/version /opt/linupdate/version -# cp -r ${GITHUB_WORKSPACE}/service/linupdate.systemd.template /lib/systemd/system/linupdate.service - -# - name: Copy spec file -# run: | -# cp ${GITHUB_WORKSPACE}/.github/workflows/packaging/rpm/spec $HOME/rpmbuild/SPECS/linupdate.spec -# sed -i "s/__VERSION__/${{ env.VERSION }}/g" $HOME/rpmbuild/SPECS/linupdate.spec - -# - name: Build package -# run: | -# cd $HOME/rpmbuild/SPECS -# rpmbuild --target noarch -bb --quiet linupdate.spec -# mv $HOME/rpmbuild/RPMS/noarch/linupdate-${{ env.VERSION }}-stable.noarch.rpm /tmp/linupdate-${{ env.VERSION }}.noarch.rpm - -# - name: Upload artifact -# uses: actions/upload-artifact@v3 -# with: -# name: linupdate-${{ env.VERSION }}.noarch.rpm -# path: /tmp/linupdate-${{ env.VERSION }}.noarch.rpm -# retention-days: 3 - -# release: -# name: Create Release -# needs: -# - build-deb -# - build-rpm -# runs-on: ubuntu-latest -# steps: -# - name: Checkout code -# uses: actions/checkout@v3 - -# - name: Get linupdate version -# run: echo "VERSION=$(cat ${GITHUB_WORKSPACE}/version)" >> $GITHUB_ENV - -# # Download builded deb package artifact -# - name: Download deb artifact -# uses: actions/download-artifact@v3 -# with: -# name: linupdate_${{ env.VERSION }}_all.deb -# path: ~/assets +on: + push: + branches: [ main ] + +name: Create linupdate release + +jobs: + build-deb: + name: Build deb package + runs-on: ubuntu-latest + container: + image: debian:latest + options: --user root + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Get linupdate version + run: echo "VERSION=$(cat ${GITHUB_WORKSPACE}/version)" >> $GITHUB_ENV + + - name: Install dependencies packages + run: apt-get update && apt-get install build-essential binutils lintian debhelper dh-make devscripts -y + + - name: Create build environment + run: | + mkdir -p /tmp/linupdate-build/DEBIAN + mkdir -p /tmp/linupdate-build/etc/linupdate/modules + mkdir -p /tmp/linupdate-build/opt/linupdate + mkdir -p /tmp/linupdate-build/opt/linupdate/.src/ + mkdir -p /tmp/linupdate-build/opt/linupdate/mods-available/ + mkdir -p /tmp/linupdate-build/opt/linupdate/mods-enabled/ + mkdir -p /tmp/linupdate-build/opt/linupdate/agents-available/ + mkdir -p /tmp/linupdate-build/opt/linupdate/service/ + mkdir -p /tmp/linupdate-build/lib/systemd/system/ + + - name: Copy files to include in the build + run: | + cp -r ${GITHUB_WORKSPACE}/src/* /tmp/linupdate-build/opt/linupdate/.src/ + cp -r ${GITHUB_WORKSPACE}/mods-available/* /tmp/linupdate-build/opt/linupdate/mods-available/ + cp -r ${GITHUB_WORKSPACE}/service/* /tmp/linupdate-build/opt/linupdate/service/ + cp ${GITHUB_WORKSPACE}/linupdate /tmp/linupdate-build/opt/linupdate/linupdate + cp ${GITHUB_WORKSPACE}/version /tmp/linupdate-build/opt/linupdate/version + cp -r ${GITHUB_WORKSPACE}/service/linupdate.systemd.template /tmp/linupdate-build/lib/systemd/system/linupdate.service + + - name: Copy control file + run: | + cp ${GITHUB_WORKSPACE}/.github/workflows/packaging/deb/control /tmp/linupdate-build/DEBIAN/control + sed -i "s/__VERSION__/${{ env.VERSION }}/g" /tmp/linupdate-build/DEBIAN/control + + - name: Copy preinst and postinst script + run: | + cp ${GITHUB_WORKSPACE}/.github/workflows/packaging/deb/preinst /tmp/linupdate-build/DEBIAN/preinst + cp ${GITHUB_WORKSPACE}/.github/workflows/packaging/deb/postinst /tmp/linupdate-build/DEBIAN/postinst + chmod 755 /tmp/linupdate-build/DEBIAN/preinst /tmp/linupdate-build/DEBIAN/postinst + + - name: Build package + run: | + cd /tmp + dpkg-deb --build linupdate-build + mv /tmp/linupdate-build.deb /tmp/linupdate_${{ env.VERSION }}_all.deb + + - name: Upload artifact + uses: actions/upload-artifact@v3 + with: + name: linupdate_${{ env.VERSION }}_all.deb + path: /tmp/linupdate_${{ env.VERSION }}_all.deb + retention-days: 3 + + + # Build rpm package + # Even it is build on CentOS7, package should be installable on RHEL7/8/9 based systems + build-rpm: + name: Build rpm package + runs-on: ubuntu-latest + env: + # Force to use node16 (for actions/checkout@v3) + ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION: node16 + ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true + container: + image: centos:7 + options: --user root + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Get linupdate version + run: echo "VERSION=$(cat ${GITHUB_WORKSPACE}/version)" >> $GITHUB_ENV + + - name: Install CentOS7 archive repositories + run: | + rm /etc/yum.repos.d/* -f + + echo "[os] + name=os repo + baseurl=https://vault.centos.org/7.9.2009/os/x86_64/ + enabled=1 + gpgkey=https://vault.centos.org/RPM-GPG-KEY-CentOS-7 + gpgcheck=1" > /etc/yum.repos.d/os.repo + + echo "[extras] + name=extras repo + baseurl=https://vault.centos.org/7.9.2009/extras/x86_64/ + enabled=1 + gpgkey=https://vault.centos.org/RPM-GPG-KEY-CentOS-7 + gpgcheck=1" > /etc/yum.repos.d/extras.repo + + echo "[updates] + name=updates repo + baseurl=https://vault.centos.org/7.9.2009/updates/x86_64/ + enabled=1 + gpgkey=https://vault.centos.org/RPM-GPG-KEY-CentOS-7 + gpgcheck=1" > /etc/yum.repos.d/updates.repo + + yum clean all + + - name: Install dependencies packages + run: yum install rpmdevtools rpmlint -y + + - name: Create build environment + run: | + mkdir -p $HOME/rpmbuild/BUILD + mkdir -p $HOME/rpmbuild/BUILDROOT + mkdir -p $HOME/rpmbuild/RPMS + mkdir -p $HOME/rpmbuild/SOURCES + mkdir -p $HOME/rpmbuild/SPECS + mkdir -p /etc/linupdate/modules + mkdir -p /opt/linupdate + mkdir -p /opt/linupdate/.src/ + mkdir -p /opt/linupdate/mods-available/ + mkdir -p /opt/linupdate/mods-enabled/ + mkdir -p /opt/linupdate/agents-available/ + mkdir -p /opt/linupdate/agents-enabled/ + mkdir -p /opt/linupdate/service/ + mkdir -p /lib/systemd/system/ + + - name: Copy files to include in the build + run: | + cp -r ${GITHUB_WORKSPACE}/src/* /opt/linupdate/.src/ + cp -r ${GITHUB_WORKSPACE}/mods-available/* /opt/linupdate/mods-available/ + cp -r ${GITHUB_WORKSPACE}/service/* /opt/linupdate/service/ + cp ${GITHUB_WORKSPACE}/linupdate /opt/linupdate/linupdate + cp ${GITHUB_WORKSPACE}/version /opt/linupdate/version + cp -r ${GITHUB_WORKSPACE}/service/linupdate.systemd.template /lib/systemd/system/linupdate.service + + - name: Copy spec file + run: | + cp ${GITHUB_WORKSPACE}/.github/workflows/packaging/rpm/spec $HOME/rpmbuild/SPECS/linupdate.spec + sed -i "s/__VERSION__/${{ env.VERSION }}/g" $HOME/rpmbuild/SPECS/linupdate.spec + + - name: Build package + run: | + cd $HOME/rpmbuild/SPECS + rpmbuild --target noarch -bb --quiet linupdate.spec + mv $HOME/rpmbuild/RPMS/noarch/linupdate-${{ env.VERSION }}-stable.noarch.rpm /tmp/linupdate-${{ env.VERSION }}.noarch.rpm + + - name: Upload artifact + uses: actions/upload-artifact@v3 + with: + name: linupdate-${{ env.VERSION }}.noarch.rpm + path: /tmp/linupdate-${{ env.VERSION }}.noarch.rpm + retention-days: 3 + + release: + name: Create Release + needs: + - build-deb + - build-rpm + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Get linupdate version + run: echo "VERSION=$(cat ${GITHUB_WORKSPACE}/version)" >> $GITHUB_ENV + + # Download builded deb package artifact + - name: Download deb artifact + uses: actions/download-artifact@v3 + with: + name: linupdate_${{ env.VERSION }}_all.deb + path: ~/assets -# # Download builded rpm package artifact -# - name: Download rpm artifact -# uses: actions/download-artifact@v3 -# with: -# name: linupdate-${{ env.VERSION }}.noarch.rpm -# path: ~/assets - -# # Create a new release -# - name: Create Release -# id: create_release -# uses: actions/create-release@v1 -# env: -# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -# with: -# tag_name: ${{ env.VERSION }} -# release_name: ${{ env.VERSION }} -# body: | -# **Changes**: -# - Module reposerver: removed deprecated API calls -# draft: false -# prerelease: false - -# # Upload packages to release -# - name: Upload packages -# id: upload-release-assets -# uses: dwenegar/upload-release-assets@v1 -# env: -# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -# with: -# release_id: ${{ steps.create_release.outputs.id }} -# assets_path: ~/assets + # Download builded rpm package artifact + - name: Download rpm artifact + uses: actions/download-artifact@v3 + with: + name: linupdate-${{ env.VERSION }}.noarch.rpm + path: ~/assets + + # Create a new release + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ env.VERSION }} + release_name: ${{ env.VERSION }} + body: | + **Changes**: + - Module reposerver: removed deprecated API calls + draft: false + prerelease: false + + # Upload packages to release + - name: Upload packages + id: upload-release-assets + uses: dwenegar/upload-release-assets@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + release_id: ${{ steps.create_release.outputs.id }} + assets_path: ~/assets