name: Packages on: push: branches: - master pull_request: {} jobs: deb: name: .deb strategy: matrix: distro: - name: debian codename: buster has32bit: true - name: debian codename: stretch has32bit: true - name: debian codename: jessie has32bit: true - name: ubuntu codename: focal has32bit: false - name: ubuntu codename: bionic has32bit: true - name: ubuntu codename: xenial has32bit: true runs-on: ubuntu-latest steps: - name: Checkout HEAD uses: actions/checkout@v1 - name: deb-icinga2 run: | set -exo pipefail git clone https://git.icinga.com/packaging/deb-icinga2.git chmod o+w deb-icinga2 - name: Source run: | set -exo pipefail git checkout -B master docker run --rm \ -v "$(pwd)/deb-icinga2:/deb-icinga2" \ -v "$(pwd)/.git:/icinga2.git:ro" \ -w /deb-icinga2 \ -e ICINGA_BUILD_PROJECT=icinga2 \ -e ICINGA_BUILD_TYPE=snapshot \ -e UPSTREAM_GIT_URL=file:///icinga2.git \ registry.icinga.com/build-docker/${{ matrix.distro.name }}/${{ matrix.distro.codename }} \ icinga-build-deb-source - name: Restore/backup ccache id: ccache uses: actions/cache@v1 with: path: deb-icinga2/ccache key: '${{ matrix.distro.name }}/${{ matrix.distro.codename }}-ccache' - name: Binary x64 run: | set -exo pipefail if [ -e deb-icinga2/ccache ]; then chmod -R o+w deb-icinga2/ccache fi docker run --rm \ -v "$(pwd)/deb-icinga2:/deb-icinga2" \ -w /deb-icinga2 \ -e ICINGA_BUILD_PROJECT=icinga2 \ -e ICINGA_BUILD_TYPE=snapshot \ registry.icinga.com/build-docker/${{ matrix.distro.name }}/${{ matrix.distro.codename }} \ icinga-build-deb-binary - name: Binary x86 if: matrix.distro.has32bit run: | set -exo pipefail docker run --rm \ -v "$(pwd)/deb-icinga2:/deb-icinga2" \ -w /deb-icinga2 \ -e ICINGA_BUILD_PROJECT=icinga2 \ -e ICINGA_BUILD_TYPE=snapshot \ registry.icinga.com/build-docker/${{ matrix.distro.name }}/${{ matrix.distro.codename }}:x86 \ icinga-build-deb-binary - name: Test x64 run: | set -exo pipefail docker run --rm \ -v "$(pwd)/deb-icinga2:/deb-icinga2" \ -w /deb-icinga2 \ -e ICINGA_BUILD_PROJECT=icinga2 \ -e ICINGA_BUILD_TYPE=snapshot \ registry.icinga.com/build-docker/${{ matrix.distro.name }}/${{ matrix.distro.codename }} \ icinga-build-test - name: Test x86 if: matrix.distro.has32bit run: | set -exo pipefail docker run --rm \ -v "$(pwd)/deb-icinga2:/deb-icinga2" \ -w /deb-icinga2 \ -e ICINGA_BUILD_PROJECT=icinga2 \ -e ICINGA_BUILD_TYPE=snapshot \ registry.icinga.com/build-docker/${{ matrix.distro.name }}/${{ matrix.distro.codename }}:x86 \ icinga-build-test - name: Artifacts uses: actions/upload-artifact@v1 with: name: '${{ matrix.distro.name }}-${{ matrix.distro.codename }}-packages' path: deb-icinga2/build rpm: name: .rpm strategy: matrix: distro: - name: centos release: 8 - name: centos release: 7 - name: centos release: 6 - name: fedora release: 32 - name: fedora release: 31 - name: fedora release: 30 - name: fedora release: 29 - name: sles release: '15.1' - name: sles release: '15.0' - name: sles release: '12.5' - name: sles release: '12.4' - name: opensuse release: '15.1' - name: opensuse release: '15.0' runs-on: ubuntu-latest steps: - name: Vars id: vars env: GITLAB_REGISTRY_RO_TOKEN: '${{ secrets.GITLAB_REGISTRY_RO_TOKEN }}' run: | if [ '${{ matrix.distro.name }}' = sles ]; then if [ "$(tr -d '\n' <<<"$GITLAB_REGISTRY_RO_TOKEN" |wc -c)" -eq 0 ]; then echo '::set-output name=CAN_BUILD::false' echo '::set-output name=NEED_LOGIN::false' else echo '::set-output name=CAN_BUILD::true' echo '::set-output name=NEED_LOGIN::true' fi else echo '::set-output name=CAN_BUILD::true' echo '::set-output name=NEED_LOGIN::false' fi - name: Checkout HEAD if: "steps.vars.outputs.CAN_BUILD == 'true'" uses: actions/checkout@v1 - name: Login if: "steps.vars.outputs.NEED_LOGIN == 'true'" env: GITLAB_REGISTRY_RO_TOKEN: '${{ secrets.GITLAB_REGISTRY_RO_TOKEN }}' run: | docker login registry.icinga.com -u build-docker/sles --password-stdin <<<"$GITLAB_REGISTRY_RO_TOKEN" - name: rpm-icinga2 if: "steps.vars.outputs.CAN_BUILD == 'true'" run: | set -exo pipefail git clone https://git.icinga.com/packaging/rpm-icinga2.git chmod o+w rpm-icinga2 - name: Restore/backup ccache if: "steps.vars.outputs.CAN_BUILD == 'true'" id: ccache uses: actions/cache@v1 with: path: rpm-icinga2/ccache key: '${{ matrix.distro.name }}/${{ matrix.distro.release }}-ccache' - name: Binary if: "steps.vars.outputs.CAN_BUILD == 'true'" run: | set -exo pipefail git checkout -B master if [ -e rpm-icinga2/ccache ]; then chmod -R o+w rpm-icinga2/ccache fi docker run --rm \ -v "$(pwd)/rpm-icinga2:/rpm-icinga2" \ -v "$(pwd)/.git:/icinga2.git:ro" \ -w /rpm-icinga2 \ -e ICINGA_BUILD_PROJECT=icinga2 \ -e ICINGA_BUILD_TYPE=snapshot \ -e UPSTREAM_GIT_URL=file:///icinga2.git \ registry.icinga.com/build-docker/${{ matrix.distro.name }}/${{ matrix.distro.release }} \ icinga-build-package - name: Test if: "steps.vars.outputs.CAN_BUILD == 'true'" run: | set -exo pipefail docker run --rm \ -v "$(pwd)/rpm-icinga2:/rpm-icinga2" \ -w /rpm-icinga2 \ -e ICINGA_BUILD_PROJECT=icinga2 \ -e ICINGA_BUILD_TYPE=snapshot \ registry.icinga.com/build-docker/${{ matrix.distro.name }}/${{ matrix.distro.release }} \ icinga-build-test - name: Artifacts if: "steps.vars.outputs.CAN_BUILD == 'true'" uses: actions/upload-artifact@v1 with: name: '${{ matrix.distro.name }}-${{ matrix.distro.release }}-packages' path: rpm-icinga2/build