Skip to content

Merge branch 'develop' #788

Merge branch 'develop'

Merge branch 'develop' #788

Workflow file for this run

on:
push:
branches:
- master
- develop
tags:
- "*"
pull_request:
jobs:
tests:
name: ${{ matrix.os }} ${{ matrix.compiler }}${{ matrix.clang-version }} ${{ matrix.cppstd }} Python ${{ matrix.python-version }} Epic ${{ matrix.castxml-epic }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
# UBUNTU 22.04 - CASTXML EPIC 0
- os: ubuntu-22.04
arch: x86_64
compiler: clang++
clang-version: 13
python-version: "3.13"
castxml-epic: 0
cppstd: "-std=c++98"
- os: ubuntu-22.04
arch: x86_64
compiler: clang++
clang-version: 14
python-version: "3.13"
castxml-epic: 0
cppstd: "-std=c++98"
- os: ubuntu-22.04
arch: x86_64
compiler: clang++
clang-version: 15
python-version: "3.13"
castxml-epic: 0
cppstd: "-std=c++98"
- os: ubuntu-22.04
arch: x86_64
compiler: clang++
clang-version: 15
python-version: "3.13"
castxml-epic: 1
cppstd: "-std=c++98"
# UBUNTU 24.04 - CASTXML EPIC 0
- os: ubuntu-24.04
arch: x86_64
compiler: clang++
clang-version: 16
python-version: "3.9"
castxml-epic: 0
cppstd: "-std=c++98"
- os: ubuntu-24.04
arch: x86_64
compiler: clang++
clang-version: 16
python-version: "3.10"
castxml-epic: 0
cppstd: "-std=c++98"
- os: ubuntu-24.04
arch: x86_64
compiler: clang++
clang-version: 16
python-version: "3.11"
castxml-epic: 0
cppstd: "-std=c++98"
- os: ubuntu-24.04
arch: x86_64
compiler: clang++
clang-version: 16
python-version: "3.12"
castxml-epic: 0
cppstd: "-std=c++98"
- os: ubuntu-24.04
arch: x86_64
compiler: clang++
clang-version: 16
python-version: "3.13"
castxml-epic: 0
cppstd: "-std=c++98"
# UBUNTU 24.04 - CASTXML EPIC 0 - c++XX
- os: ubuntu-24.04
arch: x86_64
compiler: clang++
clang-version: 16
python-version: "3.13"
castxml-epic: 0
cppstd: "-std=c++11"
- os: ubuntu-24.04
arch: x86_64
compiler: clang++
clang-version: 16
python-version: "3.13"
castxml-epic: 0
cppstd: "-std=c++14"
- os: ubuntu-24.04
arch: x86_64
compiler: clang++
clang-version: 16
python-version: "3.13"
castxml-epic: 0
cppstd: "-std=c++17"
# UBUNTU 24.04 - CASTXML EPIC 1
- os: ubuntu-24.04
arch: x86_64
compiler: clang++
clang-version: 16
python-version: "3.13"
castxml-epic: 1
cppstd: "-std=c++98"
- os: ubuntu-24.04
arch: x86_64
compiler: clang++
clang-version: 16
python-version: "3.13"
castxml-epic: 1
cppstd: "-std=c++11"
# UBUNTU ARM
- os: ubuntu-22.04-arm
arch: aarch64
compiler: clang++
clang-version: 15
python-version: "3.13"
castxml-epic: 0
cppstd: "-std=c++17"
- os: ubuntu-24.04-arm
arch: aarch64
compiler: clang++
clang-version: 16
python-version: "3.13"
castxml-epic: 0
cppstd: "-std=c++17"
# UBUNTU 24.04 - CASTXML EPIC 1
- os: ubuntu-24.04-arm
arch: aarch64
compiler: clang++
clang-version: 16
python-version: "3.13"
castxml-epic: 1
cppstd: "-std=c++11"
# MACOS
- os: macos-13
compiler: clang++
python-version: "3.13"
castxml-epic: 0
- os: macos-15
compiler: clang++
python-version: "3.13"
castxml-epic: 0
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Display Python version
run: python -c "import sys; print(sys.version)"
- name: Install Python lib and test libs
run: |
pip install '.[test]'
- name: Run pycodestyle
run: pycodestyle . --exclude=docs
- name: Write xml_generator.cfg
if: contains(matrix.os, 'ubuntu')
run: |
echo "[xml_generator]" > tests/xml_generator.cfg
echo "compiler_path=/usr/bin/${{ matrix.compiler }}-${{ matrix.clang-version }}" >> tests/xml_generator.cfg
echo "ccflags=${{ matrix.cppstd }}" >> tests/xml_generator.cfg
# ─── Setup CastXML for Linux x86_64 ──────────────────────────────
- name: Setup CastXML for Linux x86_64 (Ubuntu 24.04)
if: matrix.os == 'ubuntu-24.04' && matrix.arch == 'x86_64'
run: |
wget -q -O ~/castxml-ubuntu-24.04-x86_64.tar.gz https://github.com/CastXML/CastXMLSuperbuild/releases/download/v0.6.11.post2/castxml-ubuntu-24.04-x86_64.tar.gz
tar -xzf ~/castxml-ubuntu-24.04-x86_64.tar.gz -C ~/
chmod +x ~/castxml/bin/castxml
- name: Setup CastXML for Linux x86_64 (Ubuntu 22.04)
if: matrix.os == 'ubuntu-22.04' && matrix.arch == 'x86_64'
run: |
wget -q -O ~/castxml-ubuntu-22.04-x86_64.tar.gz https://github.com/CastXML/CastXMLSuperbuild/releases/download/v0.6.11.post2/castxml-ubuntu-22.04-x86_64.tar.gz
tar -xzf ~/castxml-ubuntu-22.04-x86_64.tar.gz -C ~/
chmod +x ~/castxml/bin/castxml
# ─── Setup CastXML for Linux aarch64 ──────────────────────────────
- name: Setup CastXML for Linux aarch64 (Ubuntu 24.04)
if: matrix.os == 'ubuntu-24.04-arm' && matrix.arch == 'aarch64'
run: |
wget -q -O ~/castxml-ubuntu-24.04-arm-aarch64.tar.gz https://github.com/CastXML/CastXMLSuperbuild/releases/download/v0.6.11.post2/castxml-ubuntu-24.04-arm-aarch64.tar.gz
tar -xzf ~/castxml-ubuntu-24.04-arm-aarch64.tar.gz -C ~/
chmod +x ~/castxml/bin/castxml
- name: Setup CastXML for Linux aarch64 (Ubuntu 22.04)
if: matrix.os == 'ubuntu-22.04-arm' && matrix.arch == 'aarch64'
run: |
wget -q -O ~/castxml-ubuntu-22.04-arm-aarch64.tar.gz https://github.com/CastXML/CastXMLSuperbuild/releases/download/v0.6.11.post2/castxml-ubuntu-22.04-arm-aarch64.tar.gz
tar -xzf ~/castxml-ubuntu-22.04-arm-aarch64.tar.gz -C ~/
chmod +x ~/castxml/bin/castxml
# ─── Setup CastXML for MacOS ──────────────────────────────
- name: Setup CastXML for macOS (arm64)
if: matrix.os == 'macos-15'
run: |
wget -q -O ~/castxml-macos-15-arm64.tar.gz https://github.com/CastXML/CastXMLSuperbuild/releases/download/v0.6.11.post2/castxml-macos-15-arm64.tar.gz
tar -xzf ~/castxml-macos-15-arm64.tar.gz -C ~/
chmod +x ~/castxml/bin/castxml
- name: Setup CastXML for macOS (x86_64)
if: matrix.os == 'macos-13'
run: |
wget -q -O ~/castxml-macos-13-x86_64.tar.gz https://github.com/CastXML/CastXMLSuperbuild/releases/download/v0.6.11.post2/castxml-macos-13-x86_64.tar.gz
tar -xzf ~/castxml-macos-13-x86_64.tar.gz -C ~/
chmod +x ~/castxml/bin/castxml
- name: Run tests
run: |
export PATH=~/castxml/bin:$PATH
pytest tests
build:
name: Build distribution 📦
if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes
needs: tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.x"
- name: Install pypa/build
run: >-
python3 -m
pip install
build
--user
- name: Build a binary wheel and a source tarball
run: python3 -m build
- name: Store the distribution packages
uses: actions/upload-artifact@v4
with:
name: python-package-distributions
path: dist/
publish-to-pypi:
name: >-
Publish Python 🐍 distribution 📦 to PyPI
if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes
needs:
- build
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/p/<package-name> # Replace <package-name> with your PyPI project name
permissions:
id-token: write # IMPORTANT: mandatory for trusted publishing
steps:
- name: Download all the dists
uses: actions/download-artifact@v4
with:
name: python-package-distributions
path: dist/
- name: Publish distribution 📦 to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
github-release:
name: >-
Sign the Python 🐍 distribution 📦 with Sigstore
and upload them to GitHub Release
if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes
needs:
- publish-to-pypi
runs-on: ubuntu-latest
permissions:
contents: write # IMPORTANT: mandatory for making GitHub Releases
id-token: write # IMPORTANT: mandatory for sigstore
steps:
- name: Download all the dists
uses: actions/download-artifact@v4
with:
name: python-package-distributions
path: dist/
- name: Sign the dists with Sigstore
uses: sigstore/[email protected]
with:
inputs: >-
./dist/*.tar.gz
./dist/*.whl
- name: Create GitHub Release
env:
GITHUB_TOKEN: ${{ github.token }}
run: >-
gh release create
"$GITHUB_REF_NAME"
--repo "$GITHUB_REPOSITORY"
--notes ""
- name: Upload artifact signatures to GitHub Release
env:
GITHUB_TOKEN: ${{ github.token }}
# Upload to GitHub Release using the `gh` CLI.
# `dist/` contains the built packages, and the
# sigstore-produced signatures and certificates.
run: >-
gh release upload
"$GITHUB_REF_NAME" dist/**
--repo "$GITHUB_REPOSITORY"