Giter Site home page Giter Site logo

startautomating / psdevops Goto Github PK

View Code? Open in Web Editor NEW
124.0 15.0 28.0 1.08 MB

PowerShell Tools for DevOps

Home Page: https://psdevops.start-automating.com

License: MIT License

PowerShell 100.00%
azure-devops devops github-actions github-workflow pipeline powershell

psdevops's People

Contributors

dfinke avatar startautomating avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

psdevops's Issues

Add support for parameter comments using New-ADOPipeline

I like to comment my pipeline parameters when writing templates. Please consider adding support for something like this:

param (
    # List of required modules to import.
    [string[]] $requiredModules
)

โฉ

parameters:
  # List of required modules to import.
  - name: requiredModules
    ...

Add-ADOAreaPath

Add-ADOAreaPath does not handle nested paths correctly. Please update with fix.

order properties when generating yaml

When generating a yml file for a work flow, order properties logically in terms of the code readability, e.g.

steps: 
  - name: InstallPester
    shell: pwsh
    env: 
        PesterMaxVersion: ${{secrets.PesterMaxVersion}}
    run: |

shell and env are important metadata that give context to "run" and since run is arbitrarily long, you can easily find the other properties if they come first.

Bootstrap using ADO as a PSRepository

In order to facilitate the use of Artifact Feeds as a place to store PowerShell modules, a command that can Register artifact feeds as a PSRepository would be nice.

Add Get-WorkItemQueryResult cmdlet?

We're looking to synchronize the work items in Azure DevOps with another system that we cannot control, and we're thinking that we can use your module to do so. I'm going to start exploring the Wiql - Query By Wiql endpoint to make that work in our organization.

I thought I'd simultaneously open this issue since I noticed that PSDevOps does not have a Get-WorkItemQueryResult cmdlet. I'm not sure if the stub I build out will be helpful but wanted to get your thoughts on the feasibility of adding this cmdlet to your module.

Are you interested in that sort of contribution? Also any hints as I start setting up a development environment?

Add-ADOTeam doesn't seem to work

Try to add a team to a group. Invoke-ADORestAPI returns:

"Invoke-ADORestAPI : The remote server returned an error: (411) Length Required.
At C:\Users\user\Documents\WindowsPowerShell\Modules\PSDevOps\0.4.5\Add-ADOTeam.ps1:135 char:13
Invoke-ADORestAPI @invokeParams"

Adding an else clause into Invoke-ADORestAPI with the following line "$WebRequest.ContentLength = 0" seems to fix it.

Improve Layout Support

It would be nice to be able to edit the layout of a given work item type using cmdlets.

Could one 'query' work items while connected anonymously?

Running Connect-ADO -Organization ayn without credentials or PAT looks like it connected successfully. However, Get-ADOWorkItem -Organization ayn -Project PowerShell -Query 'Select [System.ID] from WorkItems' fails with error below

Invoke-ADORestAPI : Response was HTML, Request Failed.
At C:\Users\ayan\Documents\PowerShell\Modules\psdevops\0.5.3\Get-ADOWorkItem.ps1:240 char:29
+             $queryResults = Invoke-ADORestAPI @invokeParams |
+                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (
<!DOCTYPE h...ody>
</html>
:String) [Invoke-ADORestAPI], Exception
    + FullyQualifiedErrorId : ResultWasHTML,Invoke-ADORestAPI

...even though this is a public project and accessible online without authentication. PFB link
https://dev.azure.com/ayn/PowerShell/_workitems

When I Connect-ADO with a PAT it works fine. Is there a way to connect anonymously like on can thru the browser, or does one need to log in even for public projects?

Getting Started and Prerequisites

Hi,
It might be good to have getting started section with an example connection and listing of certain features.
Also are there any prerequisites in terms of version of PowerShell or any other feature or dependencies on certain tool/packages.

Thanks

Feature request: Adding and removing Agent pools (and agents)

I would be very convenient if the module could add and remove agent pools, using commands like New-ADOAgentPool and Remove-ADOAgentPool.

Similarly, it would be very helpful to be able to remove agents from a pool. For example, when a self-hosted agent VM has been decommissioned. A command for that could be Remove-ADOAgent.

