Skip to content

Build

Build #667

Workflow file for this run

---
name: Build
permissions:
issues: write
pull-requests: read
contents: read
on:
workflow_dispatch:
inputs:
keep_workdir:
description: keeps the working dir on the runner after the job is finished
required: false
exclude-distro-num:
description: elXstream distro NOT to run. Use 8 or 9.
required: true
default: "8"
distro-variant:
description: Build with CBS or COPR packages. Use "-cbs" or "-copr".
required: true
default: "-copr"
push:
branches: [master]
schedule:
# Running every morning in EMEA timezone
- cron: '0 6 * * *'
jobs:
build-matrix:
timeout-minutes: 80
strategy:
fail-fast: false
matrix:
num: [8, 9]
exclude:
- num: ${{ github.event.inputs.exclude-distro-num }}
name: build-el${{ matrix.num }}stream${{ github.event.inputs.distro-variant == '' && '-copr' || github.event.inputs.distro-variant }}
runs-on: [image-builders, "el${{ matrix.num }}"]
container:
image: quay.io/ovirt/buildcontainer:el${{ matrix.num }}stream
options: --privileged
steps:
- name: fix loop mounts
run: for i in `seq 0 9`; do [[ ! -b /dev/loop$i ]] && mknod /dev/loop$i -m0660 b 7 $i; done
- uses: ovirt/checkout-action@main
with:
fetch-depth: 0
- name: Build the OVA
run: |
cd engine-appliance
make DISTRO=centos-stream-${{ matrix.num }}${{ github.event.inputs.distro-variant == '' && '-copr' || github.event.inputs.distro-variant }} &
tail --pid=$! --retry -f virt-install.log ||:
- name: Check OVA content
run: |
cd engine-appliance
make check
- name: Build RPM
run: |
cd engine-appliance
make rpm
- name: Upload rpm to resources.ovirt.org
uses: ovirt/ovirt-resources-upload-action@main
with:
username: ${{ secrets.SSH_USERNAME_FOR_RESOURCES_OVIRT_ORG }}
key: ${{ secrets.SSH_KEY_FOR_RESOURCES_OVIRT_ORG }}
known_hosts: ${{ secrets.KNOWN_HOSTS_FOR_RESOURCES_OVIRT_ORG }}
source: engine-appliance/tmp.repos/RPMS/x86_64/*.rpm
target: github-ci/ovirt-appliance${{ github.event.inputs.distro-variant == '' && '-copr' || github.event.inputs.distro-variant }}/el${{ matrix.num }}
cleanup: yes
createrepo: yes
# keep 10 last builds + repodata
keep_files_count: 11
- name: Upload manifest to github
uses: actions/upload-artifact@v3
with:
name: "manifest-el${{ matrix.num }}"
path: |
engine-appliance/ovirt-engine-appliance-manifest-rpm
engine-appliance/ovirt-engine-appliance-unsigned-rpms
- name: Clean up entire workdir
if: always()
run: |
[[ -z "${{ github.event.inputs.keep_workdir }}" ]] && rm -rf $PWD/*
close-build-issue-on-success:
name: Report workflow success
runs-on: ubuntu-latest
needs:
- build-matrix
steps:
- name: Checkout
uses: ovirt/checkout-action@main
- name: Add a comment about successful job and close issue
run: |
set -e
LABEL="build-failed"
ISSUENO=$(gh issue list -l $LABEL | awk ' { print $1 } ' | head -n 1)
if [ -n "$ISSUENO" ]; then
MESSAGE="✅ The oVirt Appliance build CI job is now [successful](https://github.com/oVirt/ovirt-appliance/actions/runs/${{ github.run_id }}), closing issue."
gh issue comment "${ISSUENO}" --body "${MESSAGE}"
gh issue close "${ISSUENO}"
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
open-build-issue-on-failure:
name: Report workflow failure
runs-on: ubuntu-latest
if: ${{ always() && (needs.build-matrix.result=='failure') }}
needs:
- build-matrix
steps:
- name: Checkout
uses: ovirt/checkout-action@main
- name: Add a comment about failed job
run: |
set -e
TITLE="Failed oVirt Appliance build job"
LABEL="build-failed"
ISSUENO=$(gh issue list -l $LABEL | awk ' { print $1 } ' | head -n 1)
if [ -z "$ISSUENO" ]; then
MESSAGE="❌ The oVirt Appliance build CI job failed. [Please investigate.](https://github.com/oVirt/ovirt-appliance/actions/runs/${{ github.run_id }})"
gh issue create --title "${TITLE}" --body "${MESSAGE}" --label "${LABEL}"
else
MESSAGE="❌ oVirt Appliance build CI job is still failing. [Please investigate.](https://github.com/oVirt/ovirt-appliance/actions/runs/${{ github.run_id }})"
gh issue comment "${ISSUENO}" --body "${MESSAGE}"
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}