Skip to content

Support class based safe handles #2830

Support class based safe handles

Support class based safe handles #2830

Workflow file for this run

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'