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