Of course I don't expect you to just implement this. Everyone has a very busy schedule. It's just an idea for some new features that would certainly be useful for me. In any way, thanks and keep on doing the good work ๐Ÿ˜„

Improve support for YML arrays in New-ADOPipeline

When using YML arrays in a PowerShell step you need to convert it into a array by doing, as far as I know, something like this:

$requiredModules = "${{ join(';',parameters.requiredModules) }}" -split ';' | Where-Object { $_ }
  1. Join the array into a string with the pipeline join function
  2. Split the now string into a PowerShell array
  3. Use ... | Where-Object { $_ } to get rid of any null values (added if passing in [])

Currently the output generated looks something like this:

$parameters.requiredModules -split ';' -replace '^[''"]' -replace  '[''"]$'

Picklists

I'm having an issue tracking the picklist ID associated with a field. I am looking for a way to programmatically update picklists and finding this picklist ID given a process ID and field name would help do the trick.

Create Work Item States

Would like a new cmdlet to create and update custom work item states in custom process templates

Feature Request: Retrieve Pull Request by ID

It would be nice to be able to retrieve a specific pull request by ID using Get-ADORepository. Perhaps something like this:

Get-ADORepository -PullRequest -PullRequestID 341

Invoke-ADORestAPI -AsByte is slow

It appears that it is unrolling each byte. This will take a while. It would be better to directly return a byte[] before any results are unrolled.

Make Setting Azure DevOps Permissions Easier

Set-ADOPermission gives a rather raw view of a complicated API. It would be nicer if individual objects could be piped to Set-ADOPermission in order to secure them (much as Get-ADOPermission can get permissions related to a repo)

Implement Set-ADOParameter

I would like to pitch the idea of implementing a Set-ADOParameter cmdlet/function.

Set-ADOParameter -Organization OrgName -Project ProjName -ApiVersion 5.1 -PersonalAccessToken "1232423421...." -BranchName "$/Financials/Trunk/Development"

It would then create new variables, that would last for the current session. We would then update the cmdlets/functions to have default values, which would be the names of the variables.

E.g.

function Get-ADOBuild
{
...
    [Parameter(ValueFromPipelineByPropertyName)]
    [Alias('Org')]
    [string]
    $Organization = $Script:PsDevOpsOrganization,

    [Parameter(ValueFromPipelineByPropertyName)]
    [string]
    $Project = $Script:PsDevOpsProject,

    [Parameter(ParameterSetName='build/builds')]
    [string]
    $BranchName = $Script:PsDevOpsBranchName,

    [Alias('PAT')]
    [string]
    $PersonalAccessToken = $Script:PsDevOpsPersonalAccessToken,

    [string]
    $ApiVersion = $Script:PsDevOpsPersonalAccessToken,
}

Afterward calling the Get-ADOBuild cmdlet/function would be as slim as

Get-ADOBuild

If you need to override the different parameters, even after setting the parameters in the same session, you can simply override the value by using the parameters for each cmdlet/function.

I believe it would increase the user experience and make it easier for people to start using the module, because they can reduce the bloat in their console and scripts, while still having all the benefits from the module.

Get-ADORepository -PullRequestID is not Mandatory

This causes an ambiguity between parameter sets which errors out some tests.

@cjboden I'll take care of fixing this (I think your tests didn't end up running it because you wouldn't be able to see repos). If you end up adding more, make sure each new parameter set has at least one unique "key" parameter that lets PowerShell know which parameter set it could use.

Add Set-ADOTeamAdmin

Add a new Set-ADOTeamAdmin to PSDevOps. This will allow an admin group from another Project, as well as individual users, to be added as a Team Administrator

Get-ADOUser Errors out

Hello PSDevOps Team,

I am Verly glad to find a module to manage Azure DevOps, I am trying to get a list of users at the Org level.

but I am hitting an error while I run the following command. I am running it in 7.2.0-preview.10. I am successfully connected to the organization by running Connect-ADO. and have right privileges too.

Get-ADOUser -Organization <my-org-name>

Output:
image

Thanks once again for your AWESOME work :-)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.