Update ci_cd.yml #1165
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: GitHub CI | |
on: | |
workflow_dispatch: | |
pull_request: | |
push: | |
tags: | |
- "*" | |
branches: | |
- yum-build-fix | |
env: | |
MAIN_PYTHON_VERSION: '3.11' | |
PRECOMPILE_PYTHON_VERSION: '3.11.9' | |
DOCUMENTATION_CNAME: 'installer.docs.pyansys.com' | |
LIBRARY_NAME: 'ansys-tools-installer' | |
LIBRARY_NAMESPACE: 'ansys.tools.installer' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
# doc-style: | |
# name: "Documentation style" | |
# runs-on: ubuntu-latest | |
# steps: | |
# - uses: ansys/actions/doc-style@v8 | |
# with: | |
# token: ${{ secrets.GITHUB_TOKEN }} | |
# tests: | |
# name: "Tests" | |
# runs-on: windows-latest | |
# strategy: | |
# matrix: | |
# python-version: ['3.9', '3.10', '3.11', '3.12'] | |
# fail-fast: false | |
# env: | |
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# DISPLAY: ':99' | |
# steps: | |
# - name: Install Linux os dependencies | |
# if: runner.os == 'Linux' | |
# run: sudo apt install libegl1 | |
# - name: Setup headless display | |
# uses: pyvista/setup-headless-display-action@v2 | |
# - uses: ansys/actions/tests-pytest@v8 | |
# with: | |
# python-version: ${{ matrix.python-version }} | |
# doc-build: | |
# name: "Build documentation" | |
# runs-on: ubuntu-latest | |
# needs: [doc-style] | |
# steps: | |
# - name: Build project documentation | |
# uses: ansys/actions/doc-build@v8 | |
# with: | |
# python-version: ${{ env.MAIN_PYTHON_VERSION }} | |
# dependencies: "libegl1" | |
# doc-deploy: | |
# name: "Deploy development documentation" | |
# runs-on: ubuntu-latest | |
# needs: [doc-build] | |
# if: github.ref == 'refs/heads/main' | |
# steps: | |
# - uses: ansys/actions/doc-deploy-dev@v8 | |
# with: | |
# cname: ${{ env.DOCUMENTATION_CNAME }} | |
# token: ${{ secrets.PYANSYS_CI_BOT_TOKEN }} | |
# bot-user: ${{ secrets.PYANSYS_CI_BOT_USERNAME }} | |
# bot-email: ${{ secrets.PYANSYS_CI_BOT_EMAIL }} | |
# build-application-windows: | |
# name: "Build Application" | |
# runs-on: windows-latest | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - uses: actions/setup-python@v5 | |
# with: | |
# python-version: ${{ env.MAIN_PYTHON_VERSION }} | |
# - name: Install Dependencies | |
# run: pip install -e .[freeze] | |
# - name: Freeze application | |
# run: pyinstaller frozen.spec | |
# - name: Install NSIS | |
# run: choco install nsis -y | |
# - name: Print NSIS version | |
# run: makensis -VERSION | |
# - name: Run NSIS | |
# shell: pwsh | |
# if: always() | |
# run: | | |
# Set-StrictMode -Version Latest | |
# $ErrorActionPreference = "Stop" | |
# makensis setup.nsi | |
# - name: List output | |
# run: ls -R dist | |
# - uses: actions/upload-artifact@v4 | |
# with: | |
# name: Python-Installer-windows | |
# path: dist/*Setup*.exe | |
# build-application-linux-debian: | |
# strategy: | |
# matrix: | |
# os: ["22.04", "20.04"] | |
# fail-fast: false | |
# name: "Build Application Linux - Ubuntu ${{ matrix.os }}" | |
# runs-on: ubuntu-${{ matrix.os }} | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - uses: actions/setup-python@v5 | |
# with: | |
# python-version: ${{ env.MAIN_PYTHON_VERSION }} | |
# - name: Install Linux Dependencies | |
# run: | | |
# sudo apt update | |
# sudo apt install aptitude -y; | |
# sudo aptitude install libfontconfig1-dev \ | |
# libfreetype6-dev \ | |
# libx11-dev \ | |
# libx11-xcb-dev \ | |
# libxext-dev \ | |
# libxfixes-dev \ | |
# libxi-dev \ | |
# libxrender-dev \ | |
# libxcb1-dev \ | |
# libxcb-glx0-dev \ | |
# libxcb-keysyms1-dev \ | |
# libxcb-image0-dev \ | |
# libxcb-shm0-dev \ | |
# libxcb-icccm4-dev \ | |
# libxcb-sync-dev \ | |
# libxcb-xfixes0-dev \ | |
# libxcb-shape0-dev \ | |
# libxcb-randr0-dev \ | |
# libxcb-render-util0-dev \ | |
# libxcb-cursor-dev \ | |
# libxcb-util-dev \ | |
# libxcb-xkb-dev \ | |
# libxcb-xinerama0-dev \ | |
# libxkbcommon-dev \ | |
# libxkbcommon-x11-dev \ | |
# -y | |
# sudo apt install ruby -y | |
# sudo gem install fpm | |
# - name: Ubuntu-20.04 dependencies | |
# if: matrix.os == '20.04' | |
# run: | | |
# sudo add-apt-repository ppa:okirby/qt6-backports -y | |
# sudo apt update | |
# sudo apt install qt6-base-dev -y | |
# wget http://archive.ubuntu.com/ubuntu/pool/main/libf/libffi/libffi8_3.4.2-4_amd64.deb | |
# sudo apt install ./libffi8_3.4.2-4_amd64.deb | |
# wget http://archive.ubuntu.com/ubuntu/pool/main/w/wayland/libwayland-client0_1.20.0-1_amd64.deb | |
# sudo apt install ./libwayland-client0_1.20.0-1_amd64.deb | |
# - name: Create python-3.11 artifact | |
# run: | | |
# mkdir -p cd ${HOME}/.cache | |
# cd ${HOME}/.cache | |
# wget https://www.python.org/ftp/python/${{ env.PRECOMPILE_PYTHON_VERSION }}/Python-${{ env.PRECOMPILE_PYTHON_VERSION }}.tar.xz | |
# tar -xf Python-${{ env.PRECOMPILE_PYTHON_VERSION }}.tar.xz | |
# cd Python-${{ env.PRECOMPILE_PYTHON_VERSION }} | |
# ./configure --prefix=${HOME}/python-${{ env.PRECOMPILE_PYTHON_VERSION }} | |
# cd ${HOME}/.cache/Python-${{ env.PRECOMPILE_PYTHON_VERSION }} | |
# make; | |
# make install; | |
# cd ${HOME}/python-${{ env.PRECOMPILE_PYTHON_VERSION }} | |
# cd .. | |
# tar -czf python-${{ env.PRECOMPILE_PYTHON_VERSION }}.tar.gz python-${{ env.PRECOMPILE_PYTHON_VERSION }}/ | |
# mkdir -p ${RUNNER_WORKSPACE}/python-installer-qt-gui/src/ansys/tools/installer/assets/python-asset/${{ matrix.os }} | |
# mv python-${{ env.PRECOMPILE_PYTHON_VERSION }}.tar.gz ${RUNNER_WORKSPACE}/python-installer-qt-gui/src/ansys/tools/installer/assets/python-asset/${{ matrix.os }} | |
# ls -l ${RUNNER_WORKSPACE}/python-installer-qt-gui/src/ansys/tools/installer/assets/python-asset/${{ matrix.os }} | |
# - name: Install Dependencies | |
# run: pip install -e .[freeze] | |
# - name: Freeze application | |
# env: | |
# ADD_PYTHON_BINARIES: true | |
# run: pyinstaller frozen.spec | |
# - name: Setup and Copy Linux files for packaging | |
# run: | | |
# mkdir -p package/opt | |
# mkdir -p package/share/applications | |
# mkdir -p package/share/icons | |
# cp -r dist/ansys_python_manager package/opt/ansys_python_manager | |
# cp src/ansys/tools/installer/assets/pyansys_icon.svg package/share/icons/pyansys_icon.svg | |
# cp linux/debian/ansys_python_manager_prebuid.desktop package/share/applications | |
# find package/opt/ansys_python_manager -type f -exec chmod 644 -- {} + | |
# find package/opt/ansys_python_manager -type d -exec chmod 755 -- {} + | |
# find package/share -type f -exec chmod 644 -- {} + | |
# chmod +x package/opt/ansys_python_manager/ansys_python_manager | |
# chmod +x package/opt/ansys_python_manager/_internal/assets/uninstaller_ubuntu.sh | |
# version=v`cat ./src/ansys/tools/installer/VERSION` | |
# echo "APPLICATION_VERSION=$version" >> $GITHUB_ENV | |
# fpm -v $version --fpm-options-file linux/debian/fpm-options-debian | |
# - name: Create zip file | |
# run: | | |
# cp linux/debian/installer.sh installer.sh | |
# cp linux/debian/postInstallScript.sh postInstallScript.sh | |
# chmod +x installer.sh postInstallScript.sh ansys_python_manager.deb | |
# ls -l | |
# os_version_processed=`echo ${{ matrix.os }} | sed 's/\./_/g'` | |
# echo "OS_VERSION_PROCESSED=$os_version_processed" >> $GITHUB_ENV | |
# zip -r Ansys-Python-Manager_linux_${os_version_processed}_${{ env.APPLICATION_VERSION }}.zip ansys_python_manager.deb installer.sh postInstallScript.sh | |
# - uses: actions/upload-artifact@v4 | |
# with: | |
# name: Python-Installer-ubuntu_${{ matrix.os }} | |
# path: | | |
# Ansys-Python-Manager_linux_${{ env.OS_VERSION_PROCESSED }}_${{ env.APPLICATION_VERSION }}.zip | |
build-application-linux-non-debian: | |
strategy: | |
matrix: | |
os: ["quay.io/centos/centos:stream9", "fedora:latest"] | |
fail-fast: false | |
name: "Build Application Linux - ${{ matrix.os }}" | |
runs-on: ubuntu-latest | |
container: | |
image: ${{ matrix.os }} | |
env: | |
DEBIAN_FRONTEND: 'noninteractive' | |
TZ: 'Etc/UTC' | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install CentOS/Fedora Dependencies | |
if: contains(matrix.os, 'centos') || contains(matrix.os, 'fedora') | |
run: | | |
yum update -y | |
yum group install development-tools -y | |
yum install python3 \ | |
python3-pip \ | |
wget \ | |
binutils \ | |
ruby-devel \ | |
rubygems \ | |
rpm-build \ | |
openssl \ | |
fontconfig-devel \ | |
freetype-devel \ | |
libX11-devel \ | |
libX11-xcb \ | |
libXext-devel \ | |
libXfixes-devel \ | |
libXi-devel \ | |
libXrender-devel \ | |
libxcb-devel \ | |
xcb-util-keysyms \ | |
xcb-util \ | |
xcb-util-image \ | |
xcb-util-wm \ | |
xcb-util-renderutil \ | |
libXcursor-devel \ | |
libglvnd-glx \ | |
libxshmfence-devel \ | |
libXrandr-devel \ | |
libxkbcommon-devel \ | |
libXinerama-devel \ | |
libxkbcommon-x11 \ | |
xorg-x11-drivers \ | |
mesa-libGL \ | |
mesa-libEGL \ | |
mesa-dri-drivers \ | |
python3-qt5 \ | |
gtk3-devel \ | |
gnome-terminal \ | |
dbus-x11 \ | |
-y | |
yum install ruby -y | |
gem install fpm | |
# - name: Create OS version, Github Workspace, Folder Name variables | |
# run: | | |
# os_version_processed=`echo ${{ matrix.os }} | sed 's/\:/_/g' | sed 's/\./_/g' | awk -F/ '{print $NF}'` | |
# echo "OS_VERSION_PROCESSED=$os_version_processed" >> $GITHUB_ENV | |
# echo "GITHUB_WORKSPACE=$GITHUB_WORKSPACE" >> $GITHUB_ENV | |
# folder_name=`echo $os_version_processed | awk -F_ '{print $1}'` | |
# echo "FOLDER_NAME=$folder_name" >> $GITHUB_ENV | |
# - name: Create python-3.11 artifact | |
# run: | | |
# mkdir -p cd ${{ env.GITHUB_WORKSPACE }}/.cache | |
# cd ${{ env.GITHUB_WORKSPACE }}/.cache | |
# wget https://www.python.org/ftp/python/${{ env.PRECOMPILE_PYTHON_VERSION }}/Python-${{ env.PRECOMPILE_PYTHON_VERSION }}.tar.xz | |
# tar -xf Python-${{ env.PRECOMPILE_PYTHON_VERSION }}.tar.xz | |
# cd Python-${{ env.PRECOMPILE_PYTHON_VERSION }} | |
# ./configure --prefix=${{ env.GITHUB_WORKSPACE }}/python-${{ env.PRECOMPILE_PYTHON_VERSION }} | |
# cd ${{ env.GITHUB_WORKSPACE }}/.cache/Python-${{ env.PRECOMPILE_PYTHON_VERSION }} | |
# make; | |
# make install; | |
# cd ${{ env.GITHUB_WORKSPACE }}/python-${{ env.PRECOMPILE_PYTHON_VERSION }} | |
# cd .. | |
# tar -czf python-${{ env.PRECOMPILE_PYTHON_VERSION }}.tar.gz python-${{ env.PRECOMPILE_PYTHON_VERSION }}/ | |
# mkdir -p ${{ env.GITHUB_WORKSPACE }}/src/ansys/tools/installer/assets/python-asset/${{ env.FOLDER_NAME }} | |
# mv python-${{ env.PRECOMPILE_PYTHON_VERSION }}.tar.gz ${{ env.GITHUB_WORKSPACE }}/src/ansys/tools/installer/assets/python-asset/${{ env.FOLDER_NAME }} | |
# ls -l ${{ env.GITHUB_WORKSPACE }}/src/ansys/tools/installer/assets/python-asset/${{ env.FOLDER_NAME }} | |
# - name: Update pip | |
# run: | | |
# python3 -m pip install pip -U | |
# - name: Install pip Dependencies | |
# run: | | |
# python3 -m pip install --ignore-installed -e .[freeze] | |
# - name: Freeze application | |
# env: | |
# ADD_PYTHON_BINARIES: false | |
# run: python3 -m PyInstaller frozen.spec | |
# - name: Setup and Copy CentOS/RHEL files for packaging | |
# if: contains(matrix.os, 'centos') | |
# run: | | |
# yum install xorg-x11-utils -y | |
# mkdir -p package_CentOS/opt | |
# mkdir -p package_CentOS/usr/share/applications | |
# mkdir -p package_CentOS/usr/share/icons/hicolor/scalable/apps | |
# chmod +x src/ansys/tools/installer/assets/scripts/uninstaller_yum.sh | |
# cp -r dist/ansys_python_manager package_CentOS/opt/ansys_python_manager | |
# cp src/ansys/tools/installer/assets/pyansys_icon.svg package_CentOS/usr/share/icons/hicolor/scalable/apps/pyansys_icon.svg | |
# cp linux/non-debian/ansys_python_manager.desktop package_CentOS/usr/share/applications | |
# find package_CentOS/opt/ansys_python_manager -type f -exec chmod 644 -- {} + | |
# find package_CentOS/opt/ansys_python_manager -type d -exec chmod 755 -- {} + | |
# find package_CentOS/usr/share -type f -exec chmod 644 -- {} + | |
# chmod +x package_CentOS/opt/ansys_python_manager/ansys_python_manager | |
# version=v`cat ./src/ansys/tools/installer/VERSION` | |
# echo "APPLICATION_VERSION=$version" >> $GITHUB_ENV | |
# fpm -v $version --fpm-options-file linux/non-debian/fpm-options-centos | |
# cp ./linux/non-debian/installer_CentOS.sh installer_CentOS.sh | |
# cp ./linux/non-debian/updater_CentOS.sh updater_CentOS.sh | |
# chmod +x installer_CentOS.sh updater_CentOS.sh ansys_python_manager_CentOS.rpm | |
# zip -r ${{ env.GITHUB_WORKSPACE }}/Ansys-Python-Manager_linux_${{ env.OS_VERSION_PROCESSED }}_${version}.zip ansys_python_manager_CentOS.rpm installer_CentOS.sh updater_CentOS.sh | |
# ls -l ${{ env.GITHUB_WORKSPACE }} | |
# - name: Setup and Copy Fedora files for packaging | |
# if: contains(matrix.os, 'fedora') | |
# run: | | |
# mkdir -p package_Fedora/opt | |
# mkdir -p package_Fedora/usr/share/applications | |
# mkdir -p package_Fedora/usr/share/icons/hicolor/scalable/apps | |
# chmod +x src/ansys/tools/installer/assets/scripts/uninstaller_yum.sh | |
# cp -r dist/ansys_python_manager package_Fedora/opt/ansys_python_manager | |
# cp src/ansys/tools/installer/assets/pyansys_icon.svg package_Fedora/usr/share/icons/hicolor/scalable/apps/pyansys_icon.svg | |
# cp linux/non-debian/ansys_python_manager.desktop package_Fedora/usr/share/applications | |
# find package_Fedora/opt/ansys_python_manager -type f -exec chmod 644 -- {} + | |
# find package_Fedora/opt/ansys_python_manager -type d -exec chmod 755 -- {} + | |
# find package_Fedora/usr/share -type f -exec chmod 644 -- {} + | |
# chmod +x package_Fedora/opt/ansys_python_manager/ansys_python_manager | |
# version=v`cat ./src/ansys/tools/installer/VERSION` | |
# echo "APPLICATION_VERSION=$version" >> $GITHUB_ENV | |
# fpm -v $version --fpm-options-file linux/non-debian/fpm-options-fedora | |
# cp ./linux/non-debian/installer_CentOS.sh installer_Fedora.sh | |
# cp ./linux/non-debian/updater_CentOS.sh updater_Fedora.sh | |
# chmod +x installer_Fedora.sh updater_Fedora.sh ansys_python_manager_Fedora.rpm | |
# zip -r ${{ env.GITHUB_WORKSPACE }}/Ansys-Python-Manager_linux_${{ env.OS_VERSION_PROCESSED }}_${version}.zip ansys_python_manager_Fedora.rpm installer_Fedora.sh updater_Fedora.sh | |
# ls -l ${{ env.GITHUB_WORKSPACE }} | |
# - uses: actions/upload-artifact@v4 | |
# with: | |
# name: Python-Installer-${{ env.OS_VERSION_PROCESSED }} | |
# path: | | |
# ${{ env.GITHUB_WORKSPACE }}/Ansys-Python-Manager_linux_${{ env.OS_VERSION_PROCESSED }}_${{ env.APPLICATION_VERSION }}.zip | |
# sign-application-windows: | |
# name: Sign application | |
# needs: [build-application-windows] | |
# runs-on: | |
# group: ansys-network | |
# labels: [self-hosted, Windows, signtool] | |
# steps: | |
# - name: Checkout the SignTool | |
# uses: actions/checkout@v4 | |
# with: | |
# repository: ansys-internal/signtool-ansys-apps | |
# token: ${{ secrets.SIGNTOOL_ACCESS_TOKEN }} | |
# - uses: actions/download-artifact@v4 | |
# with: | |
# name: Python-Installer-windows | |
# path: signtool/installer | |
# - name: List current structure | |
# run: ls -R | |
# - name: Sign application | |
# working-directory: signtool | |
# run: | | |
# $filename = (get-ChildItem installer -recurse | where {$_.name -like "*Setup*"}).Name | |
# $jobname = $filename -replace ".{4}$" | |
# dotnet signclient.dll sign ` | |
# -r [email protected] ` | |
# -s '${{ secrets.SIGNTOOL_PWD }}' ` | |
# -c AppSettings.json ` | |
# -n $jobname ` | |
# -i installer/$filename | |
# - uses: actions/upload-artifact@v4 | |
# with: | |
# name: Python-Installer-windows-signed | |
# path: signtool/installer/*Setup*.exe | |
# release: | |
# name: Release application | |
# if: github.event_name == 'push' && contains(github.ref, 'refs/tags') | |
# needs: | |
# - sign-application-windows | |
# - build-application-linux-debian | |
# - build-application-linux-non-debian | |
# runs-on: ubuntu-latest | |
# steps: | |
# - uses: actions/download-artifact@v4 | |
# with: | |
# name: Python-Installer-windows-signed | |
# path: installer-signed | |
# - uses: actions/download-artifact@v4 | |
# with: | |
# name: Python-Installer-windows | |
# path: installer | |
# - uses: actions/download-artifact@v4 | |
# with: | |
# name: Python-Installer-ubuntu_20.04 | |
# path: installer | |
# - uses: actions/download-artifact@v4 | |
# with: | |
# name: Python-Installer-ubuntu_22.04 | |
# path: installer | |
# - uses: actions/download-artifact@v4 | |
# with: | |
# name: Python-Installer-centos_stream9 | |
# path: installer | |
# - uses: actions/download-artifact@v4 | |
# with: | |
# name: Python-Installer-fedora_latest | |
# path: installer | |
# - name: Display structure of downloaded files | |
# run: ls -R | |
# - name: Rename unsigned exe | |
# run: | | |
# cd installer | |
# for filename in *.exe; do mv "$filename" "Unsigned_${filename}"; done; | |
# cd - | |
# - name: Release to GitHub | |
# uses: softprops/action-gh-release@v2 | |
# with: | |
# files: | | |
# installer/*.zip | |
# installer-signed/*.exe | |
# installer/*.exe | |
# generate_release_notes: true | |
# doc-deploy-release: | |
# name: Upload release documentation | |
# if: github.event_name == 'push' && contains(github.ref, 'refs/tags') | |
# runs-on: ubuntu-latest | |
# needs: [release, doc-build] | |
# steps: | |
# - name: Deploy the stable documentation | |
# uses: ansys/actions/doc-deploy-stable@v8 | |
# with: | |
# cname: ${{ env.DOCUMENTATION_CNAME }} | |
# token: ${{ secrets.PYANSYS_CI_BOT_TOKEN }} | |
# bot-user: ${{ secrets.PYANSYS_CI_BOT_USERNAME }} | |
# bot-email: ${{ secrets.PYANSYS_CI_BOT_EMAIL }} | |