Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
0905b5d
Migrate from Specflow to ReqnRoll
HowardvanRooijen Aug 6, 2024
8c59126
Update config files to ReqnRoll expected format
HowardvanRooijen Aug 6, 2024
8860788
Update scripted build
HowardvanRooijen Aug 6, 2024
a7fd43f
Update build to install functions runtime
HowardvanRooijen Aug 6, 2024
d7bf347
Move to pre-test step
HowardvanRooijen Aug 6, 2024
5494204
Extend PreTest
HowardvanRooijen Aug 6, 2024
1eb3056
Update build script
HowardvanRooijen Aug 6, 2024
c9d02bf
Consolidate System.Management packages
HowardvanRooijen Aug 7, 2024
6425804
Update build.ps1
MikeEvansLarah Aug 7, 2024
b4a09a2
Missing comma
MikeEvansLarah Aug 7, 2024
cbd69d5
Touch file
HowardvanRooijen Aug 7, 2024
e2fbec2
Merge branch 'feature/replace-specflow-with-reqnroll' of https://gith…
HowardvanRooijen Aug 7, 2024
497853e
Point to .NET 8.0 folder
HowardvanRooijen Aug 7, 2024
03a64f6
Use Path.Combine to construct path in platform independent way.
HowardvanRooijen Aug 8, 2024
45ff7ac
Endjin.RecommendedPractices.GitHub to 2.1.13
HowardvanRooijen Aug 8, 2024
15997db
Update folder path to be case sensitive (important on *nix) and ensur…
HowardvanRooijen Aug 8, 2024
d59d17f
This PR is a major breaking change and should be a major version incr…
HowardvanRooijen Aug 8, 2024
e66a9f1
Fix .net runtime version for isolated tests
HowardvanRooijen Aug 8, 2024
59d37b2
All tests pass locally
HowardvanRooijen Aug 8, 2024
9c0b08d
Ensure the working directory is resolved as an absolute path
HowardvanRooijen Aug 8, 2024
3b5ce7c
Try rooting the path
HowardvanRooijen Aug 8, 2024
40748a1
hard code path to see if this resolves
HowardvanRooijen Aug 8, 2024
d8eea14
Fix working directory path resolution issue on Linux
JamesDawson Aug 8, 2024
7119c90
Additional 'func' detection logic
JamesDawson Aug 8, 2024
cfb874c
Update the 'access denied' handling within KillProcessAndChildren to …
JamesDawson Aug 21, 2024
e5c8415
Merge branch 'main' into feature/replace-specflow-with-reqnroll
JamesDawson Aug 21, 2024
c3761b0
Update build to support running tests on Linux and Windows, now that …
JamesDawson Aug 21, 2024
146a16e
Merge branch 'main' into feature/replace-specflow-with-reqnroll
HowardvanRooijen Oct 8, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 98 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
name: build
on:
push:
branches:
- main
tags:
- '*'
pull_request:
branches:
- main
workflow_dispatch:
inputs:
forcePublish:
description: When true the Publish stage will always be run, otherwise it only runs for tagged versions.
required: false
default: false
type: boolean
skipCleanup:
description: When true the pipeline clean-up stage will not be run. For example, the cache used between pipeline stages will be retained.
required: false
default: false
type: boolean

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions:
actions: write # enable cache clean-up
checks: write # enable test result annotations
contents: write # enable creating releases
issues: read
packages: write # enable publishing packages
pull-requests: write # enable test result annotations

