Merge branch 'main' of ../pcp #2827
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
# Runs the sanity testsuite | |
name: CI | |
on: | |
push: | |
# run on all branches (also on feature branches of forks, before creating a PR) | |
branches: | |
- '**' | |
# don't run workflow on tags | |
tags-ignore: | |
- '**' | |
workflow_dispatch: | |
jobs: | |
qa: | |
name: ${{ matrix.platform }} | |
runs-on: ${{ matrix.os }} | |
# do not mark the workflow as failed if an experimental distro (e.g. rawhide) fails | |
continue-on-error: ${{ matrix.experimental }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
# default platforms for CI in the performancecopilot/pcp repo | |
- {platform: ubuntu1804-i386-container, os: ubuntu-20.04, experimental: false} | |
- {platform: ubuntu2004-container, os: ubuntu-20.04, experimental: false} | |
- {platform: ubuntu2204-container, os: ubuntu-20.04, experimental: false} | |
- {platform: ubuntu2404-container, os: ubuntu-20.04, experimental: false} | |
- {platform: fedora39-container, os: ubuntu-20.04, experimental: false} | |
- {platform: fedora40-container, os: ubuntu-20.04, experimental: false} | |
- {platform: centos-stream8-container, os: ubuntu-20.04, experimental: false} | |
- {platform: centos-stream9-container, os: ubuntu-20.04, experimental: false} | |
# other platforms that may be used for testing in developer repos | |
# - {platform: debian10-container, os: ubuntu-20.04, experimental: false} | |
# - {platform: debian11-container, os: ubuntu-20.04, experimental: false} | |
# - {platform: debian12-container, os: ubuntu-20.04, experimental: false} | |
# - {platform: ubuntu1804-container, os: ubuntu-20.04, experimental: false} | |
# - {platform: ubuntu2004, os: ubuntu-20.04, experimental: false} | |
# - {platform: ubuntu2204, os: ubuntu-20.04, experimental: false} | |
# - {platform: fedora-rawhide-container, os: ubuntu-20.04, experimental: true } | |
# - {platform: centos7-container, os: ubuntu-20.04, experimental: false} | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- name: Fix local hostname DNS lookup | |
run: echo 127.0.1.1 $(hostname --fqdn) $(hostname) | sudo tee -a /etc/hosts | |
- name: Update version information | |
run: | | |
. VERSION.pcp | |
PACKAGE_BUILD="0.$(date +'%Y%m%d').$(git rev-parse --short HEAD)" | |
PCP_VERSION=${PACKAGE_MAJOR}.${PACKAGE_MINOR}.${PACKAGE_REVISION} | |
PCP_BUILD_VERSION=${PCP_VERSION}-${PACKAGE_BUILD} | |
sed -i "s/PACKAGE_BUILD=.*/PACKAGE_BUILD=${PACKAGE_BUILD}/" VERSION.pcp | |
sed -i "1 s/(.*)/(${PCP_BUILD_VERSION})/" debian/changelog | |
- name: Setup | |
run: | | |
python3 -c 'import yaml' || pip3 install pyyaml | |
mkdir -p artifacts/build artifacts/test | |
touch artifacts/build/.keep | |
# crun >= 1.9.1 is required on Ubuntu 20.04.6 | |
# this workaround came from ... | |
# https://github.com/kubernetes-sigs/kind/pull/3527 | |
curl -sLo /tmp/crun https://github.com/containers/crun/releases/download/1.14.3/crun-1.14.3-linux-amd64 | |
chmod +x /tmp/crun | |
sudo cp /tmp/crun /usr/bin/crun | |
build/ci/ci-run.py ${{ matrix.platform }} setup | |
- name: Build | |
run: build/ci/ci-run.py ${{ matrix.platform }} task build | |
- name: Copy build artifacts | |
run: build/ci/ci-run.py ${{ matrix.platform }} artifacts build --path artifacts/build | |
- name: Upload build artifacts | |
# always() is required here to run this step even if the build fails | |
# otherwise the platform will be skipped in the test report (it should be flagged as broken) | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: build-${{ matrix.platform }} | |
path: artifacts/build | |
- name: Install | |
run: build/ci/ci-run.py ${{ matrix.platform }} task install | |
- name: Initialize QA | |
id: init_qa | |
run: build/ci/ci-run.py ${{ matrix.platform }} task init_qa | |
- name: QA (sanity group) | |
run: build/ci/ci-run.py ${{ matrix.platform }} task qa_sanity | |
- name: Copy test results | |
# always() is required here to run this step even if the QA step fails or times out | |
if: always() && steps.init_qa.outcome == 'success' | |
run: build/ci/ci-run.py ${{ matrix.platform }} artifacts test --path artifacts/test | |
- name: Upload test results | |
if: always() && steps.init_qa.outcome == 'success' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-${{ matrix.platform }} | |
path: artifacts/test | |
# build-macos-latest-clang: | |
# runs-on: macOS-latest | |
# env: | |
# CC: clang | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - name: Install Dependencies | |
# run: brew install automake pkg-config openssl libuv | |
# - name: Build packages | |
# run: ./Makepkgs --verbose |