From e107bcb815b778b548b3945dc6b63a0ce3d0d8e8 Mon Sep 17 00:00:00 2001 From: Kyriakos Sidiropoulos Date: Wed, 10 Apr 2024 14:53:01 +0200 Subject: [PATCH 01/19] clean (Laerdal.Dfu.csproj): trivial neutral cleanups --- Laerdal.Dfu/Laerdal.Dfu.csproj | 26 ++++++++++++++------------ Laerdal.Dfu/Laerdal.targets | 4 +++- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/Laerdal.Dfu/Laerdal.Dfu.csproj b/Laerdal.Dfu/Laerdal.Dfu.csproj index fafd03e..1ea2b64 100644 --- a/Laerdal.Dfu/Laerdal.Dfu.csproj +++ b/Laerdal.Dfu/Laerdal.Dfu.csproj @@ -1,33 +1,35 @@ - + Laerdal.Dfu Ble;Tools;Xamarin;Dfu;Bluetooth;Nordic;Semiconductor Laerdal Medical, Francois Raminosona Xamarin wrapper around Nordic.Dfu for iOS and Android. - + net7.0-android;net7.0-ios;net6.0-android;net6.0-ios + true true - enable + enable - 14.2 - 21.0 - + 14.2 + 21.0 + - + - - + + - + - + - \ No newline at end of file + + diff --git a/Laerdal.Dfu/Laerdal.targets b/Laerdal.Dfu/Laerdal.targets index a39e551..d6effb8 100644 --- a/Laerdal.Dfu/Laerdal.targets +++ b/Laerdal.Dfu/Laerdal.targets @@ -100,6 +100,7 @@ + @@ -117,4 +118,5 @@ $(Laerdal_Version_Full) $(Laerdal_Version_Full) - \ No newline at end of file + + From 0f3034a9540ca6340665e17d8de64f2978f97627 Mon Sep 17 00:00:00 2001 From: Kyriakos Sidiropoulos Date: Wed, 10 Apr 2024 15:00:54 +0200 Subject: [PATCH 02/19] feat (Laerdal.Dfu.sln) --- Laerdal.Dfu.sln | 24 ++++++++++++++++++++++++ azure-pipelines.yaml | 11 +++++++---- 2 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 Laerdal.Dfu.sln diff --git a/Laerdal.Dfu.sln b/Laerdal.Dfu.sln new file mode 100644 index 0000000..829a451 --- /dev/null +++ b/Laerdal.Dfu.sln @@ -0,0 +1,24 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Laerdal.Dfu", "Laerdal.Dfu\Laerdal.Dfu.csproj", "{0A938850-09F9-44A5-825F-84C932074A29}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Misc", "_Misc", "{37EBD209-B465-4483-B6A9-46EAC9FE20EF}" + ProjectSection(SolutionItems) = preProject + README.md = README.md + LICENSE = LICENSE + azure-pipelines.yaml = azure-pipelines.yaml + Laerdal.Scripts\Laerdal.Version.sh = Laerdal.Scripts\Laerdal.Version.sh + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0A938850-09F9-44A5-825F-84C932074A29}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0A938850-09F9-44A5-825F-84C932074A29}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0A938850-09F9-44A5-825F-84C932074A29}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0A938850-09F9-44A5-825F-84C932074A29}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/azure-pipelines.yaml b/azure-pipelines.yaml index 9a34218..164b6e1 100644 --- a/azure-pipelines.yaml +++ b/azure-pipelines.yaml @@ -1,16 +1,19 @@ trigger: + batch: true branches: include: - '*' + pool: vmImage: macOS-12 + steps: + - checkout: self - clean: true - #https://learn.microsoft.com/en-us/azure/devops/pipelines/yaml-schema/steps-checkout?view=azure-pipelines#shallow-fetch + clean: true # https://learn.microsoft.com/en-us/azure/devops/pipelines/yaml-schema/steps-checkout?view=azure-pipelines#shallow-fetch fetchDepth: 0 persistCredentials: true @@ -25,8 +28,8 @@ steps: displayName: dotnet build inputs: projects: $(Build.SourcesDirectory)/Laerdal.Build.proj - configuration: Release arguments: '--verbosity detailed' + configuration: Release - publish: $(Build.ArtifactStagingDirectory) - artifact: output \ No newline at end of file + artifact: output From c8581b28c27f46024a0337c87dabc551f5bf948e Mon Sep 17 00:00:00 2001 From: Kyriakos Sidiropoulos Date: Wed, 10 Apr 2024 15:10:33 +0200 Subject: [PATCH 03/19] refa (Laerdal.Build.proj -> Laerdal.Build.targets) [skip ci] --- Laerdal.Build.proj => Laerdal.Build.targets | 51 ++++++++++++++------- Laerdal.Dfu.sln | 1 + azure-pipelines.yaml | 12 ++--- 3 files changed, 41 insertions(+), 23 deletions(-) rename Laerdal.Build.proj => Laerdal.Build.targets (58%) diff --git a/Laerdal.Build.proj b/Laerdal.Build.targets similarity index 58% rename from Laerdal.Build.proj rename to Laerdal.Build.targets index 55651f9..d1da623 100644 --- a/Laerdal.Build.proj +++ b/Laerdal.Build.targets @@ -1,11 +1,29 @@ - + + + + + + + + + + + + + + + + - $([System.IO.Path]::Combine($(MSBuildThisFileDirectory), `Output/`)) - $(BUILD_ARTIFACTSTAGINGDIRECTORY) High - $([System.IO.Path]::Combine($(MSBuildThisFileDirectory), `Laerdal.Dfu/Laerdal.Dfu.csproj`)) + + $([System.IO.Path]::Combine($(MSBuildThisFileDirectory), `Output/`)) + $(BUILD_ARTIFACTSTAGINGDIRECTORY) + + $([System.IO.Path]::Combine($(MSBuildThisFileDirectory), `Laerdal.Dfu/Laerdal.Dfu.csproj`)) + $([System.IO.Path]::Combine($(MSBuildThisFileDirectory), `Laerdal.Scripts/`)) @@ -17,9 +35,9 @@ $([System.IO.Path]::Combine($(PackageOutputPath), `version.txt`)) - 1 - main - develop + 1 + main + develop <_Laerdal_Version_Script_Parameters>$(_Laerdal_Version_Script_Parameters) -o $(Laerdal_Version_Details_FilePath) <_Laerdal_Version_Script_Parameters>$(_Laerdal_Version_Script_Parameters) --major $(Laerdal_Version_Major) @@ -55,23 +73,22 @@ - - - - + + + + - Release - <_Laerdal_Build_Parameters>$(_Laerdal_Build_Parameters);PackageOutputPath=$(PackageOutputPath) + Release + <_Laerdal_Build_Parameters>$(_Laerdal_Build_Parameters);Configuration=$(Configuration) - <_Laerdal_Build_Parameters>$(_Laerdal_Build_Parameters);Laerdal_Version_Assembly=$(Laerdal_Version_Assembly) + <_Laerdal_Build_Parameters>$(_Laerdal_Build_Parameters);PackageOutputPath=$(PackageOutputPath) <_Laerdal_Build_Parameters>$(_Laerdal_Build_Parameters);Laerdal_Version_Full=$(Laerdal_Version_Full) + <_Laerdal_Build_Parameters>$(_Laerdal_Build_Parameters);Laerdal_Version_Assembly=$(Laerdal_Version_Assembly) + \ No newline at end of file diff --git a/Laerdal.Dfu.sln b/Laerdal.Dfu.sln index 829a451..5cfac61 100644 --- a/Laerdal.Dfu.sln +++ b/Laerdal.Dfu.sln @@ -8,6 +8,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Misc", "_Misc", "{37EBD209 LICENSE = LICENSE azure-pipelines.yaml = azure-pipelines.yaml Laerdal.Scripts\Laerdal.Version.sh = Laerdal.Scripts\Laerdal.Version.sh + Laerdal.Build.targets = Laerdal.Build.targets EndProjectSection EndProject Global diff --git a/azure-pipelines.yaml b/azure-pipelines.yaml index 164b6e1..958524f 100644 --- a/azure-pipelines.yaml +++ b/azure-pipelines.yaml @@ -3,11 +3,11 @@ trigger: batch: true branches: include: - - '*' + - '*' pool: - vmImage: macOS-12 + vmImage: 'macOS-12' steps: @@ -18,18 +18,18 @@ steps: persistCredentials: true - task: DotNetCoreCLI@2 - displayName: dotnet workload install + displayName: 'dotnet workload install' inputs: - command: custom custom: 'workload' + command: 'custom' arguments: 'install maui ios android' - task: DotNetCoreCLI@2 displayName: dotnet build inputs: - projects: $(Build.SourcesDirectory)/Laerdal.Build.proj + projects: '$(Build.SourcesDirectory)/Laerdal.Build.targets' arguments: '--verbosity detailed' - configuration: Release + configuration: 'Release' - publish: $(Build.ArtifactStagingDirectory) artifact: output From c1dbbdef8d7c99a6b99c93631f78c31d0f162d40 Mon Sep 17 00:00:00 2001 From: Kyriakos Sidiropoulos Date: Wed, 10 Apr 2024 15:27:12 +0200 Subject: [PATCH 04/19] move (Laerdal.Build.targets): move the file under Leardal.Scripts --- Laerdal.Dfu.sln | 5 +- .../Laerdal.Build.targets | 6 +- Laerdal.Scripts/Laerdal.Changelog.sh | 102 +++++++++++ .../Laerdal.CreateNewReleaseInGithub.sh | 167 ++++++++++++++++++ .../Laerdal.SetupBuildEnvironment.sh | 112 ++++++++++++ Laerdal.Scripts/Laerdal.Version.sh | 60 +++++-- azure-pipelines.yaml | 18 +- 7 files changed, 442 insertions(+), 28 deletions(-) rename Laerdal.Build.targets => Laerdal.Scripts/Laerdal.Build.targets (95%) create mode 100644 Laerdal.Scripts/Laerdal.Changelog.sh create mode 100644 Laerdal.Scripts/Laerdal.CreateNewReleaseInGithub.sh create mode 100755 Laerdal.Scripts/Laerdal.SetupBuildEnvironment.sh diff --git a/Laerdal.Dfu.sln b/Laerdal.Dfu.sln index 5cfac61..1dbf783 100644 --- a/Laerdal.Dfu.sln +++ b/Laerdal.Dfu.sln @@ -8,7 +8,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Misc", "_Misc", "{37EBD209 LICENSE = LICENSE azure-pipelines.yaml = azure-pipelines.yaml Laerdal.Scripts\Laerdal.Version.sh = Laerdal.Scripts\Laerdal.Version.sh - Laerdal.Build.targets = Laerdal.Build.targets + Laerdal.Scripts\Laerdal.Build.targets = Laerdal.Scripts\Laerdal.Build.targets + Laerdal.Scripts\Laerdal.Changelog.sh = Laerdal.Scripts\Laerdal.Changelog.sh + Laerdal.Scripts\Laerdal.CreateNewReleaseInGithub.sh = Laerdal.Scripts\Laerdal.CreateNewReleaseInGithub.sh + Laerdal.Scripts\Laerdal.SetupBuildEnvironment.sh = Laerdal.Scripts\Laerdal.SetupBuildEnvironment.sh EndProjectSection EndProject Global diff --git a/Laerdal.Build.targets b/Laerdal.Scripts/Laerdal.Build.targets similarity index 95% rename from Laerdal.Build.targets rename to Laerdal.Scripts/Laerdal.Build.targets index d1da623..4e68d46 100644 --- a/Laerdal.Build.targets +++ b/Laerdal.Scripts/Laerdal.Build.targets @@ -19,12 +19,12 @@ High - $([System.IO.Path]::Combine($(MSBuildThisFileDirectory), `Output/`)) + $([System.IO.Path]::Combine($(MSBuildThisFileDirectory), `..`, `Output`)) $(BUILD_ARTIFACTSTAGINGDIRECTORY) - $([System.IO.Path]::Combine($(MSBuildThisFileDirectory), `Laerdal.Dfu/Laerdal.Dfu.csproj`)) + $([System.IO.Path]::Combine($(MSBuildThisFileDirectory), `..`, `Laerdal.Dfu`, `Laerdal.Dfu.csproj`)) - $([System.IO.Path]::Combine($(MSBuildThisFileDirectory), `Laerdal.Scripts/`)) + $(MSBuildThisFileDirectory) diff --git a/Laerdal.Scripts/Laerdal.Changelog.sh b/Laerdal.Scripts/Laerdal.Changelog.sh new file mode 100644 index 0000000..49e40ae --- /dev/null +++ b/Laerdal.Scripts/Laerdal.Changelog.sh @@ -0,0 +1,102 @@ +#!/bin/bash + +usage(){ + echo "usage: ./Laerdal.Changelog.sh [-nv | --new-version X.Y.Z] [-o | --output version.txt] [-h | --help]" + echo "parameters:" + echo " -nv | --new-version [version] New major.minor.patch version (default is 0.0.0)" + echo " -o | --output [filename] Name of the output file" + echo " -h | --help Prints this message" + echo " -v | --verbose Verbose mode" +} + +function log () { + if [[ $verbose -eq 1 ]]; then + echo "$@" + fi +} + +filename="CHANGELOG.md" + +while [ "$1" != "" ]; do + case $1 in + -nv | --new-version ) shift + newversion="$1" + ;; + -o | --output ) shift + filename="$1" + ;; + -h | --help ) usage + exit + ;; + -v | --verbose ) verbose=1 + ;; + * ) echo + echo "### Wrong parameter: $1 ###" + echo + usage + exit 1 + esac + shift +done + + +if [ ! -z "$newversion" ]; then + if [[ "$newversion" =~ .*"-".* ]]; then + log "New version contains a dash, skipping changelog generation" + else + currenthash=$(git show --format=%h --no-patch) + echo "$currenthash $newversion" > tags.txt + log "New version: $newversion" + fi +else + echo "" > tags.txt +fi + +# Get all tags on develop and Filter out tags that are not in the format "HASH 1.2.3" +git tag --format='%(objectname:short) %(refname:short)' --sort=-version:refname --merged | grep -o '[a-z0-9]* [a-z0-9]*[.][a-z0-9]*[.][a-z0-9]*$' >> tags.txt + +# Create changelog file +echo "# CHANGELOG" > "$filename" +echo "" >> "$filename" +log "Created changelog file: $filename" + + +# Loop through all tags and create changelog +lastline='' +while read line; do + if [ -z "$lastline" ]; then + lastline=$line + else + # Split the line into hash and version + lasthash=`echo $lastline | cut -d' ' -f1` + lastversion=`echo $lastline | cut -d' ' -f2` + hash=`echo $line | cut -d' ' -f1` + + echo "## **$lastversion**" >> "$filename" + log "Added version: $lastversion" + # Get the commit message and author of the tag + git log -n 1 --pretty=tformat:"%b" $lasthash >> "$filename" + + echo "" >> "$filename" + + # Get all commits between the current tag and the previous tag + git log $hash..$lasthash --pretty=format:"- %s [%cn]" --no-merges >> "$filename" + + echo "" >> "$filename" + echo "" >> "$filename" + + # Get the commit message and author of the tag + git log -n 1 --pretty=tformat:"> by _%cn_ on _%cd_" --date=format:'%Y-%m-%d %H:%M:%S' $lasthash >> "$filename" + + echo "" >> "$filename" + echo "---" >> "$filename" + echo "" >> "$filename" + lastline=$line + fi +done < tags.txt + +rm -r -f tags.txt + +log "Done" + +exit 0 \ No newline at end of file diff --git a/Laerdal.Scripts/Laerdal.CreateNewReleaseInGithub.sh b/Laerdal.Scripts/Laerdal.CreateNewReleaseInGithub.sh new file mode 100644 index 0000000..cf1ce63 --- /dev/null +++ b/Laerdal.Scripts/Laerdal.CreateNewReleaseInGithub.sh @@ -0,0 +1,167 @@ +#!/bin/bash + +declare VERBOSE=0 +declare TAG_VERSION="" + +declare GIT_BRANCH="" +declare GITHUB_ACCESS_TOKEN="" +declare GITHUB_REPOSITORY_PATH="" + +function parse_arguments() { + while [[ $# -gt 0 ]]; do + case $1 in + + -v | --log) + VERBOSE=1 + shift + ;; + + -r | --repository-path) + GITHUB_REPOSITORY_PATH="$2" + shift + ;; + + -t | --tag-version) + TAG_VERSION="$2" + shift + ;; + + -b | --git-branch) + GIT_BRANCH="$2" + shift + ;; + + -a | --access-token) + GITHUB_ACCESS_TOKEN="$2" + shift + ;; + + *) + echo "Unknown option: $1" + usage + exit 1 + ;; + + esac + shift + done + + if [[ -z $GIT_BRANCH ]]; then + echo "Missing git-branch." + usage + exit 1 + fi + + if [[ -z $GITHUB_REPOSITORY_PATH ]]; then + echo "Missing github-repository." + usage + exit 1 + fi + + if [[ -z $GITHUB_ACCESS_TOKEN ]]; then + echo "Missing github-access-token." + usage + exit 1 + fi + + validate_tag_format "$TAG_VERSION" +} + +function validate_tag_format() { + local -r tag="$1" + local -r pattern='^[0-9]+\.[0-9]+(\.[0-9]+)?$' + + if ! [[ $tag =~ $pattern ]]; then + exit_with_error "Tag format is invalid: '$tag'" + fi +} + +function usage() { + local -r script_name=$(basename "$0") + + echo "Usage: $script_name [--verbose|-v] [--repository-path|-r]= [--git-branch|-b]= [--access-token|-a]= [--tag-version|-t]=" +} + +function create_release_on_github() { + # https://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28#create-a-release + + local eventual_tag_name="" + local eventual_singleline_summary="" + if [[ $GIT_BRANCH == "refs/heads/main" || $GIT_BRANCH == "refs/heads/master" ]]; then + eventual_tag_name="v$TAG_VERSION" # builds targeting main have this simple and straightforward tag name + eventual_singleline_summary="Release $eventual_tag_name" + + elif [[ $GIT_BRANCH == "refs/heads/develop" ]]; then # all builds that target develop are beta builds + eventual_tag_name="v$TAG_VERSION-beta" + eventual_singleline_summary="Beta $eventual_tag_name" + + else # all other builds that dont target main are alpha builds should rarely happen in practice but just in case + eventual_tag_name="v$TAG_VERSION-alpha" + eventual_singleline_summary="Alpha $eventual_tag_name" + fi + + local -r payload=$( + cat </dev/null 2>&1 # its vital to do this silently otherwise the +git fetch origin "$develop_branch:$develop_branch" >/dev/null 2>&1 # output of this entire script will be malformed + if [ "$branch_name" == "$develop_branch" ]; then develop_master_point=`git rev-list $branch_prefix$master_branch --merges --before=\`git show -s --format=%ct $commit\` --first-parent --max-count=1` - if [ -z $develop_master_point ]; then - # has never been merged, + if [ -z $develop_master_point ]; then # has never been merged develop_master_point=`git merge-base $branch_prefix$master_branch $commit --fork-point` fi log "develop_master_point=$develop_master_point" + elif [ "$branch_name" != "$master_branch" ]; then head_develop_point=`git rev-list $branch_prefix$develop_branch --merges --before=\`git show -s --format=%ct $commit\` --first-parent --max-count=1` - if [ -z $head_develop_point ]; then - # has never been merged, - head_develop_point=`git merge-base $branch_prefix$develop_branch $commit --fork-point` + if [ -z $head_develop_point ]; then # has never been merged + head_develop_point=$(git merge-base $branch_prefix$develop_branch $commit --fork-point) fi + log "head_develop_point=$head_develop_point" develop_master_point=`git rev-list $branch_prefix$master_branch --merges --before=\`git show -s --format=%ct $head_develop_point\` --first-parent --max-count=1` - if [ -z $develop_master_point ]; then - # has never been merged, + if [ -z $develop_master_point ]; then # has never been merged develop_master_point=`git merge-base $branch_prefix$master_branch $head_develop_point --fork-point` fi log "develop_master_point=$develop_master_point" @@ -161,12 +166,15 @@ fi # Minor if [ "$minor_override" != "true" ]; then if [ "$branch_name" == "$master_branch" ]; then - minor=`git rev-list $first_commit..$commit --count --first-parent --ancestry-path` + minor=$( git rev-list "$first_commit..$commit" --count --first-parent --ancestry-path ) + elif [ "$branch_name" == "$develop_branch" ]; then - minor=`git rev-list $first_commit..$develop_master_point --count --first-parent --ancestry-path` + minor=$( git rev-list "$first_commit..$develop_master_point" --count --first-parent --ancestry-path ) + else - minor=`git rev-list $first_commit..$develop_master_point --count --first-parent --ancestry-path` + minor=$( git rev-list "$first_commit..$develop_master_point" --count --first-parent --ancestry-path ) fi + else log "Minor version override: $minor" fi @@ -175,11 +183,33 @@ fi if [ "$patch_override" != "true" ]; then if [ "$branch_name" == "$master_branch" ]; then patch=0 + elif [ "$branch_name" == "$develop_branch" ]; then - patch=`git rev-list $first_commit..$commit --count --first-parent --ancestry-path --not \`git rev-list $first_commit..$commit --before=\\\`git show -s --format=%ct $develop_master_point --first-parent --ancestry-path\\\`\`` + declare -r before=$( git show -s --format=%ct "$develop_master_point" --first-parent --ancestry-path ) + declare -r not=$( git rev-list "$first_commit..$commit" --before=$before | head -n 750 ) # its vital to trim the number of parameters to around 750 otherwise we will get an error below + + patch=$( \ + git \ + rev-list \ + "$first_commit..$commit" \ + --count \ + --first-parent \ + --ancestry-path \ + --not $not ) # do not doublequote $not as this will break the script + else - patch=`git rev-list $first_commit..$head_develop_point --count --first-parent --ancestry-path --not \`git rev-list $first_commit..$head_develop_point --before=\\\`git show -s --format=%ct $develop_master_point --first-parent --ancestry-path\\\`\`` + declare -r before=$( git show -s --format=%ct "$develop_master_point" --first-parent --ancestry-path ) + declare -r not=$( git rev-list "$first_commit..$head_develop_point" --before="$before" | head -n 750 ) # its vital to trim the number of parameters to around 750 otherwise we will get an error below + + patch=$( \ + git rev-list \ + "$first_commit..$head_develop_point" \ + --count \ + --first-parent \ + --ancestry-path \ + --not $not ) # do not doublequote $not as this will break the script fi + else log "Patch version override: $patch" fi diff --git a/azure-pipelines.yaml b/azure-pipelines.yaml index 958524f..236dec0 100644 --- a/azure-pipelines.yaml +++ b/azure-pipelines.yaml @@ -17,19 +17,19 @@ steps: fetchDepth: 0 persistCredentials: true - - task: DotNetCoreCLI@2 - displayName: 'dotnet workload install' + - task: Bash@3 + displayName: 'Setup Build Environment' inputs: - custom: 'workload' - command: 'custom' - arguments: 'install maui ios android' + filePath: 'Laerdal.Scripts/Laerdal.SetupBuildEnvironment.sh' + arguments: ' "https://pkgs.dev.azure.com/LaerdalMedical/_packaging/LaerdalNuGet/nuget/v3/index.json" "$(Laerdal.NugetFeed.Username)" "$(Laerdal.NugetFeed.AccessToken)" "$(Build.ArtifactStagingDirectory)" ' + targetType: 'filePath' - task: DotNetCoreCLI@2 - displayName: dotnet build + displayName: 'dotnet build' inputs: - projects: '$(Build.SourcesDirectory)/Laerdal.Build.targets' + projects: '$(Build.SourcesDirectory)/Laerdal.Scripts/Laerdal.Build.targets' arguments: '--verbosity detailed' configuration: 'Release' - - publish: $(Build.ArtifactStagingDirectory) - artifact: output + - publish: '$(Build.ArtifactStagingDirectory)' + artifact: 'output' From 337d18c1e7790f44c40bce43a5f800ee754e572e Mon Sep 17 00:00:00 2001 From: Kyriakos Sidiropoulos Date: Wed, 10 Apr 2024 15:33:44 +0200 Subject: [PATCH 05/19] feat (github-actions.yml) --- .github/workflows/github-actions.yml | 90 +++++++++++++++++++ Laerdal.Dfu.sln | 1 + ....Build.targets => Laerdal.Builder.targets} | 0 azure-pipelines.yaml | 2 +- 4 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/github-actions.yml rename Laerdal.Scripts/{Laerdal.Build.targets => Laerdal.Builder.targets} (100%) diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml new file mode 100644 index 0000000..e2dbc79 --- /dev/null +++ b/.github/workflows/github-actions.yml @@ -0,0 +1,90 @@ +# +# https://docs.github.com/en/actions/migrating-to-github-actions/automated-migrations/migrating-from-azure-devops-with-github-actions-importer#environment-variable-mapping +# + +name: '🏗 📦 Build, Pack & Deploy Nugets' + +env: + BUILD_REPOSITORY_FOLDERPATH: ${{ github.workspace }} + + LAERDAL_SOURCE_BRANCH: ${{ github.ref }} + LAERDAL_REPOSITORY_PATH: ${{ github.repository }} + + SCL_GITHUB_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SCL_AZURE_ARTIFACTS_API_KEY: ${{ secrets.SCL_AZURE_ARTIFACTS_API_KEY }} + SCL_GITHUB_NUGET_FEED_USERNAME: ${{ secrets.SCL_GITHUB_NUGET_FEED_USERNAME }} + + +on: + workflow_call: # so that other workflows can trigger this + workflow_dispatch: # allows to run this workflow manually from the actions tab + + push: + branches: + - '**' # '*' matches zero or more characters but does not match the `/` character '**' matches zero or more of any character + + +jobs: + + build: + + runs-on: 'windows-2022' + + # variable substitution is not supported in github at all so we cant do stuff like this + # + # env: + # Build_Artifacts_Folderpath: $build_repository_folderpath/Artifacts + + steps: + + - name: '🔽 Checkout' + uses: 'actions/checkout@v4' + with: + fetch-tags: true # https://github.com/actions/checkout/issues/1471#issuecomment-1771231294 + fetch-depth: 0 + + - name: '🛠 Setup Build Environment' + shell: 'bash' + run: | + chmod +x "${{env.BUILD_REPOSITORY_FOLDERPATH}}/Laerdal.Scripts/Laerdal.SetupBuildEnvironment.sh" \ + && \ + "${{env.BUILD_REPOSITORY_FOLDERPATH}}/Laerdal.Scripts/Laerdal.SetupBuildEnvironment.sh" \ + "https://nuget.pkg.github.com/Laerdal-Medical/index.json" \ + "__nuget_server_username_doesnt_matter__" \ + "${{env.SCL_GITHUB_ACCESS_TOKEN}}" \ + "${{env.BUILD_REPOSITORY_FOLDERPATH}}/Artifacts" + + - name: '🏗 📦 Build, Pack & Announce New Release (if appropriate)' + shell: 'bash' + run: | + cd "${{env.BUILD_REPOSITORY_FOLDERPATH}}/Laerdal.Scripts" \ + && \ + dotnet \ + msbuild \ + "Laerdal.Builder.targets" \ + \ + -p:PackageOutputPath="${{ env.BUILD_REPOSITORY_FOLDERPATH }}/Artifacts" \ + -p:Laerdal_Source_Branch="${{ env.LAERDAL_SOURCE_BRANCH }}" \ + -p:Laerdal_Repository_Path="${{ env.LAERDAL_REPOSITORY_PATH }}" \ + -p:Laerdal_Github_Access_Token="${{ env.SCL_GITHUB_ACCESS_TOKEN }}" + + - name: '⬆️ Upload Artifacts' # to share with other workflows https://stackoverflow.com/a/77663335/863651 + uses: 'actions/upload-artifact@v4' + with: + name: 'Artifacts' + path: '${{env.BUILD_REPOSITORY_FOLDERPATH}}/Artifacts/**/*' + + - name: '🚀 Publish to the Laerdal Nuget Server on Github' # https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-nuget-registry + shell: 'bash' + if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop' + run: | + cd "${{env.BUILD_REPOSITORY_FOLDERPATH}}/Artifacts/" \ + && \ + ls . \ + && \ + dotnet \ + nuget \ + push \ + --source "https://nuget.pkg.github.com/Laerdal-Medical/index.json" \ + --api-key "${{env.SCL_GITHUB_ACCESS_TOKEN}}" \ + *nupkg diff --git a/Laerdal.Dfu.sln b/Laerdal.Dfu.sln index 1dbf783..ec6f1f6 100644 --- a/Laerdal.Dfu.sln +++ b/Laerdal.Dfu.sln @@ -12,6 +12,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Misc", "_Misc", "{37EBD209 Laerdal.Scripts\Laerdal.Changelog.sh = Laerdal.Scripts\Laerdal.Changelog.sh Laerdal.Scripts\Laerdal.CreateNewReleaseInGithub.sh = Laerdal.Scripts\Laerdal.CreateNewReleaseInGithub.sh Laerdal.Scripts\Laerdal.SetupBuildEnvironment.sh = Laerdal.Scripts\Laerdal.SetupBuildEnvironment.sh + .github\workflows\github-actions.yml = .github\workflows\github-actions.yml EndProjectSection EndProject Global diff --git a/Laerdal.Scripts/Laerdal.Build.targets b/Laerdal.Scripts/Laerdal.Builder.targets similarity index 100% rename from Laerdal.Scripts/Laerdal.Build.targets rename to Laerdal.Scripts/Laerdal.Builder.targets diff --git a/azure-pipelines.yaml b/azure-pipelines.yaml index 236dec0..556efe0 100644 --- a/azure-pipelines.yaml +++ b/azure-pipelines.yaml @@ -27,7 +27,7 @@ steps: - task: DotNetCoreCLI@2 displayName: 'dotnet build' inputs: - projects: '$(Build.SourcesDirectory)/Laerdal.Scripts/Laerdal.Build.targets' + projects: '$(Build.SourcesDirectory)/Laerdal.Scripts/Laerdal.Builder.targets' arguments: '--verbosity detailed' configuration: 'Release' From e34ed266bcdf41f18fb93fac6f0f8d47e13e43c6 Mon Sep 17 00:00:00 2001 From: Kyriakos Sidiropoulos Date: Wed, 10 Apr 2024 16:41:25 +0200 Subject: [PATCH 06/19] fix (github-actions.yml): install java 11 --- .github/workflows/github-actions.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml index b77a0bb..9f77b75 100644 --- a/.github/workflows/github-actions.yml +++ b/.github/workflows/github-actions.yml @@ -58,6 +58,15 @@ jobs: "${{env.SCL_GITHUB_ACCESS_TOKEN}}" \ "${{env.BUILD_REPOSITORY_FOLDERPATH}}/Artifacts" + # we need to manually install java11 because it is needed by the latest windows vm-images that run on + # msbuild version 17.8.3 that started rolling out around 20 Nov 2023 https://stackoverflow.com/a/77519085/863651 + - name: '🛠 Set Up JDK 11' + uses: 'actions/setup-java@v2' + with: + java-version: '11' + architecture: 'x64' + distribution: 'adopt' + - name: '🏗 📦 Build, Pack & Announce New Release (if appropriate)' shell: 'bash' run: | From c2f9f892224bbc1c8ebadbafef05ba670da14fa7 Mon Sep 17 00:00:00 2001 From: Kyriakos Sidiropoulos Date: Wed, 10 Apr 2024 17:22:21 +0200 Subject: [PATCH 07/19] fix (Laerdal.Builder.targets): Laerdal_ProjectFile -> Laerdal_Project --- Laerdal.Dfu/Laerdal.Dfu.csproj | 56 ++++++------- Laerdal.Dfu/Laerdal.targets | 4 +- Laerdal.Scripts/Laerdal.Builder.targets | 107 ++++++++++-------------- 3 files changed, 76 insertions(+), 91 deletions(-) diff --git a/Laerdal.Dfu/Laerdal.Dfu.csproj b/Laerdal.Dfu/Laerdal.Dfu.csproj index 5399c78..b8b2a9c 100644 --- a/Laerdal.Dfu/Laerdal.Dfu.csproj +++ b/Laerdal.Dfu/Laerdal.Dfu.csproj @@ -1,40 +1,40 @@ - - - net7.0-ios;net7.0-android - true - true - enable - 14.2 - 21.0 - + + net7.0-ios;net7.0-android + true + true + enable - - Laerdal.Dfu - Ble;Tools;Dfu;Bluetooth;Nordic;Semiconductor - Laerdal Medical, Francois Raminosona - Wrapper around Nordic.Dfu - + 14.2 + 21.0 + - - - 1 - 27 - $(BUILD_BUILDID) - $([MSBuild]::Add(8, $(GITHUB_RUN_NUMBER))) - $([MSBuild]::Add(8, $(CI_PIPELINE_IID))) - 0 + + Laerdal.Dfu + Ble;Tools;Dfu;Bluetooth;Nordic;Semiconductor + Laerdal Medical, Francois Raminosona + Wrapper around Nordic.Dfu + - $(Laerdal_Version_Major).$(Laerdal_Version_Minor).$(Laerdal_Version_Build) - + + + 1 + 27 + $(BUILD_BUILDID) + $([MSBuild]::Add(8, $(GITHUB_RUN_NUMBER))) + $([MSBuild]::Add(8, $(CI_PIPELINE_IID))) + 0 - + $(Laerdal_Version_Major).$(Laerdal_Version_Minor).$(Laerdal_Version_Build) + + + - + - + \ No newline at end of file diff --git a/Laerdal.Dfu/Laerdal.targets b/Laerdal.Dfu/Laerdal.targets index 6fb5866..bea5937 100644 --- a/Laerdal.Dfu/Laerdal.targets +++ b/Laerdal.Dfu/Laerdal.targets @@ -25,10 +25,10 @@ - $(Laerdal_Package_Name) + $(Laerdal_Package_Name) $(Laerdal_Package_Name) $(Laerdal_Package_Name) - $(Laerdal_Package_Name) + $(Laerdal_Package_Name) $(Laerdal_Package_Copyright) diff --git a/Laerdal.Scripts/Laerdal.Builder.targets b/Laerdal.Scripts/Laerdal.Builder.targets index 4e68d46..1200f48 100644 --- a/Laerdal.Scripts/Laerdal.Builder.targets +++ b/Laerdal.Scripts/Laerdal.Builder.targets @@ -1,81 +1,41 @@ - - - - - - + - - - + - High - - $([System.IO.Path]::Combine($(MSBuildThisFileDirectory), `..`, `Output`)) - $(BUILD_ARTIFACTSTAGINGDIRECTORY) + %0A + Release - $([System.IO.Path]::Combine($(MSBuildThisFileDirectory), `..`, `Laerdal.Dfu`, `Laerdal.Dfu.csproj`)) - - $(MSBuildThisFileDirectory) - + $(BUILD_ARTIFACTSTAGINGDIRECTORY) + $([System.IO.Path]::Combine($(MSBuildThisFileDirectory), `..`, `Artifacts/`)) - - - - - $([System.IO.Path]::Combine($(Laerdal_Script_FolderPath), `Laerdal.Version.sh`)) - $([System.IO.Path]::Combine($(PackageOutputPath), `version.txt`)) - - - 1 - main - develop - - <_Laerdal_Version_Script_Parameters>$(_Laerdal_Version_Script_Parameters) -o $(Laerdal_Version_Details_FilePath) - <_Laerdal_Version_Script_Parameters>$(_Laerdal_Version_Script_Parameters) --major $(Laerdal_Version_Major) - <_Laerdal_Version_Script_Parameters>$(_Laerdal_Version_Script_Parameters) --master-branch $(Laerdal_Master_Branch_Name) - <_Laerdal_Version_Script_Parameters>$(_Laerdal_Version_Script_Parameters) --develop-branch $(Laerdal_Develop_Branch_Name) - + $(BUILD_SOURCEBRANCH) + $(BUILD_REPOSITORY_NAME) + True - - - - - - - - - $([System.Text.RegularExpressions.Regex]::Replace("$(Laerdal_Version_Full)", "^(\d*)\.(\d*)\.(\d*)-?([^.]*).?(\d*)?$", "$1.$2.$3")) - $([System.Text.RegularExpressions.Regex]::Replace("$(Laerdal_Version_Full)", "^(\d*)\.(\d*)\.(\d*)-?([^.]*).?(\d*)?$", "$5")) - 0 - + $([System.IO.Path]::Combine($(MSBuildThisFileDirectory), `..`, `Laerdal.Dfu`, `Laerdal.Dfu.csproj`)) + - - - - - - + + + - + + + - - - + @@ -83,12 +43,37 @@ <_Laerdal_Build_Parameters>$(_Laerdal_Build_Parameters);Configuration=$(Configuration) <_Laerdal_Build_Parameters>$(_Laerdal_Build_Parameters);PackageOutputPath=$(PackageOutputPath) - <_Laerdal_Build_Parameters>$(_Laerdal_Build_Parameters);Laerdal_Version_Full=$(Laerdal_Version_Full) - <_Laerdal_Build_Parameters>$(_Laerdal_Build_Parameters);Laerdal_Version_Assembly=$(Laerdal_Version_Assembly) - \ No newline at end of file + + + + + + + + + + $([System.IO.Path]::Combine($(MSBuildThisFileDirectory), `Laerdal.CreateNewReleaseInGithub.sh`)) + + <_Laerdal_Create_Github_Release_Script_Parameters>$(_Laerdal_Create_Github_Release_Script_Parameters) --git-branch '$(Laerdal_Source_Branch)' + <_Laerdal_Create_Github_Release_Script_Parameters>$(_Laerdal_Create_Github_Release_Script_Parameters) --tag-version '$(Laerdal_Version_Base)' + <_Laerdal_Create_Github_Release_Script_Parameters>$(_Laerdal_Create_Github_Release_Script_Parameters) --access-token '$(Laerdal_Github_Access_Token)' + <_Laerdal_Create_Github_Release_Script_Parameters>$(_Laerdal_Create_Github_Release_Script_Parameters) --repository-path '$(Laerdal_Repository_Path)' + + + + + + + + From 0e75ecc0f70735b263cc10bdb3e0f45221572412 Mon Sep 17 00:00:00 2001 From: Kyriakos Sidiropoulos Date: Wed, 10 Apr 2024 17:22:21 +0200 Subject: [PATCH 08/19] fix (Laerdal.Builder.targets): Laerdal_ProjectFile -> Laerdal_Project --- .github/workflows/github-actions.yml | 2 +- Laerdal.Dfu/Laerdal.Dfu.csproj | 56 ++++++------- Laerdal.Dfu/Laerdal.targets | 4 +- Laerdal.Scripts/Laerdal.Builder.targets | 107 ++++++++++-------------- 4 files changed, 77 insertions(+), 92 deletions(-) diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml index 9f77b75..9555c1d 100644 --- a/.github/workflows/github-actions.yml +++ b/.github/workflows/github-actions.yml @@ -27,7 +27,7 @@ on: branches: - '**' - + jobs: build: diff --git a/Laerdal.Dfu/Laerdal.Dfu.csproj b/Laerdal.Dfu/Laerdal.Dfu.csproj index 5399c78..b8b2a9c 100644 --- a/Laerdal.Dfu/Laerdal.Dfu.csproj +++ b/Laerdal.Dfu/Laerdal.Dfu.csproj @@ -1,40 +1,40 @@ - - - net7.0-ios;net7.0-android - true - true - enable - 14.2 - 21.0 - + + net7.0-ios;net7.0-android + true + true + enable - - Laerdal.Dfu - Ble;Tools;Dfu;Bluetooth;Nordic;Semiconductor - Laerdal Medical, Francois Raminosona - Wrapper around Nordic.Dfu - + 14.2 + 21.0 + - - - 1 - 27 - $(BUILD_BUILDID) - $([MSBuild]::Add(8, $(GITHUB_RUN_NUMBER))) - $([MSBuild]::Add(8, $(CI_PIPELINE_IID))) - 0 + + Laerdal.Dfu + Ble;Tools;Dfu;Bluetooth;Nordic;Semiconductor + Laerdal Medical, Francois Raminosona + Wrapper around Nordic.Dfu + - $(Laerdal_Version_Major).$(Laerdal_Version_Minor).$(Laerdal_Version_Build) - + + + 1 + 27 + $(BUILD_BUILDID) + $([MSBuild]::Add(8, $(GITHUB_RUN_NUMBER))) + $([MSBuild]::Add(8, $(CI_PIPELINE_IID))) + 0 - + $(Laerdal_Version_Major).$(Laerdal_Version_Minor).$(Laerdal_Version_Build) + + + - + - + \ No newline at end of file diff --git a/Laerdal.Dfu/Laerdal.targets b/Laerdal.Dfu/Laerdal.targets index 6fb5866..bea5937 100644 --- a/Laerdal.Dfu/Laerdal.targets +++ b/Laerdal.Dfu/Laerdal.targets @@ -25,10 +25,10 @@ - $(Laerdal_Package_Name) + $(Laerdal_Package_Name) $(Laerdal_Package_Name) $(Laerdal_Package_Name) - $(Laerdal_Package_Name) + $(Laerdal_Package_Name) $(Laerdal_Package_Copyright) diff --git a/Laerdal.Scripts/Laerdal.Builder.targets b/Laerdal.Scripts/Laerdal.Builder.targets index 4e68d46..1200f48 100644 --- a/Laerdal.Scripts/Laerdal.Builder.targets +++ b/Laerdal.Scripts/Laerdal.Builder.targets @@ -1,81 +1,41 @@ - - - - - - + - - - + - High - - $([System.IO.Path]::Combine($(MSBuildThisFileDirectory), `..`, `Output`)) - $(BUILD_ARTIFACTSTAGINGDIRECTORY) + %0A + Release - $([System.IO.Path]::Combine($(MSBuildThisFileDirectory), `..`, `Laerdal.Dfu`, `Laerdal.Dfu.csproj`)) - - $(MSBuildThisFileDirectory) - + $(BUILD_ARTIFACTSTAGINGDIRECTORY) + $([System.IO.Path]::Combine($(MSBuildThisFileDirectory), `..`, `Artifacts/`)) - - - - - $([System.IO.Path]::Combine($(Laerdal_Script_FolderPath), `Laerdal.Version.sh`)) - $([System.IO.Path]::Combine($(PackageOutputPath), `version.txt`)) - - - 1 - main - develop - - <_Laerdal_Version_Script_Parameters>$(_Laerdal_Version_Script_Parameters) -o $(Laerdal_Version_Details_FilePath) - <_Laerdal_Version_Script_Parameters>$(_Laerdal_Version_Script_Parameters) --major $(Laerdal_Version_Major) - <_Laerdal_Version_Script_Parameters>$(_Laerdal_Version_Script_Parameters) --master-branch $(Laerdal_Master_Branch_Name) - <_Laerdal_Version_Script_Parameters>$(_Laerdal_Version_Script_Parameters) --develop-branch $(Laerdal_Develop_Branch_Name) - + $(BUILD_SOURCEBRANCH) + $(BUILD_REPOSITORY_NAME) + True - - - - - - - - - $([System.Text.RegularExpressions.Regex]::Replace("$(Laerdal_Version_Full)", "^(\d*)\.(\d*)\.(\d*)-?([^.]*).?(\d*)?$", "$1.$2.$3")) - $([System.Text.RegularExpressions.Regex]::Replace("$(Laerdal_Version_Full)", "^(\d*)\.(\d*)\.(\d*)-?([^.]*).?(\d*)?$", "$5")) - 0 - + $([System.IO.Path]::Combine($(MSBuildThisFileDirectory), `..`, `Laerdal.Dfu`, `Laerdal.Dfu.csproj`)) + - - - - - - + + + - + + + - - - + @@ -83,12 +43,37 @@ <_Laerdal_Build_Parameters>$(_Laerdal_Build_Parameters);Configuration=$(Configuration) <_Laerdal_Build_Parameters>$(_Laerdal_Build_Parameters);PackageOutputPath=$(PackageOutputPath) - <_Laerdal_Build_Parameters>$(_Laerdal_Build_Parameters);Laerdal_Version_Full=$(Laerdal_Version_Full) - <_Laerdal_Build_Parameters>$(_Laerdal_Build_Parameters);Laerdal_Version_Assembly=$(Laerdal_Version_Assembly) - \ No newline at end of file + + + + + + + + + + $([System.IO.Path]::Combine($(MSBuildThisFileDirectory), `Laerdal.CreateNewReleaseInGithub.sh`)) + + <_Laerdal_Create_Github_Release_Script_Parameters>$(_Laerdal_Create_Github_Release_Script_Parameters) --git-branch '$(Laerdal_Source_Branch)' + <_Laerdal_Create_Github_Release_Script_Parameters>$(_Laerdal_Create_Github_Release_Script_Parameters) --tag-version '$(Laerdal_Version_Base)' + <_Laerdal_Create_Github_Release_Script_Parameters>$(_Laerdal_Create_Github_Release_Script_Parameters) --access-token '$(Laerdal_Github_Access_Token)' + <_Laerdal_Create_Github_Release_Script_Parameters>$(_Laerdal_Create_Github_Release_Script_Parameters) --repository-path '$(Laerdal_Repository_Path)' + + + + + + + + From c07d4d5c5385197dfaaba5179bd182876a404ee9 Mon Sep 17 00:00:00 2001 From: Kyriakos Sidiropoulos Date: Wed, 10 Apr 2024 18:39:22 +0200 Subject: [PATCH 09/19] fix (Laerdal.Builder.targets): refactor the versioning mechanism so that it will work in release mode --- Laerdal.Dfu/Laerdal.Dfu.csproj | 11 ++++------- Laerdal.Scripts/Laerdal.Builder.targets | 13 +++++++++++++ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/Laerdal.Dfu/Laerdal.Dfu.csproj b/Laerdal.Dfu/Laerdal.Dfu.csproj index b8b2a9c..b7876b5 100644 --- a/Laerdal.Dfu/Laerdal.Dfu.csproj +++ b/Laerdal.Dfu/Laerdal.Dfu.csproj @@ -19,14 +19,11 @@ - 1 - 27 - $(BUILD_BUILDID) - $([MSBuild]::Add(8, $(GITHUB_RUN_NUMBER))) - $([MSBuild]::Add(8, $(CI_PIPELINE_IID))) - 0 + 1 + 27 + 0 - $(Laerdal_Version_Major).$(Laerdal_Version_Minor).$(Laerdal_Version_Build) + $(Laerdal_Version_Major).$(Laerdal_Version_Minor).$(Laerdal_Version_Build) diff --git a/Laerdal.Scripts/Laerdal.Builder.targets b/Laerdal.Scripts/Laerdal.Builder.targets index 1200f48..424ee74 100644 --- a/Laerdal.Scripts/Laerdal.Builder.targets +++ b/Laerdal.Scripts/Laerdal.Builder.targets @@ -21,12 +21,24 @@ True $([System.IO.Path]::Combine($(MSBuildThisFileDirectory), `..`, `Laerdal.Dfu`, `Laerdal.Dfu.csproj`)) + + + 1 + 27 + + $(BUILD_BUILDID) + $([MSBuild]::Add(8, $(GITHUB_RUN_NUMBER))) + $([MSBuild]::Add(8, $(CI_PIPELINE_IID))) + 0 + + $(Laerdal_Version_Major).$(Laerdal_Version_Minor).$(Laerdal_Version_Build) + @@ -42,6 +54,7 @@ Release <_Laerdal_Build_Parameters>$(_Laerdal_Build_Parameters);Configuration=$(Configuration) + <_Laerdal_Build_Parameters>$(_Laerdal_Build_Parameters);Laerdal_Version=$(Laerdal_Version_Base) <_Laerdal_Build_Parameters>$(_Laerdal_Build_Parameters);PackageOutputPath=$(PackageOutputPath) From eb9f108bbb4109d38b6347fee74e79766c63f330 Mon Sep 17 00:00:00 2001 From: Kyriakos Sidiropoulos Date: Wed, 10 Apr 2024 18:55:32 +0200 Subject: [PATCH 10/19] fix (github-actions.yml): nuget feed urls have been fixed --- .github/workflows/github-actions.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml index 9555c1d..c67cd7c 100644 --- a/.github/workflows/github-actions.yml +++ b/.github/workflows/github-actions.yml @@ -53,7 +53,7 @@ jobs: chmod +x "${{env.BUILD_REPOSITORY_FOLDERPATH}}/Laerdal.Scripts/Laerdal.SetupBuildEnvironment.sh" \ && \ "${{env.BUILD_REPOSITORY_FOLDERPATH}}/Laerdal.Scripts/Laerdal.SetupBuildEnvironment.sh" \ - "https://nuget.pkg.github.com/Laerdal-Medical/index.json" \ + "https://nuget.pkg.github.com/Laerdal/index.json" \ "__nuget_server_username_doesnt_matter__" \ "${{env.SCL_GITHUB_ACCESS_TOKEN}}" \ "${{env.BUILD_REPOSITORY_FOLDERPATH}}/Artifacts" @@ -99,6 +99,6 @@ jobs: dotnet \ nuget \ push \ - --source "https://nuget.pkg.github.com/Laerdal-Medical/index.json" \ + --source "https://nuget.pkg.github.com/Laerdal/index.json" \ --api-key "${{env.SCL_GITHUB_ACCESS_TOKEN}}" \ *nupkg From 023b9db480cd2f3847b4642cf2f7ec6d7ab3da4f Mon Sep 17 00:00:00 2001 From: Kyriakos Sidiropoulos Date: Thu, 11 Apr 2024 13:34:31 +0200 Subject: [PATCH 11/19] clean (github-actions.yml): move doc comments to the top of the file --- .github/workflows/github-actions.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml index c67cd7c..5b6433f 100644 --- a/.github/workflows/github-actions.yml +++ b/.github/workflows/github-actions.yml @@ -1,6 +1,11 @@ # # https://docs.github.com/en/actions/migrating-to-github-actions/automated-migrations/migrating-from-azure-devops-with-github-actions-importer#environment-variable-mapping # +# bare in mind that variable substitution is not supported in github at all so we cant do stuff like this +# +# env: +# Build_Artifacts_Folderpath: $build_repository_folderpath/Artifacts +# name: '🏗 📦 Build, Pack & Deploy Nugets' From b37b3824b98d4706185588d72400df5ff497be68 Mon Sep 17 00:00:00 2001 From: Kyriakos Sidiropoulos Date: Thu, 11 Apr 2024 13:34:55 +0200 Subject: [PATCH 12/19] feat (github-actions.yml): set the timeout of the entire workflow to 5mins --- .github/workflows/github-actions.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml index 5b6433f..5c9508c 100644 --- a/.github/workflows/github-actions.yml +++ b/.github/workflows/github-actions.yml @@ -38,11 +38,7 @@ jobs: build: runs-on: 'windows-2022' - - # variable substitution is not supported in github at all so we cant do stuff like this - # - # env: - # Build_Artifacts_Folderpath: $build_repository_folderpath/Artifacts + timeout-minutes: 5 steps: From 6aafc23b41eacedf0d08398eebf6fe7263e94915 Mon Sep 17 00:00:00 2001 From: Kyriakos Sidiropoulos Date: Thu, 11 Apr 2024 13:35:09 +0200 Subject: [PATCH 13/19] fix (Laerdal.SetupBuildEnvironment.sh): store nuget feed password in clear-text this is done in order to resolve an error we're witnessing on the particular nuget toolchain pre-installed in the vm-image we're using --- Laerdal.Scripts/Laerdal.SetupBuildEnvironment.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Laerdal.Scripts/Laerdal.SetupBuildEnvironment.sh b/Laerdal.Scripts/Laerdal.SetupBuildEnvironment.sh index bc4e2fc..3c7de69 100755 --- a/Laerdal.Scripts/Laerdal.SetupBuildEnvironment.sh +++ b/Laerdal.Scripts/Laerdal.SetupBuildEnvironment.sh @@ -102,7 +102,8 @@ dotnet nuget add \ source "${NUGET_FEED_URL}" \ --name "LaerdalMedical" \ --username "${NUGET_FEED_USERNAME}" \ - --password "${NUGET_FEED_ACCESSTOKEN}" + --password "${NUGET_FEED_ACCESSTOKEN}" \ + --store-password-in-clear-text declare exitCode=$? if [ $exitCode != 0 ]; then echo "##vso[task.logissue type=error]Failed to add 'Laerdal Nuget Feed' as a nuget source." From 2e8cc28d59beb58395e08eb8283f910254fb3f3f Mon Sep 17 00:00:00 2001 From: Kyriakos Sidiropoulos Date: Thu, 11 Apr 2024 13:46:38 +0200 Subject: [PATCH 14/19] fix (Laerdal.Builder.targets): fix erroneous guard-checks --- Laerdal.Scripts/Laerdal.Builder.targets | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Laerdal.Scripts/Laerdal.Builder.targets b/Laerdal.Scripts/Laerdal.Builder.targets index 424ee74..bcdd47e 100644 --- a/Laerdal.Scripts/Laerdal.Builder.targets +++ b/Laerdal.Scripts/Laerdal.Builder.targets @@ -47,8 +47,10 @@ - - + + + + Release From 427273a86b411afa7669bca7f7b5e44a517a358c Mon Sep 17 00:00:00 2001 From: Kyriakos Sidiropoulos Date: Thu, 11 Apr 2024 13:48:21 +0200 Subject: [PATCH 15/19] clean (Laerdal.Builder.targets): remove duplicate setting of the 'Configuration' property --- Laerdal.Scripts/Laerdal.Builder.targets | 2 -- 1 file changed, 2 deletions(-) diff --git a/Laerdal.Scripts/Laerdal.Builder.targets b/Laerdal.Scripts/Laerdal.Builder.targets index bcdd47e..59ebbb0 100644 --- a/Laerdal.Scripts/Laerdal.Builder.targets +++ b/Laerdal.Scripts/Laerdal.Builder.targets @@ -53,8 +53,6 @@ - Release - <_Laerdal_Build_Parameters>$(_Laerdal_Build_Parameters);Configuration=$(Configuration) <_Laerdal_Build_Parameters>$(_Laerdal_Build_Parameters);Laerdal_Version=$(Laerdal_Version_Base) <_Laerdal_Build_Parameters>$(_Laerdal_Build_Parameters);PackageOutputPath=$(PackageOutputPath) From 4bd2345dc11126dbf61943709b7130e3582d7a2f Mon Sep 17 00:00:00 2001 From: Kyriakos Sidiropoulos Date: Thu, 11 Apr 2024 14:22:03 +0200 Subject: [PATCH 16/19] feat (github-actions.yml): co-publish nugets to nuget.org too --- .github/workflows/github-actions.yml | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml index 5c9508c..771dada 100644 --- a/.github/workflows/github-actions.yml +++ b/.github/workflows/github-actions.yml @@ -16,10 +16,10 @@ env: LAERDAL_REPOSITORY_PATH: ${{ github.repository }} SCL_GITHUB_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SCL_NUGET_ORG_FEED_API_KEY: ${{ secrets.NUGET_ORG_FEED_API_KEY }} SCL_AZURE_ARTIFACTS_API_KEY: ${{ secrets.SCL_AZURE_ARTIFACTS_API_KEY }} SCL_GITHUB_NUGET_FEED_USERNAME: ${{ secrets.SCL_GITHUB_NUGET_FEED_USERNAME }} - on: workflow_call: # so that other workflows can trigger this workflow_dispatch: # allows to run this workflow manually from the actions tab @@ -103,3 +103,18 @@ jobs: --source "https://nuget.pkg.github.com/Laerdal/index.json" \ --api-key "${{env.SCL_GITHUB_ACCESS_TOKEN}}" \ *nupkg + + - name: '🚀 Publish to the Nuget.org' # https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-nuget-registry + shell: 'bash' + if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop' + run: | + cd "${{env.BUILD_REPOSITORY_FOLDERPATH}}/Artifacts/" \ + && \ + ls . \ + && \ + dotnet \ + nuget \ + push \ + --source "https://api.nuget.org/v3/index.json" \ + --api-key "${{env.SCL_NUGET_ORG_FEED_API_KEY}}" \ + *nupkg From 7d240ef3ab9574a039485d2d8d8ec09e95fedc18 Mon Sep 17 00:00:00 2001 From: Kyriakos Sidiropoulos Date: Thu, 11 Apr 2024 14:43:14 +0200 Subject: [PATCH 17/19] clean (github-actions.yml) --- .github/workflows/github-actions.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml index 771dada..c9fb4c4 100644 --- a/.github/workflows/github-actions.yml +++ b/.github/workflows/github-actions.yml @@ -104,7 +104,7 @@ jobs: --api-key "${{env.SCL_GITHUB_ACCESS_TOKEN}}" \ *nupkg - - name: '🚀 Publish to the Nuget.org' # https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-nuget-registry + - name: '🚀 Publish to the Nuget.org' shell: 'bash' if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop' run: | From d7458a5754da7b82404e00cfb1a901f37b55b08d Mon Sep 17 00:00:00 2001 From: Kyriakos Sidiropoulos Date: Thu, 11 Apr 2024 15:30:38 +0200 Subject: [PATCH 18/19] refa (github-actions.yml): we now use 'USERNAME' as the username to auth against the internal github nuget servers --- .github/workflows/github-actions.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml index c9fb4c4..485a0fd 100644 --- a/.github/workflows/github-actions.yml +++ b/.github/workflows/github-actions.yml @@ -55,9 +55,9 @@ jobs: && \ "${{env.BUILD_REPOSITORY_FOLDERPATH}}/Laerdal.Scripts/Laerdal.SetupBuildEnvironment.sh" \ "https://nuget.pkg.github.com/Laerdal/index.json" \ - "__nuget_server_username_doesnt_matter__" \ - "${{env.SCL_GITHUB_ACCESS_TOKEN}}" \ - "${{env.BUILD_REPOSITORY_FOLDERPATH}}/Artifacts" + "USERNAME" \ + "${{ env.SCL_GITHUB_ACCESS_TOKEN }}" \ + "${{ env.BUILD_REPOSITORY_FOLDERPATH }}/Artifacts" # we need to manually install java11 because it is needed by the latest windows vm-images that run on # msbuild version 17.8.3 that started rolling out around 20 Nov 2023 https://stackoverflow.com/a/77519085/863651 From e1938e5e20dfc43d6b8b3c396667ed4130385df4 Mon Sep 17 00:00:00 2001 From: Kyriakos Sidiropoulos Date: Thu, 11 Apr 2024 15:48:51 +0200 Subject: [PATCH 19/19] fix (github-actions.yml): we now use a custom access token to gain access to the nuget repos --- .github/workflows/github-actions.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml index 485a0fd..f167f12 100644 --- a/.github/workflows/github-actions.yml +++ b/.github/workflows/github-actions.yml @@ -15,7 +15,7 @@ env: LAERDAL_SOURCE_BRANCH: ${{ github.ref }} LAERDAL_REPOSITORY_PATH: ${{ github.repository }} - SCL_GITHUB_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SCL_GITHUB_ACCESS_TOKEN: ${{ secrets.SCL_GITHUB_ACCESS_TOKEN }} SCL_NUGET_ORG_FEED_API_KEY: ${{ secrets.NUGET_ORG_FEED_API_KEY }} SCL_AZURE_ARTIFACTS_API_KEY: ${{ secrets.SCL_AZURE_ARTIFACTS_API_KEY }} SCL_GITHUB_NUGET_FEED_USERNAME: ${{ secrets.SCL_GITHUB_NUGET_FEED_USERNAME }} @@ -55,7 +55,7 @@ jobs: && \ "${{env.BUILD_REPOSITORY_FOLDERPATH}}/Laerdal.Scripts/Laerdal.SetupBuildEnvironment.sh" \ "https://nuget.pkg.github.com/Laerdal/index.json" \ - "USERNAME" \ + "${{ env.SCL_GITHUB_NUGET_FEED_USERNAME }}" \ "${{ env.SCL_GITHUB_ACCESS_TOKEN }}" \ "${{ env.BUILD_REPOSITORY_FOLDERPATH }}/Artifacts"