jobs:
prepareConfig:
name: Prepare Configuration
runs-on: ubuntu-latest
outputs:
RESOLVED_ENV_VARS: ${{ steps.prepareEnvVarsAndSecrets.outputs.environmentVariablesYamlBase64 }}
RESOLVED_SECRETS: ${{ steps.prepareEnvVarsAndSecrets.outputs.secretsYamlBase64 }}
steps:
# Declare any environment variables and/or secrets that need to be available inside the build process
- uses: endjin/Endjin.RecommendedPractices.GitHubActions/actions/prepare-env-vars-and-secrets@main
id: prepareEnvVarsAndSecrets
with:
# BUILDVAR_NuGetPublishSource:
# When publishing NuGet packages only tagged versions get pushed to nuget.org, otherwise
# they are pushed to GitHub Packages
# BUILDVAR_UseAcrTasks:
# Due to the build phases running as separate jobs the container images built via 'docker build'
# in the Package phase are not available to the Publish phase. Therefore, we use ACR Tasks to
# build the images instead.
environmentVariablesYaml: |
BUILDVAR_NuGetPublishSource: "${{ startsWith(github.ref, 'refs/tags/') && 'https://api.nuget.org/v3/index.json' || 'https://nuget.pkg.github.com/endjin/index.json' }}"
BUILDVAR_ContainerRegistryFqdn: endjin.azurecr.io
BUILDVAR_UseAcrTasks: true
secretsYaml: |
NUGET_API_KEY: "${{ startsWith(github.ref, 'refs/tags/') && secrets.ENDJIN_NUGET_APIKEY || secrets.ENDJIN_GITHUB_PUBLISHER_PAT }}"

build:
needs: prepareConfig
uses: endjin/Endjin.RecommendedPractices.GitHubActions/.github/workflows/scripted-build-matrix-pipeline.yml@feature/add-matrix-build
with:
netSdkVersion: '8.x'
# workflow_dispatch inputs are always strings, the type property is just for the UI
forcePublish: ${{ github.event.inputs.forcePublish == 'true' }}
skipCleanup: ${{ github.event.inputs.skipCleanup == 'true' }}

# These pass arbitrary environment variables to each of the build pipeline phases,
# as defined in the 'environmentVariablesYaml' property above.
compilePhaseEnv: ${{ needs.prepareConfig.outputs.RESOLVED_ENV_VARS }}
testPhaseEnv: ${{ needs.prepareConfig.outputs.RESOLVED_ENV_VARS }}
testPhaseMatrixJson: |
{
"os": ["ubuntu-latest", "windows-latest"],
"dotnetFramework": ["net8.0"],
"exclude": []
}
packagePhaseEnv: ${{ needs.prepareConfig.outputs.RESOLVED_ENV_VARS }}
publishPhaseEnv: ${{ needs.prepareConfig.outputs.RESOLVED_ENV_VARS }}
secrets:
# Ensures the build pipeline has access to pull images from the ACR and write SBOMs to storage
compilePhaseAzureCredentials: ${{ secrets.ENDJIN_PROD_ACR_READER_CREDENTIALS }}
# Ensures the build pipeline has access to run ACR Tasks
packagePhaseAzureCredentials: ${{ secrets.ENDJIN_PROD_ACR_PUBLISH_CREDENTIALS }}
# Ensures the build pipeline has access to push/re-tag images to the ACR
publishPhaseAzureCredentials: ${{ secrets.ENDJIN_PROD_ACR_PUBLISH_CREDENTIALS }}

# Uncomment the following to pass arbitrary secrets to the required build pipeline phases,
# as defined in the 'secretsYaml' property above. They will be available to the
# scripted build process as environment variables.
#
# compilePhaseSecrets: ${{ needs.prepareConfig.outputs.RESOLVED_SECRETS }}
# testPhaseSecrets: ${{ needs.prepareConfig.outputs.RESOLVED_SECRETS }}
packagePhaseSecrets: ${{ needs.prepareConfig.outputs.RESOLVED_SECRETS }}
publishPhaseSecrets: ${{ needs.prepareConfig.outputs.RESOLVED_SECRETS }}
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -335,7 +335,7 @@ coverage.cobertura.xml
# VS Code config files
/.vscode

# Specflow generated files
# ReqnRoll generated files
*.feature.cs

# Scripted build migration
Expand Down
4 changes: 2 additions & 2 deletions GitVersion.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ branches:
tag: dependabot
source-branches:
- develop
- master
- main
- release
- feature
- support
- hotfix
next-version: "3.1"
next-version: "4.0"

Loading