diff --git a/.github/workflows/dub.yml b/.github/workflows/dub.yml new file mode 100644 index 0000000..186c061 --- /dev/null +++ b/.github/workflows/dub.yml @@ -0,0 +1,81 @@ +name: CI + +# Overall Poodinis should work on a fairly wide variety of D versions. Similar to Vibe.d, the last +# 10 compiler releases should certainly be supported. As GCC supports D version 2.076, this should +# continue to be supported. + +on: + schedule: + - cron: '45 6 1 * *' + push: + pull_request: + branches: [ main ] + +jobs: + test: + name: ${{ matrix.compiler }} on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ ubuntu-latest, windows-latest, macos-latest ] + compiler: + - dmd-latest + - ldc-latest + - dmd-2.096.1 + - dmd-2.095.1 + - dmd-2.094.2 + - dmd-2.093.1 + - dmd-2.092.1 + - dmd-2.091.1 + - dmd-2.090.1 + - dmd-2.089.1 + - dmd-2.088.1 + - dmd-2.087.1 + - dmd-2.086.1 + - dmd-2.085.1 + - dmd-2.077.1 + - dmd-2.076.1 # gdc (gcc v9 - v11.1) supports D at this version + - dmd-2.075.1 + - dmd-2.074.1 + - dmd-2.073.2 + - dmd-2.072.2 + - dmd-2.071.2 + - dmd-2.070.2 + - dmd-2.069.2 + - ldc-1.25.1 # eq to dmd v2.095.1 + - ldc-1.24.0 # eq to dmd v2.094.1 + - ldc-1.23.0 # eq to dmd v2.093.1 +# - ldc-1.22.0 # eq to dmd v2.092.1 +# - ldc-1.21.0 # eq to dmd v2.091.1 +# - ldc-1.20.1 # eq to dmd v2.090.1 +# - ldc-1.19.0 # eq to dmd v2.089.1 +# - ldc-1.18.0 # eq to dmd v2.088.1 +# - ldc-1.17.0 # eq to dmd v2.087 +# - ldc-1.16.0 # eq to dmd v2.086.1 + - ldc-1.15.0 # eq to dmd v2.085.1 + steps: + - uses: actions/checkout@v2 + + - name: Install D ${{ matrix.compiler }} + uses: dlang-community/setup-dlang@v1 + with: + compiler: ${{ matrix.compiler }} + + - name: Build library + run: dub build --build=release --config=library + + - name: Build unittest + run: dub test --build=unittest --config=unittest + + - name: Build examples + run: | + dub run --build=release --config=quickstartExample + dub run --build=release --config=qualifiersExample + dub run --build=release --config=arrayCompletionExample + dub run --build=release --config=annotationsExample + dub run --build=release --config=applicationContextExample + dub run --build=release --config=registerOnResolveExample + dub run --build=release --config=constructorInjectionExample + dub run --build=release --config=valueInjectionExample + dub run --build=release --config=postConstructorPreDestructorExample