From b0931c87ba99850e893b61573804fb15b525e629 Mon Sep 17 00:00:00 2001 From: Andrew Welker Date: Tue, 7 Feb 2023 19:26:19 -0700 Subject: [PATCH] ci: update workflow to build for 4-series --- .github/workflows/Build Essentials.yml | 307 ------------------------- .github/workflows/docker.yml | 182 ++++++--------- 2 files changed, 66 insertions(+), 423 deletions(-) delete mode 100644 .github/workflows/Build Essentials.yml diff --git a/.github/workflows/Build Essentials.yml b/.github/workflows/Build Essentials.yml deleted file mode 100644 index 0194884c..00000000 --- a/.github/workflows/Build Essentials.yml +++ /dev/null @@ -1,307 +0,0 @@ -name: Build Essentials 2.0.0 - -on: - push: - branches: - - feature-2.0.0/* - pull_request: - types: - - closed - branches: - - development-2.0.0 - -env: - # solution path doesn't need slashes unless there it is multiple folders deep - # solution name does not include extension. .sln is assumed - SOLUTION_PATH: PepperDashEssentials - SOLUTION_FILE: PepperDashEssentials - # Do not edit this, we're just creating it here - VERSION: 0.0.0-buildtype-buildnumber - # Defaults to debug for build type - BUILD_TYPE: Debug - # Defaults to main as the release branch. Change as necessary - RELEASE_BRANCH: main -jobs: - Build_Project: - runs-on: windows-2019 - steps: - # First we checkout the source repo - - name: Checkout repo - uses: actions/checkout@v2 - with: - fetch-depth: 0 - # Fetch all tags - - name: Fetch tags - run: git fetch --tags - # Generate the appropriate version number - - name: Set Version Number - shell: powershell - run: | - $version = ./.github/scripts/GenerateVersionNumber-2.0.0.ps1 - echo "VERSION=$version" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - # Use the version number to set the version of the assemblies - - name: Update AssemblyInfo.cs - shell: powershell - run: | - ./.github/scripts/UpdateAssemblyVersion.ps1 ${{ env.VERSION }} - - name: restore Nuget Packages - run: nuget install .\packages.config -OutputDirectory .\packages -ExcludeVersion - # Login to Docker - - name: Login to Docker - uses: azure/docker-login@v1 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_TOKEN }} - # Build the solutions in the docker image - - name: Build Solution - shell: powershell - run: | - Invoke-Expression "docker run --rm --mount type=bind,source=""$($Env:GITHUB_WORKSPACE)"",target=""c:/project"" pepperdash/sspbuilder c:\cihelpers\vsidebuild.exe -Solution ""c:\project\$($Env:SOLUTION_FILE).sln"" -BuildSolutionConfiguration $($ENV:BUILD_TYPE)" - # Zip up the output files as needed - - name: Zip Build Output - shell: powershell - run: ./.github/scripts/ZipBuildOutput.ps1 - # Write the version to a file to be consumed by the push jobs - - name: Write Version - run: Write-Output "$($Env:VERSION)" | Out-File -FilePath "$($Env:GITHUB_HOME)\output\version.txt" - # Upload the build output as an artifact - - name: Upload Build Output - uses: actions/upload-artifact@v1 - with: - name: Build - path: ./${{ env.SOLUTION_FILE}}-${{ env.VERSION}}.zip - # Upload the Version file as an artifact - - name: Upload version.txt - uses: actions/upload-artifact@v1 - with: - name: Version - path: ${{env.GITHUB_HOME}}\output\version.txt - # Create the release on the source repo - - name: Create tag for non-rc builds - if: contains(env.VERSION, 'alpha') || contains(env.VERSION, 'beta') - run: | - git tag $($Env:VERSION) - git push --tags origin - - name: Create Release - id: create_release - # using contributor's version to allow for pointing at the right commit - if: contains(env.VERSION,'-rc-') || contains(env.VERSION,'-hotfix-') - uses: fleskesvor/create-release@feature/support-target-commitish - with: - tag_name: ${{ env.VERSION }} - release_name: ${{ env.VERSION }} - prerelease: ${{contains('debug', env.BUILD_TYPE)}} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # Upload the build package to the release - - name: Upload Release Package - if: contains(env.VERSION,'-rc-') || contains(env.VERSION,'-hotfix-') - id: upload_release - uses: actions/upload-release-asset@v1 - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./${{ env.SOLUTION_FILE}}-${{ env.VERSION}}.zip - asset_name: ${{ env.SOLUTION_FILE}}-${{ env.VERSION}}.zip - asset_content_type: application/zip - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - Push_Nuget_Package: - needs: Build_Project - runs-on: windows-latest - steps: - - name: Download Build Version Info - uses: actions/download-artifact@v1 - with: - name: Version - - name: Set Version Number - shell: powershell - run: | - Get-ChildItem "./Version" - $version = Get-Content -Path ./Version/version.txt - Write-Host "Version: $version" - echo "VERSION=$version" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - Remove-Item -Path ./Version/version.txt - Remove-Item -Path ./Version - - name: Download Build output - uses: actions/download-artifact@v1 - with: - name: Build - path: ./ - - name: Unzip Build file - run: | - Get-ChildItem .\*.zip | Expand-Archive -DestinationPath .\ - Remove-Item -Path .\*.zip - - name: Copy Files to root & delete output directory - run: | - Remove-Item -Path .\* -Include @("*.cpz","*.md","*.cplz","*.json","*.dll","*.clz") - Get-ChildItem -Path .\output\* | Copy-Item -Destination .\ - Remove-Item -Path .\output -Recurse - - name: Add nuget.exe - uses: nuget/setup-nuget@v1 - - name: Add Github Packages source - run: nuget sources add -name github -source https://nuget.pkg.github.com/pepperdash/index.json -username Pepperdash -password ${{ secrets.GITHUB_TOKEN }} - - name: Add nuget.org API Key - run: nuget setApiKey ${{ secrets.NUGET_API_KEY }} - - name: Create nuget package - run: nuget pack "./PepperDash_Essentials_Core.nuspec" -version ${{ env.VERSION }} - - name: Publish nuget package to Github registry - run: nuget push **/*.nupkg -source github - - name: Publish nuget package to nuget.org - run: nuget push **/*.nupkg -Source https://api.nuget.org/v3/index.json - # This step always runs and pushes the build to the internal build rep - # Internal_Push_Output: - # needs: Build_Project - # runs-on: windows-latest - # steps: - # - name: check Github ref - # run: ${{toJson(github.ref)}} - # # Checkout the repo - # - name: Checkout Builds Repo - # uses: actions/checkout@v2 - # with: - # token: ${{ secrets.BUILDS_TOKEN }} - # repository: PepperDash-Engineering/essentials-builds - # ref: ${{ Env.GITHUB_REF }} - # # Download the version artifact from the build job - # - name: Download Build Version Info - # uses: actions/download-artifact@v1 - # with: - # name: Version - # - name: Check Directory - # run: Get-ChildItem "./" - # # Set the version number environment variable from the file we just downloaded - # - name: Set Version Number - # shell: powershell - # run: | - # Get-ChildItem "./Version" - # $version = Get-Content -Path ./Version/version.txt - # Write-Host "Version: $version" - # echo "VERSION=$version" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - # Remove-Item -Path ./Version/version.txt - # Remove-Item -Path ./Version - # # Checkout/Create the branch - # - name: Create new branch - # run: git checkout -b $($Env:GITHUB_REF -replace "refs/heads/") - # # Download the build output into the repo - # - name: Download Build output - # uses: actions/download-artifact@v1 - # with: - # name: Build - # path: ./ - # - name: Check directory - # run: Get-ChildItem ./ - # # Unzip the build package file - # - name: Unzip Build file - # run: | - # Get-ChildItem .\*.zip | Expand-Archive -DestinationPath .\ - # Remove-Item -Path .\*.zip - # - name: Check directory again - # run: Get-ChildItem ./ - # # Copy Contents of output folder to root directory - # - name: Copy Files to root & delete output directory - # run: | - # Remove-Item -Path .\* -Include @("*.cpz","*.md","*.cplz","*.json","*.dll","*.clz") - # Get-ChildItem -Path .\output\* | Copy-Item -Destination .\ - # Remove-Item -Path .\output -Recurse - # # Commits the build output to the branch and tags it with the version - # - name: Commit build output and tag the commit - # shell: powershell - # run: | - # git config user.email "actions@pepperdash.com" - # git config user.name "GitHub Actions" - # git add . - # $commit = "Build $($Env:GITHUB_RUN_NUMBER) from commit: https://github.com/$($Env:GITHUB_REPOSITORY)/commit/$($Env:GITHUB_SHA)" - # Write-Host "Commit: $commit" - # git commit -m $commit - # git tag $($Env:VERSION) - # # Push the commit - # - name: Push to Builds Repo - # shell: powershell - # run: | - # $branch = $($Env:GITHUB_REF) -replace "refs/heads/" - # Write-Host "Branch: $branch" - # git push -u origin $($branch) --force - # # Push the tags - # - name: Push tags - # run: git push --tags origin - # - name: Check Directory - # run: Get-ChildItem ./ - # # This step only runs if the branch is main or release/ runs and pushes the build to the public build repo - # Public_Push_Output: - # needs: Build_Project - # runs-on: windows-latest - # if: contains(github.ref, 'main') || contains(github.ref, '/release/') - # steps: - # # Checkout the repo - # - name: check Github ref - # run: ${{toJson(github.ref)}} - # - name: Checkout Builds Repo - # uses: actions/checkout@v2 - # with: - # token: ${{ secrets.BUILDS_TOKEN }} - # repository: PepperDash/Essentials-Builds - # ref: ${{ Env.GITHUB_REF }} - # # Download the version artifact from the build job - # - name: Download Build Version Info - # uses: actions/download-artifact@v1 - # with: - # name: Version - # - name: Check Directory - # run: Get-ChildItem "./" - # # Set the version number environment variable from the file we just downloaded - # - name: Set Version Number - # shell: powershell - # run: | - # Get-ChildItem "./Version" - # $version = Get-Content -Path ./Version/version.txt - # Write-Host "Version: $version" - # echo "VERSION=$version" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - # Remove-Item -Path ./Version/version.txt - # Remove-Item -Path ./Version - # # Checkout/Create the branch - # - name: Create new branch - # run: git checkout -b $($Env:GITHUB_REF -replace "refs/heads/") - # # Download the build output into the repo - # - name: Download Build output - # uses: actions/download-artifact@v1 - # with: - # name: Build - # path: ./ - # - name: Check directory - # run: Get-ChildItem ./ - # # Unzip the build package file - # - name: Unzip Build file - # run: | - # Get-ChildItem .\*.zip | Expand-Archive -DestinationPath .\ - # Remove-Item -Path .\*.zip - # - name: Check directory again - # run: Get-ChildItem ./ - # # Copy Contents of output folder to root directory - # - name: Copy Files to root & delete output directory - # run: | - # Remove-Item -Path .\* -Include @("*.cpz","*.md","*.cplz","*.json","*.dll","*.clz") - # Get-ChildItem -Path .\output\* | Copy-Item -Destination .\ - # Remove-Item -Path .\output -Recurse - # # Commits the build output to the branch and tags it with the version - # - name: Commit build output and tag the commit - # shell: powershell - # run: | - # git config user.email "actions@pepperdash.com" - # git config user.name "GitHub Actions" - # git add . - # $commit = "Build $($Env:GITHUB_RUN_NUMBER) from commit: https://github.com/$($Env:GITHUB_REPOSITORY)/commit/$($Env:GITHUB_SHA)" - # Write-Host "Commit: $commit" - # git commit -m $commit - # git tag $($Env:VERSION) - # # Push the commit - # - name: Push to Builds Repo - # shell: powershell - # run: | - # $branch = $($Env:GITHUB_REF) -replace "refs/heads/" - # Write-Host "Branch: $branch" - # git push -u origin $($branch) --force - # # Push the tags - # - name: Push tags - # run: git push --tags origin - # - name: Check Directory - # run: Get-ChildItem ./ diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index e654fa68..d57ca81d 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -3,17 +3,16 @@ name: Branch Build Using Docker on: push: branches: - - feature/* - - hotfix/* - - bugfix/* - - release/* - - development + - feature-2.0.0/* + - hotfix-2.0.0/* + - release-2.0.0/* + - development-2.0.0 env: - # solution path doesn't need slashes unless it is multiple folders deep + # solution path doesn't need slashes unless there it is multiple folders deep # solution name does not include extension. .sln is assumed - SOLUTION_PATH: PepperDashEssentials - SOLUTION_FILE: PepperDashEssentials + SOLUTION_PATH: . + SOLUTION_FILE: PepperDash.Essentials # Do not edit this, we're just creating it here VERSION: 0.0.0-buildtype-buildnumber # Defaults to debug for build type @@ -21,121 +20,72 @@ env: # Defaults to main as the release branch. Change as necessary RELEASE_BRANCH: main jobs: - Build_Project: - runs-on: windows-2019 - steps: - # First we checkout the source repo - - name: Checkout repo - uses: actions/checkout@v2 - with: - fetch-depth: 0 - # Fetch all tags - - name: Fetch tags - run: git fetch --tags - # Generate the appropriate version number + Build_Project_4-Series: + runs-on: windows-latest + steps: + - uses: actions/checkout@v3 - name: Set Version Number + id: setVersion shell: powershell run: | - $version = ./.github/scripts/GenerateVersionNumber.ps1 - echo "VERSION=$version" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - # Use the version number to set the version of the assemblies - - name: Update AssemblyInfo.cs - shell: powershell - run: | - ./.github/scripts/UpdateAssemblyVersion.ps1 ${{ env.VERSION }} + $latestVersion = [version]"2.0.0" + + $newVersion = [version]$latestVersion + $phase = "" + $newVersionString = "" + + switch -regex ($Env:GITHUB_REF) { + '^refs\/pull\/*.' { + $phase = 'beta'; + $newVersionString = "{0}-{1}-{2}" -f $newVersion, $phase, $Env:GITHUB_RUN_NUMBER + } + '^refs\/heads\/hotfix-2.0.0\/*.' { + $phase = 'hotfix' + $newVersionString = "{0}-{1}-{2}" -f $newVersion, $phase, $Env:GITHUB_RUN_NUMBER + } + '^refs\/heads\/release-2.0.0\/*.' { + $splitRef = $Env:GITHUB_REF -split "/" + $version = [version]($splitRef[-1] -replace "v", "") + $phase = 'rc' + $newVersionString = "{0}-{1}-{2}" -f $version, $phase, $Env:GITHUB_RUN_NUMBER + } + '^refs\/heads\/feature-2.0.0\/*.' { + $phase = 'alpha' + $newVersionString = "{0}-{1}-{2}" -f $newVersion, $phase, $Env:GITHUB_RUN_NUMBER + } + 'development-2.0.0' { + $phase = 'beta' + $newVersionString = "{0}-{1}-{2}" -f $newVersion, $phase, $Env:GITHUB_RUN_NUMBER + } + } + echo "version=$newVersionString" | Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8 -Append + - name: Setup MS Build + uses: microsoft/setup-msbuild@v1.1 - name: restore Nuget Packages - run: nuget install .\packages.config -OutputDirectory .\packages -ExcludeVersion - # Login to Docker - - name: Login to Docker - uses: azure/docker-login@v1 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_TOKEN }} + run: nuget restore .\$($Env:SOLUTION_FILE).sln # Build the solutions in the docker image - - name: Build Solution - shell: powershell + - name: Build Solution + run: msbuild .\$($Env:SOLUTION_FILE).sln /p:Platform="Any CPU" /p:Configuration="Debug" /p:Version="${{ steps.setVersion.outputs.version }}" + - name: Create tag for non-rc builds + if: contains(steps.setVersion.outputs.version, 'alpha') run: | - Invoke-Expression "docker run --rm --mount type=bind,source=""$($Env:GITHUB_WORKSPACE)"",target=""c:/project"" pepperdash/sspbuilder c:\cihelpers\vsidebuild.exe -Solution ""c:\project\$($Env:SOLUTION_FILE).sln"" -BuildSolutionConfiguration $($ENV:BUILD_TYPE)" - # Zip up the output files as needed - - name: Zip Build Output - shell: powershell - run: ./.github/scripts/ZipBuildOutput.ps1 - # Write the version to a file to be consumed by the push jobs - - name: Write Version - run: Write-Output "$($Env:VERSION)" | Out-File -FilePath "$($Env:GITHUB_HOME)\output\version.txt" - # Upload the build output as an artifact - - name: Upload Build Output - uses: actions/upload-artifact@v1 - with: - name: Build - path: ./${{ env.SOLUTION_FILE}}-${{ env.VERSION}}.zip - # Upload the Version file as an artifact - - name: Upload version.txt - uses: actions/upload-artifact@v1 - with: - name: Version - path: ${{env.GITHUB_HOME}}\output\version.txt + git tag ${{ steps.setVersion.outputs.version }} + git push --tags origin + # Create the release on the source repo - name: Create Release id: create_release - # using contributor's version to allow for pointing at the right commit - uses: fleskesvor/create-release@feature/support-target-commitish +# if: contains(steps.setVersion.outputs.version,'-rc-') || +# contains(steps.setVersion.outputs.version,'-hotfix-') || +# contains(steps.setVersion.outputs.version, '-beta-') + uses: ncipollo/release-action@v1 with: - tag_name: ${{ env.VERSION }} - release_name: ${{ env.VERSION }} + artifacts: 'output\*.*(cpz|cplz)' + generateReleaseNotes: true prerelease: ${{contains('debug', env.BUILD_TYPE)}} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # Upload the build package to the release - - name: Upload Release Package - id: upload_release - uses: actions/upload-release-asset@v1 - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./${{ env.SOLUTION_FILE}}-${{ env.VERSION}}.zip - asset_name: ${{ env.SOLUTION_FILE}}-${{ env.VERSION}}.zip - asset_content_type: application/zip - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - Push_Nuget_Package: - needs: Build_Project - runs-on: windows-2019 - steps: - - name: Download Build Version Info - uses: actions/download-artifact@v1 - with: - name: Version - - name: Set Version Number - shell: powershell - run: | - Get-ChildItem "./Version" - $version = Get-Content -Path ./Version/version.txt - Write-Host "Version: $version" - echo "VERSION=$version" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - Remove-Item -Path ./Version/version.txt - Remove-Item -Path ./Version - - name: Download Build output - uses: actions/download-artifact@v1 - with: - name: Build - path: ./ - - name: Unzip Build file - run: | - Get-ChildItem .\*.zip | Expand-Archive -DestinationPath .\ - Remove-Item -Path .\*.zip - - name: Copy Files to root & delete output directory - run: | - Remove-Item -Path .\* -Include @("*.cpz","*.md","*.cplz","*.json","*.dll","*.clz") - Get-ChildItem -Path .\output\* | Copy-Item -Destination .\ - Remove-Item -Path .\output -Recurse - - name: Add nuget.exe - uses: nuget/setup-nuget@v1 - - name: Add Github Packages source - run: nuget sources add -name github -source https://nuget.pkg.github.com/pepperdash/index.json -username Pepperdash -password ${{ secrets.GITHUB_TOKEN }} - - name: Add nuget.org API Key - run: nuget setApiKey ${{ secrets.NUGET_API_KEY }} - - name: Create nuget package - run: nuget pack "./PepperDash_Essentials_Core.nuspec" -version ${{ env.VERSION }} - - name: Publish nuget package to Github registry - run: nuget push **/*.nupkg -source github - - name: Publish nuget package to nuget.org - run: nuget push **/*.nupkg -Source https://api.nuget.org/v3/index.json + tag: ${{ steps.setVersion.outputs.version }} + - name: Publish to Nuget + run: | + nuget sources add -name github -source https://nuget.pkg.github.com/pepperdash/index.json -username Pepperdash -password ${{ secrets.GITHUB_TOKEN }} + nuget setApiKey ${{ secrets.NUGET_API_KEY }} + nuget push ".\package\PepperDashCore.${{ steps.setVersion.outputs.version }}.nupkg" -Source github + nuget push ".\package\PepperDashCore.${{ steps.setVersion.outputs.version }}.nupkg" -Source https://api.nuget.org/v3/index.json \ No newline at end of file