aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows
diff options
context:
space:
mode:
author Spartan322 <Megacake1234@gmail.com>2023-09-02 15:03:14 +0200
committer Spartan322 <Megacake1234@gmail.com>2023-09-02 19:20:25 +0200
commitdbc66788a680daf3f8a1c0c6e7fbd1b77cc06864 (patch)
tree288a1530b1f3cd2d7ba2bb5821e2c4160725707c /.github/workflows
parentf990117e56060811ddd2a850ec712485aea79649 (diff)
Add github actions and workflow
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/builds.yml140
1 files changed, 140 insertions, 0 deletions
diff --git a/.github/workflows/builds.yml b/.github/workflows/builds.yml
new file mode 100644
index 0000000..0e0bcfe
--- /dev/null
+++ b/.github/workflows/builds.yml
@@ -0,0 +1,140 @@
+name: Builds
+
+on: [push, pull_request]
+
+env:
+ OVDL_BASE_BRANCH: master
+
+concurrency:
+ group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-macos
+ cancel-in-progress: true
+
+jobs:
+ build:
+ runs-on: ${{matrix.os}}
+ name: ${{matrix.name}}
+ permissions: write-all
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - identifier: windows-debug
+ os: windows-latest
+ name: 🏁 Windows Debug
+ target: template_debug
+ platform: windows
+ arch: x86_64
+ - identifier: windows-release
+ os: windows-latest
+ name: 🏁 Windows Release
+ target: template_release
+ platform: windows
+ arch: x86_64
+ - identifier: macos-debug
+ os: macos-latest
+ name: 🍎 macOS (universal) Debug
+ target: template_debug
+ platform: macos
+ arch: universal
+ - identifier: macos-release
+ os: macos-latest
+ name: 🍎 macOS (universal) Release
+ target: template_release
+ platform: macos
+ arch: universal
+ - identifier: linux-debug
+ os: ubuntu-latest
+ name: 🐧 Linux Debug
+ runner: ubuntu-20.04
+ target: template_debug
+ platform: linux
+ arch: x86_64
+ - identifier: linux-release
+ os: ubuntu-latest
+ name: 🐧 Linux Release
+ runner: ubuntu-20.04
+ target: template_release
+ platform: linux
+ arch: x86_64
+
+ steps:
+ - name: Checkout project
+ uses: actions/checkout@v3.3.0
+ with:
+ submodules: recursive
+
+ - name: Setup OpenVic-Dataloader build cache
+ uses: ./.github/actions/dataloader-cache
+ with:
+ cache-name: ${{ matrix.identifier }}
+ continue-on-error: true
+
+ - name: Set up Python
+ uses: actions/setup-python@v4
+ with:
+ python-version: "3.x"
+
+ - name: Set up SCons
+ shell: bash
+ run: |
+ python -c "import sys; print(sys.version)"
+ python -m pip install scons
+ scons --version
+
+ - name: Linux dependencies
+ if: ${{ matrix.platform == 'linux' }}
+ run: |
+ sudo apt-get update -qq
+ sudo apt-get install -qqq build-essential pkg-config
+ g++ --version
+ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 12
+ sudo update-alternatives --set g++ /usr/bin/g++-12
+ g++ --version
+
+ - name: Setup MinGW for Windows/MinGW build
+ if: ${{ matrix.platform == 'windows' }}
+ uses: ./.github/actions/mingw-cache
+
+ - name: Compile Dataloader
+ uses: ./.github/actions/dataloader-build
+ with:
+ platform: ${{ matrix.platform }}
+ target: ${{ matrix.target }}
+ sconsflags: arch=${{ matrix.arch }} build_ovdl_library=yes
+
+ - name: Delete compilation files
+ if: ${{ matrix.platform == 'windows' }}
+ run: |
+ Remove-Item bin/* -Include *.exp,*.pdb -Force
+
+ - name: Upload library artifact
+ uses: actions/upload-artifact@v3
+ with:
+ name: ${{ github.event.repository.name }}-library
+ path: |
+ ${{ github.workspace }}/bin/libopenvic-dataloader.*
+
+ - name: Upload executable artifact
+ uses: actions/upload-artifact@v3
+ with:
+ name: ${{ github.event.repository.name }}-executable
+ path: |
+ ${{ github.workspace }}/bin/openvic-dataloader.headless.*
+
+ - name: Archive Release
+ uses: thedoctor0/zip-release@0.7.1
+ with:
+ type: "zip"
+ filename: "../../../libopenvic-dataloader.${{ matrix.platform }}.${{ matrix.arch }}.zip"
+ directory: "${{ github.workspace }}/bin/"
+ if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
+
+ - name: Create and upload asset
+ uses: ncipollo/release-action@v1
+ with:
+ allowUpdates: true
+ artifacts: "libopenvic-dataloader.${{ matrix.platform }}.${{ matrix.arch }}.zip"
+ omitNameDuringUpdate: true
+ omitBodyDuringUpdate: true
+ token: ${{ secrets.GITHUB_TOKEN }}
+ if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')