CreateRelease #11
This file contains hidden or 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: CreateRelease | |
on: | |
#[push, pull_request] #just for test release scripts | |
workflow_dispatch: #manual run | |
inputs: | |
version: | |
description: 'New MeshLab Version' | |
required: true | |
default: 'YYYY.MM' | |
env: | |
QT_VERSION: 5.15.2 | |
jobs: | |
update_ml_version: | |
name: Update ML_VERSION | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Update MeshLab version | |
run : | | |
echo ${{ github.event.inputs.version }} | tr -d '\n'> ML_VERSION | |
- name: commit ML_VERSION change | |
uses: stefanzweifel/git-auto-commit-action@v4 | |
with: | |
commit_message: Set MeshLab version to ${{ github.event.inputs.version }} | |
meshlab_build: | |
needs: [update_ml_version] | |
name: Build MeshLab | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: ['ubuntu-22.04', 'ubuntu-22.04-arm', 'macos-13', 'macos-latest', 'windows-latest'] | |
precision: [single_precision, double_precision] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
ref: main | |
- name: Setup Environment | |
uses: ./.github/actions/0_setup | |
with: | |
qt-version: ${{env.QT_VERSION}} | |
use-jurpel-qt-action: ${{matrix.os != 'macos-latest' && matrix.os != 'ubuntu-22.04-arm'}} | |
- name: Setup env variables | |
id: envs | |
shell: bash | |
run: | | |
ARCH=$(uname -m) | |
if [ "${{matrix.precision}}" == "double_precision" ]; then | |
echo "artifact_suffix=_double_$ARCH" >> $GITHUB_OUTPUT | |
else | |
echo "artifact_suffix=_$ARCH" >> $GITHUB_OUTPUT | |
fi | |
if [ "${{matrix.os}}" == "macos-latest" ]; then | |
echo "build_options=--use_brew_qt" >> $GITHUB_OUTPUT | |
else | |
echo "build_options=" >> $GITHUB_OUTPUT | |
fi | |
- name: Build | |
uses: ./.github/actions/1_build | |
with: | |
cache-path: src/external/downloads/* | |
cache-key: external-libraries | |
build-precision: ${{matrix.precision}} | |
build-options: ${{steps.envs.outputs.build_options}} | |
- name: Deploy | |
uses: ./.github/actions/2_deploy | |
with: | |
use-brew-qt: ${{matrix.os == 'macos-latest'}} | |
mac-certificate: ${{ secrets.MACOS_CERTIFICATE }} | |
mac-certificate-id: ${{ secrets.MACOS_CERT_ID }} | |
mac-certificate-pssw: ${{ secrets.MACOS_CERTIFICATE_PSSW }} | |
mac-notarization-user: ${{ secrets.MACOS_NOTARIZATION_USER }} | |
mac-notarization-team: ${{ secrets.MACOS_NOTARIZATION_TEAM_ID }} | |
mac-notarization-pssw: ${{ secrets.MACOS_NOTARIZATION_PSSW }} | |
win-certificate: ${{ secrets.WIN_CERTIFICATE }} | |
win-certificate-pssw: ${{ secrets.WIN_CERTIFICATE_PSSW }} | |
- name: Upload MeshLab Portable | |
uses: actions/upload-artifact@v4 | |
with: | |
name: MeshLab_${{ runner.os }}_portable${{steps.envs.outputs.artifact_suffix}} | |
path: install/ | |
- name: Upload MeshLab Packages | |
uses: actions/upload-artifact@v4 | |
with: | |
name: MeshLab_${{ runner.os }}_packages${{steps.envs.outputs.artifact_suffix}} | |
path: packages/MeshLab* | |
#after building MeshLab for the three platforms, we create a release in github | |
create_release: | |
name: Create Release | |
needs: [meshlab_build] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Install dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install libopengl0 | |
#Download Linux Packages | |
- name: Download Linux x86_64 ZIP | |
uses: actions/download-artifact@v4 | |
with: | |
name: MeshLab_Linux_portable_x86_64 | |
path: meshlab_linux_portable_x86_64 | |
- name: Download Linux x86_64 ZIP-d | |
uses: actions/download-artifact@v4 | |
with: | |
name: MeshLab_Linux_portable_double_x86_64 | |
path: meshlab_linux_portable_double_x86_64 | |
- name: Download Linux x86_64 AppImage | |
uses: actions/download-artifact@v4 | |
with: | |
name: MeshLab_Linux_packages_x86_64 | |
path: meshlab_linux_appimage_x86_64 | |
- name: Download Linux x86_64 AppImage-d | |
uses: actions/download-artifact@v4 | |
with: | |
name: MeshLab_Linux_packages_double_x86_64 | |
path: meshlab_linux_appimage_double_x86_64 | |
- name: Download Linux aarch64 ZIP | |
uses: actions/download-artifact@v4 | |
with: | |
name: MeshLab_Linux_portable_aarch64 | |
path: meshlab_linux_portable_aarch64 | |
- name: Download Linux aarch64 ZIP-d | |
uses: actions/download-artifact@v4 | |
with: | |
name: MeshLab_Linux_portable_double_aarch64 | |
path: meshlab_linux_portable_double_aarch64 | |
- name: Download Linux aarch64 AppImage | |
uses: actions/download-artifact@v4 | |
with: | |
name: MeshLab_Linux_packages_aarch64 | |
path: meshlab_linux_appimage_aarch64 | |
- name: Download Linux aarch64 AppImage-d | |
uses: actions/download-artifact@v4 | |
with: | |
name: MeshLab_Linux_packages_double_aarch64 | |
path: meshlab_linux_appimage_double_aarch64 | |
- name: Change Permissions | |
run: | | |
chmod +x meshlab_linux_portable_x86_64/usr/bin/meshlab | |
chmod +x meshlab_linux_portable_x86_64/AppRun | |
chmod +x meshlab_linux_portable_double_x86_64/usr/bin/meshlab | |
chmod +x meshlab_linux_portable_double_x86_64/AppRun | |
chmod +x meshlab_linux_portable_aarch64/usr/bin/meshlab | |
chmod +x meshlab_linux_portable_aarch64/AppRun | |
chmod +x meshlab_linux_portable_double_aarch64/usr/bin/meshlab | |
chmod +x meshlab_linux_portable_double_aarch64/AppRun | |
- name: Setup env variables | |
id: envs | |
shell: bash | |
run: | | |
#get version of meshlab | |
IFS=' ' #space delimiter | |
STR_VERSION=$(meshlab_linux_portable_x86_64/usr/bin/meshlab --version) | |
read -a strarr <<< "$STR_VERSION" | |
ML_VERSION=${strarr[1]} #get the meshlab version from the string | |
echo "ml_version=$ML_VERSION" >> $GITHUB_OUTPUT | |
STR_VERSION=$(meshlab_linux_portable_double_x86_64/usr/bin/meshlab --version) | |
read -a strarrd <<< "$STR_VERSION" | |
ML_VERSION_D=${strarrd[1]} #get the meshlab version from the string | |
echo "ml_version_d=$ML_VERSION_D" >> $GITHUB_OUTPUT | |
- name: Create MeshLab Portable Linux Archive | |
run: | | |
cd meshlab_linux_portable_x86_64 | |
tar -cvzf ../MeshLab${{steps.envs.outputs.ml_version}}-linux_x86_64.tar.gz * | |
cd ../meshlab_linux_portable_double_x86_64 | |
tar -cvzf ../MeshLab${{steps.envs.outputs.ml_version_d}}-linux_x86_64.tar.gz * | |
cd ../meshlab_linux_portable_aarch64 | |
tar -cvzf ../MeshLab${{steps.envs.outputs.ml_version}}-linux_aarch64.tar.gz * | |
cd ../meshlab_linux_portable_double_aarch64 | |
tar -cvzf ../MeshLab${{steps.envs.outputs.ml_version_d}}-linux_aarch64.tar.gz * | |
cd .. | |
#Download MacOS Packages | |
- name: Download MacOS DMG x86_64 | |
uses: actions/download-artifact@v4 | |
with: | |
name: MeshLab_macOS_packages_x86_64 | |
path: meshlab_macos_dmg_x86_64 | |
- name: Download MacOS DMG-d x86_64 | |
uses: actions/download-artifact@v4 | |
with: | |
name: MeshLab_macOS_packages_double_x86_64 | |
path: meshlab_macos_dmg_double_x86_64 | |
- name: Download MacOS DMG arm64 | |
uses: actions/download-artifact@v4 | |
with: | |
name: MeshLab_macOS_packages_arm64 | |
path: meshlab_macos_dmg_arm64 | |
- name: Download MacOS DMG-d arm64 | |
uses: actions/download-artifact@v4 | |
with: | |
name: MeshLab_macOS_packages_double_arm64 | |
path: meshlab_macos_dmg_double_arm64 | |
#Download Windows Packages | |
- name: Download Windows ZIP | |
uses: actions/download-artifact@v4 | |
with: | |
name: MeshLab_Windows_portable_x86_64 | |
path: meshlab_windows_portable_x86_64 | |
- name: Download Windows ZIP-d | |
uses: actions/download-artifact@v4 | |
with: | |
name: MeshLab_Windows_portable_double_x86_64 | |
path: meshlab_windows_portable_double_x86_64 | |
- name: Download Windows Installer | |
uses: actions/download-artifact@v4 | |
with: | |
name: MeshLab_Windows_packages_x86_64 | |
path: meshlab_windows_installer_x86_64 | |
- name: Download Windows Installer-d | |
uses: actions/download-artifact@v4 | |
with: | |
name: MeshLab_Windows_packages_double_x86_64 | |
path: meshlab_windows_installer_double_x86_64 | |
- name: Create MeshLab Portable Windows Archive | |
run: | | |
cd meshlab_windows_portable_x86_64 | |
zip -r ../MeshLab${{steps.envs.outputs.ml_version}}-windows_x86_64.zip * | |
cd ../meshlab_windows_portable_double_x86_64 | |
zip -r ../MeshLab${{steps.envs.outputs.ml_version_d}}-windows_x86_64.zip * | |
cd .. | |
#Create release and upload | |
- name: Create Release | |
uses: "ncipollo/release-action@v1" | |
with: | |
token: "${{ secrets.GITHUB_TOKEN }}" | |
tag: "MeshLab-${{steps.envs.outputs.ml_version}}" | |
name: "MeshLab-${{steps.envs.outputs.ml_version}}" | |
artifacts: | | |
MeshLab${{steps.envs.outputs.ml_version}}-linux_x86_64.tar.gz | |
MeshLab${{steps.envs.outputs.ml_version_d}}-linux_x86_64.tar.gz | |
meshlab_linux_appimage_x86_64/MeshLab${{steps.envs.outputs.ml_version}}-linux_x86_64.AppImage | |
meshlab_linux_appimage_double_x86_64/MeshLab${{steps.envs.outputs.ml_version_d}}-linux_x86_64.AppImage | |
MeshLab${{steps.envs.outputs.ml_version}}-linux_aarch64.tar.gz | |
MeshLab${{steps.envs.outputs.ml_version_d}}-linux_aarch64.tar.gz | |
meshlab_linux_appimage_aarch64/MeshLab${{steps.envs.outputs.ml_version}}-linux_aarch64.AppImage | |
meshlab_linux_appimage_double_aarch64/MeshLab${{steps.envs.outputs.ml_version_d}}-linux_aarch64.AppImage | |
meshlab_macos_dmg_x86_64/MeshLab${{steps.envs.outputs.ml_version}}-macos_x86_64.dmg | |
meshlab_macos_dmg_double_x86_64/MeshLab${{steps.envs.outputs.ml_version_d}}-macos_x86_64.dmg | |
meshlab_macos_dmg_arm64/MeshLab${{steps.envs.outputs.ml_version}}-macos_arm64.dmg | |
meshlab_macos_dmg_double_arm64/MeshLab${{steps.envs.outputs.ml_version_d}}-macos_arm64.dmg | |
MeshLab${{steps.envs.outputs.ml_version}}-windows_x86_64.zip | |
MeshLab${{steps.envs.outputs.ml_version_d}}-windows_x86_64.zip | |
meshlab_windows_installer_x86_64/MeshLab${{steps.envs.outputs.ml_version}}-windows_x86_64.exe | |
meshlab_windows_installer_double_x86_64/MeshLab${{steps.envs.outputs.ml_version_d}}-windows_x86_64.exe |