Skip to content

Merge pull request #87 from OpenVicProject/dependabot/submodules/scri… #731

Merge pull request #87 from OpenVicProject/dependabot/submodules/scri…

Merge pull request #87 from OpenVicProject/dependabot/submodules/scri… #731

Workflow file for this run

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:
static-checks:
name: Code style, file formatting, and docs
runs-on: ubuntu-24.04
steps:
- name: Checkout project
uses: actions/checkout@v4.1.1
with:
fetch-depth: 2
- name: Install APT dependencies
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: libxml2-utils
- name: Get changed files
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
git config diff.wsErrorHighlight all
if [ "${{ github.event_name }}" == "pull_request" -o "${{ github.event.forced }}" == "true" -o "${{ github.event.created }}" == "true" ]; then
files=$(git diff-tree --no-commit-id --name-only -r HEAD^1..HEAD 2> /dev/null || true)
elif [ "${{ github.event_name }}" == "push" -a "${{ github.event.created }}" == "false" ]; then
files=$(git diff-tree --no-commit-id --name-only -r ${{ github.event.before }}..${{ github.event.after }} 2> /dev/null || true)
fi
echo "$files" >> changed.txt
cat changed.txt
files=$(echo "$files" | xargs -I {} sh -c 'echo "\"./{}\""' | tr '\n' ' ')
echo "CHANGED_FILES=$files" >> $GITHUB_ENV
- name: Style checks via pre-commit
uses: pre-commit/action@v3.0.1
with:
extra_args: --files ${{ env.CHANGED_FILES }}
build:
runs-on: ${{matrix.os}}
name: ${{matrix.name}}
needs: static-checks
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@v4.1.1
with:
submodules: recursive
- name: Setup OpenVic-Dataloader build cache
uses: OpenVicProject/openvic-cache@master
with:
cache-name: ${{ matrix.identifier }}
base-branch: ${{ env.OVDL_BASE_BRANCH }}
continue-on-error: true
- name: Set up Python
uses: actions/setup-python@v5.0.0
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: Compile Dataloader
uses: OpenVicProject/openvic-build@master
with:
platform: ${{ matrix.platform }}
target: ${{ matrix.target }}
sconsflags: arch=${{ matrix.arch }} build_ovdl_library=yes run_ovdl_tests=yes ubuntu_gcc_invalid_char_hang_bug=${{ matrix.runner == 'ubuntu-20.04' }}
- name: Delete compilation files
if: ${{ matrix.platform == 'windows' }}
run: |
Remove-Item bin/* -Include *.exp,*.pdb -Force
- name: Upload library artifact
uses: actions/upload-artifact@v4.3.0
with:
name: ${{ github.event.repository.name }}-${{ matrix.identifier }}-library
path: |
${{ github.workspace }}/bin/libopenvic-dataloader.*
- name: Upload executable artifact
uses: actions/upload-artifact@v4.3.0
with:
name: ${{ github.event.repository.name }}-${{ matrix.identifier }}-executable
path: |
${{ github.workspace }}/bin/openvic-dataloader.headless.*
- name: Archive Release
uses: thedoctor0/zip-release@0.7.6
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.13.0
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')
merge-library-files:
runs-on: ubuntu-latest
needs: build
name: 📚 Merge Library Files
steps:
- name: Merge Artifacts
uses: actions/upload-artifact/merge@v4.3.0
with:
delete-merged: true
name: ${{ github.event.repository.name }}-library
pattern: ${{ github.event.repository.name }}-*-library