Support class based safe handles #2836
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: 'Continuous integration' | |
on: | |
workflow_dispatch: | |
inputs: | |
publish_release: | |
description: If this build should publish nuget packages | |
required: true | |
type: boolean | |
version_suffix: | |
description: Suffix of the version number. Can be used to create a preview package. | |
required: false | |
type: string | |
push: | |
branches: | |
- main | |
paths-ignore: | |
- '**.md' | |
pull_request: | |
env: | |
configuration: Release | |
publish_release: ${{ github.event.inputs.publish_release }} | |
version_suffix: ${{ github.event.inputs.version_suffix }} | |
jobs: | |
build_macos: | |
name: Build (MacOS) | |
runs-on: macos-12 | |
if: github.event.inputs.publish_release != 'true' | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- name: Install dependencies | |
run: brew install cairo gdk-pixbuf gobject-introspection meson | |
- name: Prepare git | |
run: git config --global core.autocrlf false | |
shell: bash | |
- name: Checkout with submodules | |
uses: actions/checkout@v4 | |
with: | |
submodules: 'true' | |
- name: Create Gir.Core | |
uses: ./.github/actions/create | |
with: | |
configuration: ${{ env.configuration }} | |
source_directory: './src' | |
shell: bash | |
build_windows: | |
name: Build (Windows) | |
runs-on: windows-latest | |
if: github.event.inputs.publish_release != 'true' | |
defaults: | |
run: | |
shell: msys2 {0} | |
steps: | |
- name: Install dependencies | |
uses: msys2/setup-msys2@v2 | |
with: | |
path-type: inherit # Inherit the path so that dotnet can be found | |
update: true | |
install: >- | |
mingw-w64-x86_64-cairo | |
mingw-w64-x86_64-gcc | |
mingw-w64-x86_64-gdk-pixbuf2 | |
mingw-w64-x86_64-gobject-introspection | |
mingw-w64-x86_64-meson | |
- name: Prepare git | |
run: git config --global core.autocrlf false | |
shell: bash | |
- name: Checkout with submodules | |
uses: actions/checkout@v4 | |
with: | |
submodules: 'true' | |
- name: Create Gir.Core | |
uses: ./.github/actions/create | |
with: | |
configuration: ${{ env.configuration }} | |
source_directory: './src' | |
shell: msys2 {0} | |
build_linux: | |
name: Build (Linux) | |
runs-on: ubuntu-latest | |
container: | |
image: fedora:latest | |
env: | |
DOTNET_SYSTEM_GLOBALIZATION_INVARIANT: 1 | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- name: Install dependencies | |
run: sudo dnf -y upgrade && sudo dnf -y install meson gobject-introspection-devel git gcc glib2-devel gdk-pixbuf2 gdk-pixbuf2-modules cairo-gobject | |
- name: Prepare git | |
run: git config --global core.autocrlf false | |
shell: bash | |
- name: Checkout with submodules | |
uses: actions/checkout@v4 | |
with: | |
submodules: 'true' | |
- name: Create Gir.Core | |
uses: ./.github/actions/create | |
with: | |
configuration: ${{ env.configuration }} | |
source_directory: './src' | |
shell: bash | |
- name: Verify code format | |
run: dotnet format GirCore.sln --no-restore --verify-no-changes --exclude *.Generated.cs | |
working-directory: './src' | |
- name: Run integration tests | |
run: dotnet test --no-restore -c $configuration --filter TestCategory=IntegrationTest | |
working-directory: './src' | |
- name: Pack release version | |
if: env.publish_release == 'true' | |
run: dotnet pack --no-build --nologo -c $configuration --version-suffix "$version_suffix" -o ../Nuget | |
working-directory: './src' | |
- name: Publish to nuget org | |
if: env.publish_release == 'true' | |
run: dotnet nuget push "*.nupkg" -k ${{ secrets.NUGET_API_KEY }} -s nuget.org | |
working-directory: './Nuget' |