Skip to content

.github/workflows/build.yml #32

.github/workflows/build.yml

.github/workflows/build.yml #32

Workflow file for this run

on:
pull_request:
# every day at 11:42
schedule:
- cron: '42 11 * * *'
push:
branches:
- dev
workflow_dispatch:
inputs:
version:
description: 'Select FSCM Version. Use wildcard * to let settings .json files decide.'
required: false
default: '10.0.44'
includeTestModels:
type: boolean
default: false
description: Include test models
permissions:
contents: read
defaults:
run:
shell: pwsh
env:
FORCE_COLOR: 3
jobs:
Initialization:
runs-on: [ windows-latest ]
outputs:
type: ${{ steps.ReadSettings.outputs.type }}
source_branch: ${{ steps.ReadSettings.outputs.source_branch }}
versions: ${{ steps.ReadSettings.outputs.VersionsJson }}
environments: ${{ steps.ReadSettings.outputs.EnvironmentsJson }}
githubRunner: ${{ steps.ReadSettings.outputs.GitHubRunnerJson }}
steps:
- name: Support longpaths
run: git config --system core.longpaths true
- name: Checkout
uses: actions/[email protected]
- name: Initialize the workflow
uses: fscpscollaborative/fscps.gh/[email protected]
id: init
env:
secrets: ${{ toJson(secrets) }}
- name: Read settings
id: ReadSettings
uses: fscpscollaborative/fscps.gh/[email protected]
with:
version: ${{ inputs.version }}
BuildDotNet:
needs: [ Initialization ]
runs-on: ${{ fromJson(needs.Initialization.outputs.githubRunner) }}
strategy:
matrix:
version: ${{ fromJson(needs.Initialization.outputs.versions) }}
fail-fast: false
name: Build .NET ${{ matrix.version }}
steps:
- name: Checkout
uses: actions/[email protected]
- name: Setup MSBuild
uses: microsoft/setup-msbuild@v2
- name: Setup NuGet
uses: nuget/setup-nuget@v2
- name: Restore FSC Nugets
uses: fscpscollaborative/fscps.gh/[email protected]
with:
version: ${{ matrix.version }}
packagesDirectory: '${{ github.workspace }}/Projects/AOTBrowser/packages'
- name: List FSC packages (debug)
if: runner.debug == '1'
run: ls -R Projects/AOTBrowser/packages
- name: Find and show packages.config (debug)
if: runner.debug == '1'
run: |
Get-ChildItem -Path / -Filter 'packages.config' -Recurse | ForEach-Object {
Write-Host "***Showing content of: $($_.FullName)***";
Get-Content $_.FullName
}
- name: Find and show NuGet.config files (debug)
if: runner.debug == '1'
run: |
Get-ChildItem -Path / -Filter 'nuget.config' -Recurse | ForEach-Object {
Write-Host "***Showing content of: $($_.FullName)***";
Get-Content $_.FullName
}
- name: Restore NuGet packages
run: nuget restore Projects/AOTBrowser/Arbela.Dynamics.AX.Xpp.Support/Arbela.Dynamics.AX.Xpp.Support.csproj -PackagesDirectory Projects/AOTBrowser/packages
- name: List packages (debug)
if: runner.debug == '1'
run: ls -R Projects/AOTBrowser/packages
- name: Build
run: msbuild Projects/AOTBrowser/Arbela.Dynamics.AX.Xpp.Support/Arbela.Dynamics.AX.Xpp.Support.csproj /p:VersionSuffix=pr /p:Configuration=Release /p:Version=0.0.0.${{ github.event.pull_request.number }} /p:InformationalVersion=0.0.0.${{ github.event.pull_request.number }}-pr -fileLogger
- name: Upload Arbela.Dynamics.AX.Xpp.Support
uses: actions/upload-artifact@v4
with:
name: Arbela.Dynamics.AX.Xpp.Support
path: Projects/AOTBrowser/Arbela.Dynamics.AX.Xpp.Support/bin/Release
Build:
needs: [ Initialization, BuildDotNet ]
runs-on: ${{ fromJson(needs.Initialization.outputs.githubRunner) }}
strategy:
matrix:
version: ${{ fromJson(needs.Initialization.outputs.versions) }}
fail-fast: false
name: Build ${{ matrix.version }}
steps:
- name: Checkout
uses: actions/[email protected]
- name: Download Arbela.Dynamics.AX.Xpp.Support
uses: actions/download-artifact@v4
with:
name: Arbela.Dynamics.AX.Xpp.Support
path: Metadata/AOTBrowser/bin
- name: Read settings
uses: fscpscollaborative/fscps.gh/[email protected]
with:
version: ${{ matrix.version }}
- name: Setup MSBuild
uses: microsoft/setup-msbuild@v2
- name: Setup NuGet
uses: nuget/setup-nuget@v2
with:
nuget-version: 5.10.x
- name: Run pipeline
uses: fscpscollaborative/fscps.gh/[email protected]
id: runpipeline
with:
type: ${{ needs.Initialization.outputs.type}}
version: ${{ matrix.version }}
settingsJson: ${{ env.Settings }}
secretsJson: ${{ env.RepoSecrets }}
- name: Unzip package
run: Expand-Archive -Path ${{ env.ARTIFACTS_PATH }}/*.zip -Destination ${{ env.ARTIFACTS_PATH }}/${{ env.PACKAGE_NAME }}
- name: Publish artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ env.PACKAGE_NAME }}
path: ${{ env.ARTIFACTS_PATH }}/${{ env.PACKAGE_NAME }}
- name: Add logs to job summary
run: |
$logFiles = Get-ChildItem -Path "${{ env.ARTIFACTS_PATH }}\Logs" -Recurse -Filter *.log
$summary = "# Logs `n`n"
if ($logFiles) {
foreach ($logFile in $logFiles) {
$content = Get-Content -Path $logFile
$summary += "## $logFile `n"
foreach ($line in $content) {
# if the line consists only of = or - characters
# (which would be interpreted as a setext heading
# (https://github.github.com/gfm/#setext-headings)),
# add a new line before it
if ($line -match "^[=-]+$") {
$summary += "`n$line`n"
} else {
$summary += $line + "`n"
}
}
}
}
$summary >> $env:GITHUB_STEP_SUMMARY
PostProcess:
if: ${{ !cancelled() }}
runs-on: ${{ fromJson(needs.Initialization.outputs.githubRunner) }}
needs: [ Initialization, Build ]
steps:
- name: Checkout
uses: actions/[email protected]
- name: Read settings
uses: fscpscollaborative/fscps.gh/[email protected]