Skip to content

CreateRelease

CreateRelease #11

Workflow file for this run

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