name: Build on: create: tags: -v* push: branches: - master pull_request: branches: - master jobs: test: name: "Tests" strategy: matrix: include: - name: Linux GCC os: ubuntu-latest compiler: g++-9 test: true - name: Linux Clang os: ubuntu-latest compiler: clang++ test: true - name: MacOS clang os: macos-latest compiler: clang++ test: true - name: Windows MSVC os: windows-latest compiler: cl test: false runs-on: ${{ matrix.os }} steps: - name: "Checkout repository" uses: actions/checkout@v2 - name: "Enable MSVC command prompt" if: matrix.os == 'windows-latest' uses: ilammy/msvc-dev-cmd@v1 - name: "Install cmake" uses: lukka/get-cmake@latest - name: "Build debug mode" run: > mkdir build; cd build; cmake .. -DCMAKE_CXX_COMPILER=${{ matrix.compiler }} -DFTXUI_BUILD_DOCS=OFF -DFTXUI_BUILD_EXAMPLES=ON -DFTXUI_BUILD_TESTS=ON -DFTXUI_BUILD_TESTS_FUZZER=OFF -DFTXUI_ENABLE_INSTALL=ON ; cmake --build . --config Debug; - name: "Run tests" if: matrix.test run: > cd build; ./tests # Create a release on new v* tags release: needs: test if: ${{ github.event_name == 'create' && startsWith(github.ref, 'refs/tags/v') }} name: "Create release" runs-on: ubuntu-latest outputs: upload_url: ${{ steps.create_release.outputs.upload_url }} steps: - name: "Create release" uses: softprops/action-gh-release@v1 id: create_release with: draft: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Build artifact for the release package: name: "Build packages" needs: release strategy: matrix: include: - os: ubuntu-latest asset_path: build/ftxui*Linux* - os: macos-latest asset_path: build/ftxui*Darwin* - os: windows-latest asset_path: build/ftxui*Win64* runs-on: ${{ matrix.os }} steps: - name: "Checkout repository" uses: actions/checkout@v2 - name: "Install cmake" uses: lukka/get-cmake@latest - name: "Build packages" run: > mkdir build; cd build; cmake .. -DCMAKE_BUILD_TYPE=Release -DFTXUI_BUILD_DOCS=OFF -DFTXUI_BUILD_EXAMPLES=OFF -DFTXUI_BUILD_TESTS=OFF -DFTXUI_BUILD_TESTS_FUZZER=OFF -DFTXUI_ENABLE_INSTALL=ON; cmake --build . --config Release --target package; - uses: shogo82148/actions-upload-release-asset@v1 with: upload_url: ${{ needs.release.outputs.upload_url }} asset_path: ${{ matrix.asset_path }} overwrite: true documentation: needs: package runs-on: ubuntu-latest steps: - name: "Checkout repository" uses: actions/checkout@v2 - name: "Install cmake" uses: lukka/get-cmake@latest - name: "Install emsdk" uses: mymindstorm/setup-emsdk@v7 - name: "Install Doxygen/Graphviz" run: > sudo apt-get update; sudo apt-get install doxygen graphviz; - name: "Build documentation" run: > mkdir build; cd build; emcmake cmake ..; cmake --build . --target doc; rsync -amv --include='*/' --include='*.html' --include='*.js' --include='*.wasm' --exclude='*' examples doc/doxygen/html; - name: "Deploy" uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: build/doc/doxygen/html/ enable_jekyll: false allow_empty_commit: false force_orphan: true publish_branch: gh-pages