diff --git a/.github/workflows/essentialsplugins-betabuilds.yml b/.github/workflows/essentialsplugins-betabuilds.yml index 56515c2..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,22 +222,12 @@ jobs: Push_Nuget_Package: 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)" >> $GITHUB_ENV - echo "NUSPEC_FILE=$($nuspec_file.BaseName)"| Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - name: Download Build Version Info - if: ${{ env.NUSPECNAME != 'PDT.EssentialsPluginTemplate '}} uses: actions/download-artifact@v1 with: name: Version - name: Set Version Number - if: ${{ env.NUSPECNAME != 'PDT.EssentialsPluginTemplate' }} shell: powershell run: | Get-ChildItem "./Version" @@ -247,39 +237,43 @@ jobs: Remove-Item -Path ./Version/version.txt Remove-Item -Path ./Version - name: Download Build output - if: ${{ env.NUSPECNAME != 'PDT.EssentialsPluginTemplate' }} uses: actions/download-artifact@v1 with: name: Build path: ./ - name: Unzip Build file - if: ${{ env.NUSPECNAME != 'PDT.EssentialsPluginTemplate' }} run: | Get-ChildItem .\*.zip | Expand-Archive -DestinationPath .\ Remove-Item -Path .\*.zip - name: Copy Files to root & delete output directory - if: ${{ env.NUSPECNAME != 'PDT.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: Get nuget File + shell: powershell + run: | + $nuspec_file = (Get-ChildItem *.nuspec -recurse).BaseName + echo "NUSPEC_FILE=$($nuspec_file)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + # Pulls the nuget builder packages - name: Add nuget.exe - if: ${{ env.NUSPECNAME != 'PDT.EssentialsPluginTemplate' }} + if: "!contains(env.NUSPEC_FILE, 'EssentialsPluginTemplate')" uses: nuget/setup-nuget@v1 + # Creating nuget Packages - name: Add Github Packages source - if: ${{ env.NUSPECNAME != 'PDT.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 }} - # Pushes to nuget gallery, not needed unless publishing publicly - - name: Add nuget.org API Key - if: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && ${{ env.NUSPECNAME != 'PDT.EssentialsPluginTemplate' }} - run: nuget setApiKey ${{ secrets.NUGET_API_KEY }} - name: Create nuget package - if: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && ${{ env.NUSPECNAME != 'PDT.EssentialsPluginTemplate' }} + 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: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && ${{ env.NUSPECNAME != 'PDT.EssentialsPluginTemplate' }} + 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.NUSPEC_FILE, 'EssentialsPluginTemplate') + run: nuget setApiKey ${{ secrets.NUGET_API_KEY }} - name: Publish nuget package to nuget.org - if: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && ${{ env.NUSPECNAME != 'PDT.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-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" + + diff --git a/.github/workflows/essentialsplugins-releasebuilds.yml b/.github/workflows/essentialsplugins-releasebuilds.yml index eab1043..2ae1117 100644 --- a/.github/workflows/essentialsplugins-releasebuilds.yml +++ b/.github/workflows/essentialsplugins-releasebuilds.yml @@ -170,22 +170,12 @@ jobs: Push_Nuget_Package: 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)" >> $GITHUB_ENV - echo "NUSPEC_FILE=$($nuspec_file.BaseName)"| Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - name: Download Build Version Info - if: ${{ env.NUSPECNAME != 'PDT.EssentialsPluginTemplate '}} uses: actions/download-artifact@v1 with: name: Version - name: Set Version Number - if: ${{ env.NUSPECNAME != 'PDT.EssentialsPluginTemplate' }} shell: powershell run: | Get-ChildItem "./Version" @@ -195,39 +185,43 @@ jobs: Remove-Item -Path ./Version/version.txt Remove-Item -Path ./Version - name: Download Build output - if: ${{ env.NUSPECNAME != 'PDT.EssentialsPluginTemplate' }} uses: actions/download-artifact@v1 with: name: Build path: ./ - name: Unzip Build file - if: ${{ env.NUSPECNAME != 'PDT.EssentialsPluginTemplate' }} run: | Get-ChildItem .\*.zip | Expand-Archive -DestinationPath .\ Remove-Item -Path .\*.zip - name: Copy Files to root & delete output directory - if: ${{ env.NUSPECNAME != 'PDT.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: Get nuget File + shell: powershell + run: | + $nuspec_file = (Get-ChildItem *.nuspec -recurse).BaseName + echo "NUSPEC_FILE=$($nuspec_file)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + # Pulls the nuget builder packages - name: Add nuget.exe - if: ${{ env.NUSPECNAME != 'PDT.EssentialsPluginTemplate' }} + if: "!contains(env.NUSPEC_FILE, 'EssentialsPluginTemplate')" uses: nuget/setup-nuget@v1 + # Creating nuget Packages - name: Add Github Packages source - if: ${{ env.NUSPECNAME != 'PDT.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 }} - # Pushes to nuget gallery, not needed unless publishing publicly - - name: Add nuget.org API Key - if: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && ${{ env.NUSPECNAME != 'PDT.EssentialsPluginTemplate' }} - run: nuget setApiKey ${{ secrets.NUGET_API_KEY }} - name: Create nuget package - if: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && ${{ env.NUSPECNAME != 'PDT.EssentialsPluginTemplate' }} + 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: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && ${{ env.NUSPECNAME != 'PDT.EssentialsPluginTemplate' }} + 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.NUSPEC_FILE, 'EssentialsPluginTemplate') + run: nuget setApiKey ${{ secrets.NUGET_API_KEY }} - name: Publish nuget package to nuget.org - if: github.repository_owner == 'PepperDash' && github.repository_visibility == 'public' && ${{ env.NUSPECNAME != 'PDT.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