| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301 |
- #
- # Copyright (c) 2008-2022 the Urho3D project.
- #
- # Permission is hereby granted, free of charge, to any person obtaining a copy
- # of this software and associated documentation files (the "Software"), to deal
- # in the Software without restriction, including without limitation the rights
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- # copies of the Software, and to permit persons to whom the Software is
- # furnished to do so, subject to the following conditions:
- #
- # The above copyright notice and this permission notice shall be included in
- # all copies or substantial portions of the Software.
- #
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- # THE SOFTWARE.
- #
- ---
- name: CI/CD
- on:
- push:
- pull_request:
- repository_dispatch: { types: [ 'Warm DBE build cache' ] }
- jobs:
- init:
- name: Init
- runs-on: ubuntu-latest
- outputs:
- skip: ${{ steps.whatchanged.outputs.skip }}
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: What changed
- id: whatchanged
- run: |
- git fetch --deepen=1
- git log --raw --no-merges -1 |grep '^:' >/tmp/whatchanged
- echo ::set-output name=skip::$(grep -cqv 'website/' /tmp/whatchanged; echo $?)
- linux:
- name: 🐧
- runs-on: ubuntu-latest
- needs: init
- if: needs.init.outputs.skip == '0'
- strategy:
- fail-fast: false
- matrix:
- platform:
- - linux-gcc
- - linux-clang
- - mingw
- - rpi
- - arm
- lib-type:
- - static
- - shared
- architecture:
- - 64
- - 32
- build-type:
- - rel
- - dbg
- include:
- - { platform: web, lib-type: static, architecture: wasm, build-type: rel }
- - { platform: web, lib-type: static, architecture: wasm, build-type: dbg }
- - { platform: android, lib-type: static, architecture: all, build-type: both }
- - { platform: android, lib-type: shared, architecture: all, build-type: both }
- env:
- HOST: ${{ github.job }}
- PLATFORM: ${{ matrix.platform }}
- BUILD_TYPE: ${{ matrix.build-type }}
- LIB_TYPE: ${{ matrix.lib-type }}
- ARCH: ${{ matrix.architecture }}
- DBE_TAG: master
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- with: { fetch-depth: 0 }
- - name: Free up space
- run: |
- sudo rm -rf /usr/share/dotnet /usr/local/lib/android
- sudo apt-get clean
- df -h
- if: matrix.platform == 'android' || matrix.build-type == 'dbg'
- - name: Source checksum
- id: source_checksum
- run: rake source_checksum
- - name: Cache
- uses: actions/cache@v2
- with:
- path: |
- build/cache/.ccache
- build/cache/.gradle/caches
- build/cache/.gradle/wrapper
- key: |
- ${{ matrix.platform }}-${{ matrix.lib-type }}-${{ matrix.architecture }}-${{ matrix.build-type }}-${{ env.DBE_TAG }}-${{ steps.source_checksum.outputs.hexdigest }}
- restore-keys: |
- ${{ matrix.platform }}-${{ matrix.lib-type }}-${{ matrix.architecture }}-${{ matrix.build-type }}-${{ env.DBE_TAG }}
- ${{ matrix.platform }}-${{ matrix.lib-type }}-${{ matrix.architecture }}-${{ matrix.build-type }}
- - name: DBE
- run: rake update_dot_files && script/dockerized.sh ${PLATFORM/-*} env
- - name: CMake
- run: script/dockerized.sh ${PLATFORM/-*} rake cmake
- if: matrix.platform != 'android'
- - name: Build
- run: script/dockerized.sh ${PLATFORM/-*} rake build
- - name: Test
- run: script/dockerized.sh ${PLATFORM/-*} rake test
- if: startsWith(matrix.platform, 'linux') || matrix.platform == 'android'
- - name: Documentation
- run: script/dockerized.sh ${PLATFORM/-*} rake doc
- - name: Install
- run: |
- script/dockerized.sh ${PLATFORM/-*} rake install
- if [[ $PLATFORM == android ]]; then touch build/cache/.gradle/mark; fi
- - name: Scaffolding - new
- run: script/dockerized.sh ${PLATFORM/-*} rake new
- - name: Scaffolding - build
- run: |
- cd build/cache/projects/UrhoApp
- script/dockerized.sh ${PLATFORM/-*}
- - name: Scaffolding - test
- run: |
- cd build/cache/projects/UrhoApp
- script/dockerized.sh ${PLATFORM/-*} rake test
- if: matrix.platform == 'android' || startsWith(matrix.platform, 'linux')
- - name: Scaffolding - cleanup
- run: |
- if [[ $PLATFORM == android ]]; then
- rm -rf build/cache/.m2
- find build/cache/.gradle -newer build/cache/.gradle/mark -type d |xargs rm -rf
- else
- rm -rf build/cache/{.urho3d,projects}
- fi
- - name: Package
- run: script/dockerized.sh ${PLATFORM/-*} rake package
- if: github.event_name == 'push' && matrix.platform != 'android'
- - name: Upload
- uses: actions/upload-artifact@v2
- with:
- name: ${{ matrix.platform }}-${{ matrix.lib-type }}-${{ matrix.architecture }}-${{ matrix.build-type }}
- path: |
- build/ci/*.tar.gz
- android/urho3d-lib/build/distributions/*.aar
- android/urho3d-lib/build/distributions/*.zip
- android/urho3d-lib/build/libs/*.jar
- build/*.out
- if: github.event_name == 'push'
- continue-on-error: ${{ !startsWith(github.ref, 'refs/tags/') }}
- - name: Publish
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PUBLISHER_NAME: ${{ secrets.PUBLISHER_NAME }}
- PUBLISHER_EMAIL: ${{ secrets.PUBLISHER_EMAIL }}
- PUBLISHER_TOKEN: ${{ secrets.PUBLISHER_TOKEN }}
- BINTRAY_USER: ${{ secrets.BINTRAY_USER }}
- BINTRAY_KEY: ${{ secrets.BINTRAY_KEY }}
- run: script/dockerized.sh ${PLATFORM/-*} rake publish
- if: |
- github.event_name == 'push' &&
- (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/')) &&
- (matrix.platform == 'android' || (matrix.platform == 'web' && matrix.build-type == 'rel'))
- continue-on-error: ${{ !startsWith(github.ref, 'refs/tags/') }}
- macOS:
- name: 🍏
- runs-on: macos-latest
- needs: init
- if: needs.init.outputs.skip == '0' && github.event_name != 'repository_dispatch'
- strategy:
- fail-fast: false
- matrix:
- platform:
- - macOS
- lib-type:
- - static
- - shared
- include:
- - { platform: iOS, lib-type: static }
- - { platform: tvOS, lib-type: static }
- env:
- HOST: ${{ github.job }}
- PLATFORM: ${{ matrix.platform }}
- LIB_TYPE: ${{ matrix.lib-type }}
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- with: { fetch-depth: 0 }
- - name: Select xcode
- run: sudo xcode-select -s '/Applications/Xcode_12.app'
- - name: Install dependencies
- run: while ! brew install doxygen graphviz; do sleep 1; done
- - name: CMake
- run: rake cmake
- - name: Build
- run: rake build
- - name: Test
- run: rake test
- if: matrix.platform == 'macOS'
- - name: Documentation
- run: rake doc
- - name: Install
- run: rake install
- - name: Scaffolding - new
- run: rake new
- - name: Scaffolding - build
- run: |
- cd ~/projects/UrhoApp
- rake
- - name: Scaffolding - test
- run: |
- cd ~/projects/UrhoApp
- rake test
- if: matrix.platform == 'macOS'
- - name: Scaffolding - cleanup
- run: rm -rf ~/{.urho3d,projects}
- - name: Package
- run: rake package
- if: github.event_name == 'push'
- - name: Upload
- uses: actions/upload-artifact@v2
- with:
- name: ${{ matrix.platform }}-${{ matrix.lib-type }}-all-rel
- path: build/ci/*.tar.gz
- if: github.event_name == 'push'
- windows:
- name: 🔲
- runs-on: windows-latest
- needs: init
- if: needs.init.outputs.skip == '0' && github.event_name != 'repository_dispatch'
- strategy:
- fail-fast: false
- matrix:
- platform:
- - win-vs
- - win-gcc
- lib-type:
- - static
- - shared
- graphics-api:
- - DX11
- - DX9
- - OpenGL
- env:
- HOST: ${{ github.job }}
- PLATFORM: ${{ matrix.platform }}
- LIB_TYPE: ${{ matrix.lib-type }}
- GRAPHICS_API: ${{ matrix.graphics-api }}
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- with: { fetch-depth: 0 }
- - name: Install dependencies
- id: install_dependencies
- run: |
- # Temporary use old version of Doxygen https://github.com/urho3d/Urho3D/issues/2757
- choco install --no-progress doxygen.install --version 1.8.20
- choco install --no-progress graphviz.portable
- continue-on-error: ${{ !startsWith(github.ref, 'refs/tags/') }}
- - name: CMake
- run: rake cmake
- - name: Build
- run: rake build
- - name: Test
- run: rake test
- if: matrix.graphics-api != 'OpenGL'
- - name: Documentation
- run: rake doc
- if: steps.install_dependencies.outcome == 'success'
- - name: Install
- run: rake install
- - name: Scaffolding - new
- run: rake new
- - name: Scaffolding - build
- run: |
- cd ~/projects/UrhoApp
- rake
- - name: Scaffolding - test
- run: |
- cd ~/projects/UrhoApp
- rake test
- if: matrix.graphics-api != 'OpenGL'
- - name: Scaffolding - cleanup
- run: rm -r -fo ~/.urho3d, ~/Projects
- - name: Package
- run: rake package
- if: github.event_name == 'push'
- - name: Upload
- uses: actions/upload-artifact@v2
- with:
- name: ${{ matrix.platform }}-${{ matrix.lib-type }}-64-${{ matrix.graphics-api }}-rel
- path: build/ci/*.zip
- if: github.event_name == 'push'
- ...
- # vi: set ts=2 sw=2 expandtab:
|