Skip to content

CreateRelease

CreateRelease #10

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@v3
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-20.04', 'macos-latest', 'windows-latest']
precision: [single_precision, double_precision]
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
ref: main
- name: Setup Environment
uses: ./.github/actions/0_setup
- name: Setup env variables
id: envs
shell: bash
run: |
if [ "${{matrix.precision}}" == "double_precision" ]; then
echo "artifact_suffix=_double" >> $GITHUB_OUTPUT
else
echo "artifact_suffix=" >> $GITHUB_OUTPUT
fi
- name: Build
uses: ./.github/actions/1_build
with:
cache-path: src/external/downloads/*
cache-key: external-libraries
build-option: ${{matrix.precision}}
- name: Deploy
uses: ./.github/actions/2_deploy
with:
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@v3
with:
name: MeshLab_${{ runner.os }}_portable${{steps.envs.outputs.artifact_suffix}}
path: install/
- name: Upload MeshLab Packages
uses: actions/upload-artifact@v3
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:
#Download Linux Packages
- name: Download Linux ZIP
uses: actions/download-artifact@v3
with:
name: MeshLab_Linux_portable
path: meshlab_linux_portable
- name: Download Linux ZIP-d
uses: actions/download-artifact@v3
with:
name: MeshLab_Linux_portable_double
path: meshlab_linux_portable_double
- name: Download Linux AppImage
uses: actions/download-artifact@v3
with:
name: MeshLab_Linux_packages
path: meshlab_linux_appimage
- name: Download Linux AppImage-d
uses: actions/download-artifact@v3
with:
name: MeshLab_Linux_packages_double
path: meshlab_linux_appimage_double
- name: Change Permissions
run: |
chmod +x meshlab_linux_portable/usr/bin/meshlab
chmod +x meshlab_linux_portable/AppRun
chmod +x meshlab_linux_portable_double/usr/bin/meshlab
chmod +x meshlab_linux_portable_double/AppRun
- name: Setup env variables
id: envs
shell: bash
run: |
#get version of meshlab
IFS=' ' #space delimiter
STR_VERSION=$(meshlab_linux_portable/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/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
tar -cvzf ../MeshLab${{steps.envs.outputs.ml_version}}-linux.tar.gz *
cd ../meshlab_linux_portable_double
tar -cvzf ../MeshLab${{steps.envs.outputs.ml_version_d}}-linux.tar.gz *
cd ..
#Download MacOS Package
- name: Download MacOS DMG
uses: actions/download-artifact@v3
with:
name: MeshLab_macOS_packages
path: meshlab_macos_dmg
- name: Download MacOS DMG-d
uses: actions/download-artifact@v3
with:
name: MeshLab_macOS_packages_double
path: meshlab_macos_dmg_double
#Download Windows Packages
- name: Download Windows ZIP
uses: actions/download-artifact@v3
with:
name: MeshLab_Windows_portable
path: meshlab_windows_portable
- name: Download Windows ZIP-d
uses: actions/download-artifact@v3
with:
name: MeshLab_Windows_portable_double
path: meshlab_windows_portable_double
- name: Download Windows Installer
uses: actions/download-artifact@v3
with:
name: MeshLab_Windows_packages
path: meshlab_windows_installer
- name: Download Windows Installer-d
uses: actions/download-artifact@v3
with:
name: MeshLab_Windows_packages_double
path: meshlab_windows_installer_double
- name: Create MeshLab Portable Windows Archive
run: |
cd meshlab_windows_portable
zip -r ../MeshLab${{steps.envs.outputs.ml_version}}-windows.zip *
cd ../meshlab_windows_portable_double
zip -r ../MeshLab${{steps.envs.outputs.ml_version_d}}-windows.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.tar.gz
MeshLab${{steps.envs.outputs.ml_version_d}}-linux.tar.gz
meshlab_linux_appimage/MeshLab${{steps.envs.outputs.ml_version}}-linux.AppImage
meshlab_linux_appimage_double/MeshLab${{steps.envs.outputs.ml_version_d}}-linux.AppImage
meshlab_macos_dmg/MeshLab${{steps.envs.outputs.ml_version}}-macos.dmg
meshlab_macos_dmg_double/MeshLab${{steps.envs.outputs.ml_version_d}}-macos.dmg
MeshLab${{steps.envs.outputs.ml_version}}-windows.zip
MeshLab${{steps.envs.outputs.ml_version_d}}-windows.zip
meshlab_windows_installer/MeshLab${{steps.envs.outputs.ml_version}}-windows.exe
meshlab_windows_installer_double/MeshLab${{steps.envs.outputs.ml_version_d}}-windows.exe