WIP | DRAFT | Test build #19
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: "Build and release" | |
| on: | |
| push: | |
| branches: | |
| - main | |
| - release-process | |
| env: | |
| WINDOWS_RELEASE_TAG: windows-x64-opensemba-tessellator-draft | |
| LINUX_RELEASE_TAG: linux-opensemba-tessellator-draft | |
| WINDOWS_FILENAME: opensemba-tessellator-windows-x64.tar.gz | |
| LINUX_FILENAME: opensemba-tessellator-linux.tar.gz | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| build-temporary-releases: | |
| strategy: | |
| matrix: | |
| preset: [ | |
| {"os": windows-latest, "name": "msbuild", "filename": "windows-x64"}, | |
| {"os": ubuntu-latest, "name": "gnu", "filename": "linux"} | |
| ] | |
| build-type: ["Release"] | |
| fail-fast: false | |
| name: ${{ matrix.preset.os }} / ${{matrix.preset.name}} / ${{matrix.build-type}} | |
| runs-on: ${{ matrix.preset.os }} | |
| steps: | |
| - name: checkout repository | |
| uses: actions/checkout@v3 | |
| - name: setup ninja | |
| uses: seanmiddleditch/gha-setup-ninja@master | |
| - name: getcmake | |
| uses: lukka/get-cmake@latest | |
| # - name: Setup upterm session | |
| # uses: lhotari/action-upterm@v1 | |
| # I am having issues installing vcpkg in ubuntu. | |
| - name: Setup vtk in ubuntu | |
| if: matrix.preset.os=='ubuntu-latest' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libvtk9-dev | |
| - name: Setup vcpkg | |
| uses: lukka/run-vcpkg@v11 | |
| - name: Windows configure and build | |
| if: matrix.preset.name=='msbuild' | |
| run: | | |
| cmake --preset ${{matrix.preset.name}} -S . -B build | |
| cmake --build build --config ${{matrix.build-type}} -j | |
| - name: Windows Run tests | |
| if: matrix.preset.name=='msbuild' | |
| run: build/bin/${{matrix.build-type}}/tessellator_tests.exe | |
| - name: Ubuntu configure and build | |
| if: matrix.preset.name=='gnu' | |
| run: | | |
| cmake --preset ${{matrix.preset.name}} -S . -B build | |
| cmake --build build -j | |
| - name: Ubuntu Run tests | |
| if: matrix.preset.name=='gnu' | |
| run: build/bin/tessellator_tests | |
| - name: Create linux .tar file | |
| if: matrix.preset.name=='gnu' | |
| run: | | |
| cd build/bin && tar --exclude="*test*" -czvf ${{ env.LINUX_FILENAME }} * | |
| - name: Create windows .tar file | |
| if: matrix.preset.name=='msbuild' | |
| run: | | |
| cd build/bin/${{matrix.build-type}} && tar --exclude="*test*" --exclude="*.gz" -czvf "${{ env.WINDOWS_FILENAME }}" * | |
| - name: Generating linux pre-release | |
| if: matrix.preset.name=='gnu' | |
| uses: "marvinpinto/action-automatic-releases@latest" | |
| with: | |
| repo_token: "${{ secrets.GITHUB_TOKEN }}" | |
| automatic_release_tag: "${{ env.LINUX_RELEASE_TAG }}" | |
| draft: True | |
| title: "${{matrix.preset.filename}} OpenSemba Tessellator draft release" | |
| files: | | |
| ./build/bin/${{ env.LINUX_FILENAME }} | |
| - name: Generating windows pre-release | |
| if: matrix.preset.name=='msbuild' | |
| uses: "marvinpinto/action-automatic-releases@latest" | |
| with: | |
| repo_token: "${{ secrets.GITHUB_TOKEN }}" | |
| automatic_release_tag: "${{ env.WINDOWS_RELEASE_TAG }}" | |
| draft: True | |
| title: "${{matrix.preset.filename}} OpenSemba Tessellator draft release" | |
| files: | | |
| ./build/bin/${{matrix.build-type}}/${{ env.WINDOWS_FILENAME }} | |
| make-release: | |
| name: combine releases | |
| runs-on: ubuntu-latest | |
| needs: build-temporary-releases | |
| steps: | |
| - name: download windows tar file | |
| uses: robinraju/release-downloader@v1 | |
| with: | |
| repository: OpenSEMBA/tessellator | |
| tag: ${{env.WINDOWS_RELEASE_TAG}} | |
| fileName: ${{ env.WINDOWS_FILENAME }} | |
| - name: download linux tar file | |
| uses: robinraju/release-downloader@v1 | |
| with: | |
| repository: OpenSEMBA/tessellator | |
| tag: ${{env.LINUX_RELEASE_TAG}} | |
| fileName: ${{ env.LINUX_FILENAME }} | |
| - name: Get current date | |
| id: date | |
| run: echo "::set-output name=date::$(date +'%Y-%m-%d')" | |
| - name: Generating release | |
| uses: "marvinpinto/action-automatic-releases@latest" | |
| with: | |
| repo_token: "${{ secrets.GITHUB_TOKEN }}" | |
| automatic_release_tag: "${{ steps.date.outputs.date }}-latest-opensemba-tessellator" | |
| pre-release: True | |
| title: "${{ matrix.preset.filename }} OpenSemba Tessellator release" | |
| files: | | |
| ${{ env.WINDOWS_FILENAME }} | |
| ${{ env.LINUX_FILENAME }} | |
| - name: Clean old pre-release | |
| uses: "sgpublic/[email protected]" | |
| with: | |
| draft-drop: true | |
| draft-keep-count: -1 | |
| draft-drop-tag: true | |
| env: | |
| GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" |