name: CompileAndDeploy on: #[push, pull_request] #just for test the deployment schedule: - cron: '0 0 1 * *' #every first day of the month at midnight jobs: ubuntu_build: name: Build MeshLab (Ubuntu) runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Installing dependencies run: | sudo apt install -y qt5-default qtscript5-dev libqt5xmlpatterns5-dev mesa-common-dev libglu1-mesa-dev lib3ds-dev libglew-dev libeigen3-dev libopenctm-dev libgmp-dev libqhull-dev cd .. git clone --depth=1 --branch=devel https://github.com/cnr-isti-vclab/vcglib.git cd meshlab - name: Compiling external run: | cd src/external qmake external.pro make -j4 - name: Compiling MeshLab run: | cd src/ qmake meshlab_full.pro make -j4 macos_build: name: Build MeshLab (MacOS) runs-on: macos steps: - uses: actions/checkout@v2 - name: Installing dependencies run: | brew install llvm libomp qt npm install -g appdmg export COLUMNS=80 cd .. git clone --depth=1 --branch=devel https://github.com/cnr-isti-vclab/vcglib.git cd meshlab - name: Setting env variables id: envs shell: bash run: | echo '::set-env name=QTDIR::/usr/local/opt/qt' echo '::add-path::/usr/local/opt/qt/bin' echo '::set-env name=LD_LIBRARY_PATH::/usr/local/opt/qt/lib:${{env.LD_LIBRARY_PATH}}' echo '::set-env name=PKG_CONFIG_PATH::/usr/local/opt/qt/lib:${{env.PKG_CONFIG_PATH}}' echo ::set-output name=date::"$(date +%Y-%m)" - name: Compiling external run: | cd src/external qmake external.pro make -j4 - name: Compiling MeshLab run: | cd src/ qmake meshlab_full.pro make -j4 - name: Creating DMG run: | cd src/install/macx ./macinstall_latest.sh echo "------ Completed!!! We should have a dmg here " cd ../../.. ls -la src/distrib/MeshLab${{steps.envs.outputs.date}}.dmg - name: Uploading DMG uses: actions/upload-artifact@v1 with: name: meshlab_dmg path: src/distrib/MeshLab${{steps.envs.outputs.date}}.dmg windows_build: name: Build MeshLab (Windows) runs-on: windows-latest steps: - uses: actions/checkout@v2 - name: Setting MSVC uses: ilammy/msvc-dev-cmd@v1 - name: Installing QT uses: jurplel/install-qt-action@v2 with: modules: qtscript xmlpatterns - name: Installing dependencies run: | cd .. git clone --depth=1 --branch=devel https://github.com/cnr-isti-vclab/vcglib.git - name: Compiling external run: | cd src\external qmake external.pro -r nmake - name: Compiling MeshLab run: | cd src\ qmake meshlab_full.pro -r nmake - name: Creating MeshLab Portable run: | cd src\distrib windeployqt --no-translations meshlab.exe - name: Uploading Meshlab Portable uses: actions/upload-artifact@v1 with: name: meshlab_portable path: src\distrib create_prerelease: name: Creating Prerelease needs: [ubuntu_build, macos_build, windows_build] runs-on: ubuntu-latest steps: - name: Setting env variables id: envs run: | echo ::set-output name=date::"$(date +%Y-%m)" - name: Publishing PreRelease id: create_prerelease uses: actions/create-release@v1.0.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: Meshlab-${{steps.envs.outputs.date}}-${{github.sha}} release_name: MeshLab-${{steps.envs.outputs.date}}-beta draft: false prerelease: true - name: Downloading DMG uses: actions/download-artifact@v1 with: name: meshlab_dmg - name: Uploading PreReleaseMacOS id: upload-prerelease-macos uses: actions/upload-release-asset@v1.0.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_prerelease.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps asset_path: meshlab_dmg/MeshLab${{steps.envs.outputs.date}}.dmg asset_name: MeshLab${{steps.envs.outputs.date}}.dmg asset_content_type: MeshLab for MacOS - name: Downloading MeshLab Portable uses: actions/download-artifact@v1 with: name: meshlab_portable - name: Creating Meshlab Portable Archive run: | zip -r MeshLab${{steps.envs.outputs.date}}-portable.zip meshlab_portable/ ls - name: Uploading PreReleaseWindowsPortable id: upload-prerelease-windows-portable uses: actions/upload-release-asset@v1.0.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_prerelease.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps asset_path: MeshLab${{steps.envs.outputs.date}}-portable.zip asset_name: MeshLab${{steps.envs.outputs.date}}-portable.zip asset_content_type: MeshLab Portable for Windows # - name: Uploading PreReleaseUbuntu # id: upload-prerelease-ubuntu # uses: actions/upload-release-asset@v1.0.1 # env: # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # with: # upload_url: ${{ steps.create_prerelease.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps # asset_path: src/distrib/MeshLab201804.dmg # asset_name: MeshLab201804.dmg # asset_content_type: MeshLab for MacOS