From 62f959bb259cd8159d60c4b0bfed97d303ae3bec Mon Sep 17 00:00:00 2001 From: Trevor Payne Date: Thu, 21 Jul 2022 10:17:56 -0500 Subject: [PATCH 1/3] test workflow syntax --- .../essentialsplugins-betabuilds.yml | 20 +++--- .../essentialsplugins-releasebuilds.yml | 61 ++++++++++++++++++- 2 files changed, 68 insertions(+), 13 deletions(-) diff --git a/.github/workflows/essentialsplugins-betabuilds.yml b/.github/workflows/essentialsplugins-betabuilds.yml index c2df4dc..fa3e21c 100644 --- a/.github/workflows/essentialsplugins-betabuilds.yml +++ b/.github/workflows/essentialsplugins-betabuilds.yml @@ -225,19 +225,11 @@ jobs: env: NUSPECNAME: default steps: - - name: Get nuget File - shell: powershell - run: | - $nuspec_file = Get-ChildItem *.nuspec -recurse - echo "NUSPECNAME=$($nuspec_file.BaseName)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - echo "NUSPEC_FILE=$($nuspec_file.BaseName)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - name: Download Build Version Info - if: "!contains(env.NUSPECNAME, 'EssentialsPluginTemplate')" uses: actions/download-artifact@v1 with: name: Version - name: Set Version Number - if: "!contains(env.NUSPECNAME, 'EssentialsPluginTemplate')" shell: powershell run: | Get-ChildItem "./Version" @@ -247,22 +239,26 @@ jobs: Remove-Item -Path ./Version/version.txt Remove-Item -Path ./Version - name: Download Build output - if: "!contains(env.NUSPECNAME, 'EssentialsPluginTemplate')" uses: actions/download-artifact@v1 with: name: Build path: ./ - name: Unzip Build file - if: "!contains(env.NUSPECNAME, 'EssentialsPluginTemplate')" run: | Get-ChildItem .\*.zip | Expand-Archive -DestinationPath .\ Remove-Item -Path .\*.zip - name: Copy Files to root & delete output directory - if: "!contains(env.NUSPECNAME, 'EssentialsPluginTemplate')" run: | Remove-Item -Path .\* -Include @("*.cpz","*.md","*.cplz","*.json","*.dll","*.clz") Get-ChildItem -Path .\output\* | Copy-Item -Destination .\ Remove-Item -Path .\output -Recurse + - name: Get nuget File + shell: powershell + run: | + $nuspec_file = (Get-ChildItem *.nuspec -recurse).BaseName + echo "NUSPECNAME=$($nuspec_file)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + echo "NUSPEC_FILE=$($nuspec_file)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + #Pushes to github nuget store - name: Add nuget.exe if: "!contains(env.NUSPECNAME, 'EssentialsPluginTemplate')" @@ -270,7 +266,7 @@ jobs: - name: Add Github Packages source if: "!contains(env.NUSPECNAME, 'EssentialsPluginTemplate')" run: nuget sources add -name github -source https://nuget.pkg.github.com/pepperdash/index.json -username Pepperdash -password ${{ secrets.GITHUB_TOKEN }} - # Pushes to nuget gallery, not needed unless publishing publicly + # Pushes to nuget gallery - name: Add nuget.org API Key if: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && !contains(env.NUSPECNAME, 'EssentialsPluginTemplate') run: nuget setApiKey ${{ secrets.NUGET_API_KEY }} diff --git a/.github/workflows/essentialsplugins-releasebuilds.yml b/.github/workflows/essentialsplugins-releasebuilds.yml index be6aed4..18b3771 100644 --- a/.github/workflows/essentialsplugins-releasebuilds.yml +++ b/.github/workflows/essentialsplugins-releasebuilds.yml @@ -167,7 +167,6 @@ jobs: asset_content_type: application/zip env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - Push_Nuget_Package: needs: Build_Project runs-on: windows-2019 env: @@ -231,3 +230,63 @@ jobs: - name: Publish nuget package to nuget.org if: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && !contains(env.NUSPECNAME, 'EssentialsPluginTemplate') run: nuget push **/*.nupkg -Source https://api.nuget.org/v3/index.json + Push_Nuget_Package: + needs: Build_Project + runs-on: windows-2019 + env: + NUSPECNAME: default + 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: Get nuget File + shell: powershell + run: | + $nuspec_file = (Get-ChildItem *.nuspec -recurse).BaseName + echo "NUSPECNAME=$($nuspec_file)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + echo "NUSPEC_FILE=$($nuspec_file)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + + #Pushes to github nuget store + - name: Add nuget.exe + if: "!contains(env.NUSPECNAME, 'EssentialsPluginTemplate')" + uses: nuget/setup-nuget@v1 + - name: Add Github Packages source + if: "!contains(env.NUSPECNAME, 'EssentialsPluginTemplate')" + run: nuget sources add -name github -source https://nuget.pkg.github.com/pepperdash/index.json -username Pepperdash -password ${{ secrets.GITHUB_TOKEN }} + # Pushes to nuget gallery + - name: Add nuget.org API Key + if: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && !contains(env.NUSPECNAME, 'EssentialsPluginTemplate') + run: nuget setApiKey ${{ secrets.NUGET_API_KEY }} + - name: Create nuget package + if: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && !contains(env.NUSPECNAME, 'EssentialsPluginTemplate') + run: nuget pack "./${{ env.NUSPEC_FILE}}.nuspec" -version ${{ env.VERSION }} + - name: Publish nuget package to Github registry + if: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && !contains(env.NUSPECNAME, 'EssentialsPluginTemplate') + run: nuget push **/*.nupkg -source github + - name: Publish nuget package to nuget.org + if: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && !contains(env.NUSPECNAME, 'EssentialsPluginTemplate') + run: nuget push **/*.nupkg -Source https://api.nuget.org/v3/index.json From 259a71c562f1e0c939548e71ae2313de314985c3 Mon Sep 17 00:00:00 2001 From: Trevor Payne Date: Thu, 21 Jul 2022 12:07:27 -0500 Subject: [PATCH 2/3] style: renamed classes for consistency build: updated essentials version ci: updated workflows docs: documentation updated ci: updated nuspec --- .../essentialsplugins-betabuilds.yml | 30 +++--- .../essentialsplugins-releasebuilds.yml | 91 +++---------------- README.md | 16 ++-- 3 files changed, 37 insertions(+), 100 deletions(-) diff --git a/.github/workflows/essentialsplugins-betabuilds.yml b/.github/workflows/essentialsplugins-betabuilds.yml index fa3e21c..3b42815 100644 --- a/.github/workflows/essentialsplugins-betabuilds.yml +++ b/.github/workflows/essentialsplugins-betabuilds.yml @@ -153,7 +153,7 @@ jobs: $exclusions = "packages" # Trying to get any .json schema files (not currently working) # Gets any files with the listed extensions. - Get-ChildItem -recurse -Path "$($Env:GITHUB_WORKSPACE)" -include "*.clz", "*.cpz", "*.cplz", "*.nuspec" | ForEach-Object { + Get-ChildItem -recurse -Path "$($Env:GITHUB_WORKSPACE)" -include "*.clz", "*.cpz", "*.cplz", "*.nuspec", "*.md" | ForEach-Object { $allowed = $true; # Exclude any files in submodules foreach ($exclude in $exclusions) { @@ -222,8 +222,6 @@ jobs: Push_Nuget_Package: needs: Build_Project runs-on: windows-2019 - env: - NUSPECNAME: default steps: - name: Download Build Version Info uses: actions/download-artifact@v1 @@ -256,26 +254,26 @@ jobs: shell: powershell run: | $nuspec_file = (Get-ChildItem *.nuspec -recurse).BaseName - echo "NUSPECNAME=$($nuspec_file)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append echo "NUSPEC_FILE=$($nuspec_file)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - - #Pushes to github nuget store + # Pulls the nuget builder packages - name: Add nuget.exe - if: "!contains(env.NUSPECNAME, 'EssentialsPluginTemplate')" + if: "!contains(env.NUSPEC_FILE, 'EssentialsPluginTemplate')" uses: nuget/setup-nuget@v1 + # Creating nuget Packages - name: Add Github Packages source - if: "!contains(env.NUSPECNAME, 'EssentialsPluginTemplate')" + if: "!contains(env.NUSPEC_FILE, 'EssentialsPluginTemplate')" run: nuget sources add -name github -source https://nuget.pkg.github.com/pepperdash/index.json -username Pepperdash -password ${{ secrets.GITHUB_TOKEN }} + - name: Create nuget package + if: "!contains(env.NUSPEC_FILE, 'EssentialsPluginTemplate')" + run: nuget pack "./${{ env.NUSPEC_FILE}}.nuspec" -version ${{ env.VERSION }} + # Pushes to internal github registry + - name: Publish nuget package to Github registry + if: "!contains(env.NUSPEC_FILE, 'EssentialsPluginTemplate')" + run: nuget push **/*.nupkg -source github # Pushes to nuget gallery - name: Add nuget.org API Key - if: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && !contains(env.NUSPECNAME, 'EssentialsPluginTemplate') + if: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && !contains(env.NUSPEC_FILE, 'EssentialsPluginTemplate') run: nuget setApiKey ${{ secrets.NUGET_API_KEY }} - - name: Create nuget package - if: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && !contains(env.NUSPECNAME, 'EssentialsPluginTemplate') - run: nuget pack "./${{ env.NUSPEC_FILE}}.nuspec" -version ${{ env.VERSION }} - - name: Publish nuget package to Github registry - if: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && !contains(env.NUSPECNAME, 'EssentialsPluginTemplate') - run: nuget push **/*.nupkg -source github - name: Publish nuget package to nuget.org - if: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && !contains(env.NUSPECNAME, 'EssentialsPluginTemplate') + if: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && !contains(env.NUSPEC_FILE, 'EssentialsPluginTemplate') run: nuget push **/*.nupkg -Source https://api.nuget.org/v3/index.json diff --git a/.github/workflows/essentialsplugins-releasebuilds.yml b/.github/workflows/essentialsplugins-releasebuilds.yml index 18b3771..2ae1117 100644 --- a/.github/workflows/essentialsplugins-releasebuilds.yml +++ b/.github/workflows/essentialsplugins-releasebuilds.yml @@ -167,74 +167,9 @@ jobs: asset_content_type: application/zip env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - needs: Build_Project - runs-on: windows-2019 - env: - NUSPECNAME: default - steps: - - name: Get nuget File - shell: powershell - run: | - $nuspec_file = Get-ChildItem *.nuspec -recurse - echo "NUSPECNAME=$($nuspec_file.BaseName)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - echo "NUSPEC_FILE=$($nuspec_file.BaseName)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - - name: Download Build Version Info - if: "!contains(env.NUSPECNAME, 'EssentialsPluginTemplate')" - uses: actions/download-artifact@v1 - with: - name: Version - - name: Set Version Number - if: "!contains(env.NUSPECNAME, 'EssentialsPluginTemplate')" - 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 - if: "!contains(env.NUSPECNAME, 'EssentialsPluginTemplate')" - uses: actions/download-artifact@v1 - with: - name: Build - path: ./ - - name: Unzip Build file - if: "!contains(env.NUSPECNAME, 'EssentialsPluginTemplate')" - run: | - Get-ChildItem .\*.zip | Expand-Archive -DestinationPath .\ - Remove-Item -Path .\*.zip - - name: Copy Files to root & delete output directory - if: "!contains(env.NUSPECNAME, 'EssentialsPluginTemplate')" - run: | - Remove-Item -Path .\* -Include @("*.cpz","*.md","*.cplz","*.json","*.dll","*.clz") - Get-ChildItem -Path .\output\* | Copy-Item -Destination .\ - Remove-Item -Path .\output -Recurse - #Pushes to github nuget store - - name: Add nuget.exe - if: "!contains(env.NUSPECNAME, 'EssentialsPluginTemplate')" - uses: nuget/setup-nuget@v1 - - name: Add Github Packages source - if: "!contains(env.NUSPECNAME, 'EssentialsPluginTemplate')" - run: nuget sources add -name github -source https://nuget.pkg.github.com/pepperdash/index.json -username Pepperdash -password ${{ secrets.GITHUB_TOKEN }} - # Pushes to nuget gallery, not needed unless publishing publicly - - name: Add nuget.org API Key - if: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && !contains(env.NUSPECNAME, 'EssentialsPluginTemplate') - run: nuget setApiKey ${{ secrets.NUGET_API_KEY }} - - name: Create nuget package - if: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && !contains(env.NUSPECNAME, 'EssentialsPluginTemplate') - run: nuget pack "./${{ env.NUSPEC_FILE}}.nuspec" -version ${{ env.VERSION }} - - name: Publish nuget package to Github registry - if: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && !contains(env.NUSPECNAME, 'EssentialsPluginTemplate') - run: nuget push **/*.nupkg -source github - - name: Publish nuget package to nuget.org - if: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && !contains(env.NUSPECNAME, 'EssentialsPluginTemplate') - run: nuget push **/*.nupkg -Source https://api.nuget.org/v3/index.json Push_Nuget_Package: needs: Build_Project runs-on: windows-2019 - env: - NUSPECNAME: default steps: - name: Download Build Version Info uses: actions/download-artifact@v1 @@ -267,26 +202,26 @@ jobs: shell: powershell run: | $nuspec_file = (Get-ChildItem *.nuspec -recurse).BaseName - echo "NUSPECNAME=$($nuspec_file)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append echo "NUSPEC_FILE=$($nuspec_file)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - - #Pushes to github nuget store + # Pulls the nuget builder packages - name: Add nuget.exe - if: "!contains(env.NUSPECNAME, 'EssentialsPluginTemplate')" + if: "!contains(env.NUSPEC_FILE, 'EssentialsPluginTemplate')" uses: nuget/setup-nuget@v1 + # Creating nuget Packages - name: Add Github Packages source - if: "!contains(env.NUSPECNAME, 'EssentialsPluginTemplate')" + if: "!contains(env.NUSPEC_FILE, 'EssentialsPluginTemplate')" run: nuget sources add -name github -source https://nuget.pkg.github.com/pepperdash/index.json -username Pepperdash -password ${{ secrets.GITHUB_TOKEN }} + - name: Create nuget package + if: "!contains(env.NUSPEC_FILE, 'EssentialsPluginTemplate')" + run: nuget pack "./${{ env.NUSPEC_FILE}}.nuspec" -version ${{ env.VERSION }} + # Pushes to internal github registry + - name: Publish nuget package to Github registry + if: "!contains(env.NUSPEC_FILE, 'EssentialsPluginTemplate')" + run: nuget push **/*.nupkg -source github # Pushes to nuget gallery - name: Add nuget.org API Key - if: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && !contains(env.NUSPECNAME, 'EssentialsPluginTemplate') + if: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && !contains(env.NUSPEC_FILE, 'EssentialsPluginTemplate') run: nuget setApiKey ${{ secrets.NUGET_API_KEY }} - - name: Create nuget package - if: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && !contains(env.NUSPECNAME, 'EssentialsPluginTemplate') - run: nuget pack "./${{ env.NUSPEC_FILE}}.nuspec" -version ${{ env.VERSION }} - - name: Publish nuget package to Github registry - if: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && !contains(env.NUSPECNAME, 'EssentialsPluginTemplate') - run: nuget push **/*.nupkg -source github - name: Publish nuget package to nuget.org - if: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && !contains(env.NUSPECNAME, 'EssentialsPluginTemplate') + if: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && !contains(env.NUSPEC_FILE, 'EssentialsPluginTemplate') run: nuget push **/*.nupkg -Source https://api.nuget.org/v3/index.json diff --git a/README.md b/README.md index 8dfb905..d115b04 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ The [Essentials](https://github.com/PepperDash/Essentials) libraries are require To install dependencies once nuget.exe is installed, run the following command from the root directory of your repository: `nuget install .\packages.config -OutputDirectory .\packages -excludeVersion`. +Alternatively, you can simply run the `GetPackages.bat` file. To verify that the packages installed correctly, open the plugin solution in your repo and make sure that all references are found, then try and build it. ### Installing Different versions of PepperDash Core @@ -37,7 +38,7 @@ If you need a different version of PepperDash Core, use the command `nuget insta ### Instructions for Renaming Solution and Files -See the Task List in Visual Studio for a guide on how to start using the templage. There is extensive inline documentation and examples as well. +See the Task List in Visual Studio for a guide on how to start using the template. There is extensive inline documentation and examples as well. For renaming instructions in particular, see the XML `remarks` tags on class definitions @@ -45,10 +46,13 @@ For renaming instructions in particular, see the XML `remarks` tags on class def ## Generating Nuget Package -In the solution folder is a file named "PDT.EssentialsPluginTemplate.nuspec-TEMPLATE" +In the solution folder is a file named "PDT.EssentialsPluginTemplate.nuspec" -1. Remove the -TEMPLATE so that the extention is .nuspec. -2. Rename the file to match your plugin solution name -3. Edit the file to include your project specifics including +1. Rename the file to match your plugin solution name +2. Edit the file to include your project specifics including 1. PepperDash.Essentials.Plugin.MakeModel Convention is to use the prefix "PepperDash.Essentials.Plugin" and include the MakeModel of the device. - 2. https://github.com/PepperDash/EssentialsPluginTemplate Change to your url to the project repo \ No newline at end of file + 2. https://github.com/PepperDash/EssentialsPluginTemplate Change to your url to the project repo + +There is no longer a requirement to adjust workflow files for nuget generation for private and public repositories. This is now handled automatically in the workflow. + +__If you do not make these changes to the nuspec file, the project will not generate a nuget package__ \ No newline at end of file From 1b3c28da0cd81aa35e997e0ea6eb7d2dcdba31ed Mon Sep 17 00:00:00 2001 From: Jason DeVito Date: Tue, 26 Sep 2023 08:58:37 -0500 Subject: [PATCH 3/3] Create essentialsplugins-releasebuilds-caller.yml --- ...essentialsplugins-releasebuilds-caller.yml | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 .github/workflows/essentialsplugins-releasebuilds-caller.yml diff --git a/.github/workflows/essentialsplugins-releasebuilds-caller.yml b/.github/workflows/essentialsplugins-releasebuilds-caller.yml new file mode 100644 index 0000000..d17c1d5 --- /dev/null +++ b/.github/workflows/essentialsplugins-releasebuilds-caller.yml @@ -0,0 +1,26 @@ + +name: Release Build + +on: + release: + types: + - released + branches: + - "main" + + workflow_dispatch: + inputs: + branch: + description: 'Branch to build' + required: true + type: string + +jobs: + call-workflow: + uses: PepperDash/workflow-templates/.github/workflows/essentialsplugins-builds.yml@main + secrets: inherit + with: + branch: "main" + default-branch: "main" + +