Coder Social home page Coder Social logo

freddycoder / azuredevopsteammembersvelocity Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 541 KB

An app that fetches task history and tells the information about the velocity of each member base on a sprint

License: MIT License

HTML 23.19% C# 74.85% CSS 0.82% Dockerfile 0.24% PowerShell 0.90%
devops velocity capacity-planning planning-tool

azuredevopsteammembersvelocity's Introduction

AzureDevOpsTeamMembersVelocity

A app that fetch task history and tell informations about velocity of each member base on a sprint.

To use the app, you'll need to create an access token inside your azure devops account.

The app can list you each member and calculate the total of working hours, capacity estimated, real capacity, and history for each members of a sprint.

Run the app

To run the app you need to have docker install on your computer. Otherwise, you'll need to build it yourself using the dotnet cli or visual studio.

docker run -p 45000:80 erabliereapi/azuredevopsteammembersvelocity:initial

Then go to : http://localhost:45000

Demo : https://youtu.be/Ecl3QeIxSfM

Run the app with authentication

1. Environment variable user

Only a username

docker run -e [email protected] -p 45000:80 erabliereapi/azuredevopsteammembersvelocity:auth

A username and a password

docker run -e [email protected] -e COOKIEAUTH_PASSWORD=admin -p 45000:80 erabliereapi/azuredevopsteammembersvelocity:auth

2. Microsoft Identity self hosted

Use the default asp.net scafolding Identity pages and logic

docker run -e USE_IDENTITY=true -p 45000:80 erabliereapi/azuredevopsteammembersvelocity:auth

3. AzureAD

You must register the app inside AzureAD first.

For example you can register an app with

After registrer the app, go to the Authentication page off the newly created app.

Set front-chanel logout to : https://localhost:45001/signout-oidc

Select the tokens you would like to be issued by the authorization endpoint: ID tokens

And save the settings. Now the AzureAD authentication will work with the container.

This one is a little bit more complicated since we must use https.

For this on we are going to use a script inside this repo, and also use the docker compose file from this repo.

./setup-docker-ssl.ps1

docker compose up -d

Note on https

To use https with other authentication method that AzureAD, you can hack the docker-compose.yaml file to fit with the environment variable of the authentication method you want to use. Then you can launch the script setup-docker-ssl.ps1 and run docker compose up -d.

Working behind a reverse proxy

To help deploy the application in a reverse proxy environment and use AzureAD authentication, you may need to use these environments variables :

Kubernetes YAML

        - name: Forwarded_headers
          value: "true"
        - name: USE_SCHEMA_FROM_PROXY
          value: "true"

The 'Forwarded_headers' parameter is the ForwardedHeaders middleware from asp.net core.

The 'USE_SCHEMA_FROM_PROXY' gonna change the request scheme using the one from the X-Forwarded-Proto.

To debug the headers.

        - name: Debug_headers
           value: "true"
        - name: Logging__LogLevel__Default
           value: "Debug"

Build the app

Dependency

.net5.0

Using dotnet cli

git clone https://github.com/freddycoder/AzureDevOpsTeamMembersVelocity.git
cd AzureDevOpsTeamMembersVelocity
cd AzureDevOpsTeamMembersVelocity
dotnet restore
dotnet run

Then go to : http://localhost:5000 or https://localhost:5001

Using docker

git clone https://github.com/freddycoder/AzureDevOpsTeamMembersVelocity.git
cd AzureDevOpsTeamMembersVelocity
docker build -t azuredevopsteammembersvelocity:auth .
docker run -p 45000:80 azuredevopsteammembersvelocity:auth

Then go to : http://localhost:45000

Push new image to docker hub

docker build -t <username>/azuredevopsteammembersvelocity:<tag> .
docker push <username>/azuredevopsteammembersvelocity:<tag>

Additional information

The code documentation can be found inside the wiki at https://github.com/freddycoder/AzureDevOpsTeamMembersVelocity/wiki/Code-documentation

Additionnal links

Generate html from from c# xml documentation

http://varus.io/vsdoc-2-md/

azuredevopsteammembersvelocity's People

Contributors

freddycoder avatar snyk-bot avatar

Watchers

 avatar  avatar

azuredevopsteammembersvelocity's Issues

Exception in the index page

I got this exception in the main page after wating a while a doing different click into the input text fields

azuredevopsteammembersvelocity_1 | warn: Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer[100]
azuredevopsteammembersvelocity_1 | Unhandled exception rendering component: Sequence contains no matching element
azuredevopsteammembersvelocity_1 | System.InvalidOperationException: Sequence contains no matching element
azuredevopsteammembersvelocity_1 | at System.Linq.ThrowHelper.ThrowNoMatchException()
azuredevopsteammembersvelocity_1 | at System.Linq.Enumerable.First[TSource](IEnumerable`1 source, Func`2 predicate)
azuredevopsteammembersvelocity_1 | at AzureDevOpsTeamMembersVelocity.Pages.Index.GetTeams() in /src/AzureDevOpsTeamMembersVelocity/Pages/Index.razor:line 262
azuredevopsteammembersvelocity_1 | at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task)
azuredevopsteammembersvelocity_1 | at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle)
azuredevopsteammembersvelocity_1 | fail: Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost[111]
azuredevopsteammembersvelocity_1 | Unhandled exception in circuit 'wpQOTZPKaI5OsWbb5s4BRznK6AIE4zUmQA32GZeD_yY'.
azuredevopsteammembersvelocity_1 | System.InvalidOperationException: Sequence contains no matching element
azuredevopsteammembersvelocity_1 | at System.Linq.ThrowHelper.ThrowNoMatchException()
azuredevopsteammembersvelocity_1 | at System.Linq.Enumerable.First[TSource](IEnumerable`1 source, Func`2 predicate)
azuredevopsteammembersvelocity_1 | at AzureDevOpsTeamMembersVelocity.Pages.Index.GetTeams() in /src/AzureDevOpsTeamMembersVelocity/Pages/Index.razor:line 262
azuredevopsteammembersvelocity_1 | at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task)
azuredevopsteammembersvelocity_1 | at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle)

Faster log stream

Don't wait 2 seconds in the log loop when there was log in the previous iteration

Need to click in 'Persist settings' after entering an api key

In the new version, after entering an Api key in the main page. The user need to click on Persist settings in order to be able to call the api.

If the user does click on persist, he get an error where is unclear what is appening.

In this case the API return a 203 http response, witch is a success status code. So the serializer try to deserialize de response an failed.

Improment idea for the SprintAnalysis view

To do a better calculation of the Hours of work done of each member. The revised date of the update can be compare to the begining date of the sprint. This will improve the calculation by not including work that has been done in other sprints.

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.