enh(ci): skip workflow when no change on PR (#1927) (#1941) #378
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: libzmq | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
on: | |
workflow_dispatch: | |
pull_request: | |
paths: | |
- '.github/workflows/libzmq.yml' | |
push: | |
branches: | |
- develop | |
- dev-[2-9][0-9].[0-9][0-9].x | |
- master | |
- "[2-9][0-9].[0-9][0-9].x" | |
paths: | |
- '.github/workflows/libzmq.yml' | |
jobs: | |
get-environment: | |
uses: ./.github/workflows/get-environment.yml | |
package-rpm: | |
needs: [get-environment] | |
if: | | |
needs.get-environment.outputs.skip_workflow == 'false' && | |
needs.get-environment.outputs.stability != 'stable' | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- image: packaging-nfpm-alma8 | |
distrib: el8 | |
arch: amd64 | |
- image: packaging-nfpm-alma9 | |
distrib: el9 | |
arch: amd64 | |
runs-on: ubuntu-24.04 | |
container: | |
image: ${{ vars.DOCKER_INTERNAL_REGISTRY_URL }}/${{ matrix.image }}:${{ needs.get-environment.outputs.major_version }} | |
credentials: | |
username: ${{ secrets.HARBOR_CENTREON_PULL_USERNAME }} | |
password: ${{ secrets.HARBOR_CENTREON_PULL_TOKEN }} | |
name: package ${{ matrix.distrib }} | |
steps: | |
- name: package rpm | |
run: | | |
dnf install -y wget rpmdevtools rpmlint epel-release | |
dnf config-manager --set-enabled crb || true # alma 9 | |
dnf config-manager --set-enabled powertools || true # alma 8 | |
dnf install -y asciidoc autoconf automake gcc gcc-c++ glib2-devel libbsd-devel libtool make rpm-build xmlto | |
cd /github/home | |
wget -O - https://github.com/zeromq/libzmq/archive/refs/tags/v4.3.5.tar.gz | tar zxvf - | |
mkdir -p /github/home/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} | |
cp libzmq-4.3.5/packaging/redhat/zeromq.spec /github/home/rpmbuild/SPECS/ | |
wget https://github.com/zeromq/libzmq/releases/download/v4.3.5/zeromq-4.3.5.tar.gz -O /github/home/rpmbuild/SOURCES/zeromq-4.3.5.tar.gz | |
rpmbuild -bb /github/home/rpmbuild/SPECS/zeromq.spec | |
cd - | |
mv /github/home/rpmbuild/RPMS/x86_64/*.rpm ./ | |
rm -f zeromq-debugsource-*.rpm libzmq5-debuginfo-*.rpm | |
shell: bash | |
- name: cache rpm | |
uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 | |
with: | |
path: ./*.rpm | |
key: ${{ github.run_id }}-${{ github.sha }}-rpm-libzmq-${{ matrix.distrib }}-${{ matrix.arch }} | |
package-deb: | |
needs: [get-environment] | |
if: | | |
needs.get-environment.outputs.skip_workflow == 'false' && | |
needs.get-environment.outputs.stability != 'stable' | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- image: packaging-nfpm-bullseye | |
distrib: bullseye | |
runner: ubuntu-22.04 | |
arch: amd64 | |
- image: packaging-nfpm-bookworm | |
distrib: bookworm | |
runner: ubuntu-24.04 | |
arch: amd64 | |
- image: packaging-nfpm-jammy | |
distrib: jammy | |
runner: ubuntu-24.04 | |
arch: amd64 | |
- image: packaging-bullseye-arm64 | |
distrib: bullseye | |
runner: ["self-hosted", "collect-arm64"] | |
arch: arm64 | |
runs-on: ${{ matrix.runner }} | |
container: | |
image: ${{ vars.DOCKER_INTERNAL_REGISTRY_URL }}/${{ matrix.image }}:${{ needs.get-environment.outputs.major_version }} | |
credentials: | |
username: ${{ secrets.HARBOR_CENTREON_PULL_USERNAME }} | |
password: ${{ secrets.HARBOR_CENTREON_PULL_TOKEN }} | |
name: package ${{ matrix.distrib }} ${{ matrix.arch }} | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 | |
- name: Parse distrib name | |
id: parse-distrib | |
uses: ./.github/actions/parse-distrib | |
with: | |
distrib: ${{ matrix.distrib }} | |
- name: package deb | |
run: | | |
apt-get update | |
apt-get install -y debhelper dh-autoreconf dpkg-dev libkrb5-dev libnorm-dev libpgm-dev libsodium-dev libunwind8-dev libnss3-dev libgnutls28-dev libbsd-dev pkg-config asciidoc wget xmlto | |
wget -O - https://github.com/zeromq/libzmq/releases/download/v4.3.5/zeromq-4.3.5.tar.gz | tar zxvf - | |
cd zeromq-4.3.5 | |
./configure | |
make | |
make install | |
cd .. | |
wget -O - https://github.com/zeromq/libzmq/archive/refs/tags/v4.3.5.tar.gz | tar zxvf - | |
cd libzmq-4.3.5 | |
ln -s packaging/debian | |
sed -Ei 's/([0-9]+.[0-9]+.[0-9]+-[0-9]+.[0-9]+)/\1${{ steps.parse-distrib.outputs.package_distrib_separator }}${{ steps.parse-distrib.outputs.package_distrib_name }}/' debian/changelog | |
sed -Ei 's/UNRELEASED/${{ matrix.distrib }}/' debian/changelog | |
dpkg-buildpackage -us -uc -nc | |
cd .. | |
rm -f libzmq5-dbg_*.deb | |
shell: bash | |
- name: cache deb | |
uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 | |
with: | |
path: ./*.deb | |
key: ${{ github.run_id }}-${{ github.sha }}-deb-libzmq-${{ matrix.distrib }}-${{ matrix.arch }} | |
deliver-rpm: | |
needs: [get-environment, package-rpm] | |
if: | | |
needs.get-environment.outputs.skip_workflow == 'false' && | |
contains(fromJson('["unstable", "testing"]'), needs.get-environment.outputs.stability) && | |
! cancelled() && | |
! contains(needs.*.result, 'failure') && | |
! contains(needs.*.result, 'cancelled') | |
runs-on: [self-hosted, common] | |
strategy: | |
matrix: | |
include: | |
- distrib: el8 | |
arch: amd64 | |
- distrib: el9 | |
arch: amd64 | |
name: deliver ${{ matrix.distrib }} | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 | |
- name: Publish RPM packages | |
uses: ./.github/actions/delivery | |
with: | |
module_name: libzmq | |
distrib: ${{ matrix.distrib }} | |
major_version: ${{ needs.get-environment.outputs.major_version }} | |
artifactory_token: ${{ secrets.ARTIFACTORY_ACCESS_TOKEN }} | |
cache_key: ${{ github.run_id }}-${{ github.sha }}-rpm-libzmq-${{ matrix.distrib }}-${{ matrix.arch }} | |
stability: ${{ needs.get-environment.outputs.stability }} | |
release_type: ${{ needs.get-environment.outputs.release_type }} | |
is_cloud: ${{ needs.get-environment.outputs.is_cloud }} | |
deliver-deb: | |
needs: [get-environment, package-deb] | |
if: | | |
needs.get-environment.outputs.skip_workflow == 'false' && | |
contains(fromJson('["unstable", "testing"]'), needs.get-environment.outputs.stability) && | |
! cancelled() && | |
! contains(needs.*.result, 'failure') && | |
! contains(needs.*.result, 'cancelled') | |
runs-on: [self-hosted, common] | |
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/delivery | |
with: | |
module_name: libzmq | |
distrib: ${{ matrix.distrib }} | |
major_version: ${{ needs.get-environment.outputs.major_version }} | |
artifactory_token: ${{ secrets.ARTIFACTORY_ACCESS_TOKEN }} | |
cache_key: ${{ github.run_id }}-${{ github.sha }}-deb-libzmq-${{ matrix.distrib }}-${{ matrix.arch }} | |
stability: ${{ needs.get-environment.outputs.stability }} | |
release_type: ${{ needs.get-environment.outputs.release_type }} | |
is_cloud: ${{ needs.get-environment.outputs.is_cloud }} | |
promote: | |
needs: [get-environment, deliver-rpm, deliver-deb] | |
if: | | |
needs.get-environment.outputs.skip_workflow == 'false' && | |
(contains(fromJson('["stable", "testing"]'), needs.get-environment.outputs.stability) && github.event_name != 'workflow_dispatch') && | |
! cancelled() && | |
! contains(needs.*.result, 'failure') && | |
! contains(needs.*.result, 'cancelled') | |
runs-on: [self-hosted, common] | |
strategy: | |
matrix: | |
distrib: [el8, el9, bullseye, bookworm, jammy] | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 | |
- name: Promote ${{ matrix.distrib }} to stable | |
uses: ./.github/actions/promote-to-stable | |
with: | |
artifactory_token: ${{ secrets.ARTIFACTORY_ACCESS_TOKEN }} | |
module_name: libzmq | |
distrib: ${{ matrix.distrib }} | |
major_version: ${{ needs.get-environment.outputs.major_version }} | |
stability: ${{ needs.get-environment.outputs.stability }} | |
github_ref_name: ${{ github.ref_name }} | |
release_type: ${{ needs.get-environment.outputs.release_type }} | |
is_cloud: ${{ needs.get-environment.outputs.is_cloud }} | |
set-skip-label: | |
needs: [get-environment, deliver-rpm, deliver-deb, promote] | |
if: | | |
needs.get-environment.outputs.skip_workflow == 'false' && | |
! cancelled() && | |
! contains(needs.*.result, 'failure') && | |
! contains(needs.*.result, 'cancelled') | |
uses: ./.github/workflows/set-pull-request-skip-label.yml |