地図あなたの問題!


やあ、私はgiorgioラララです、そして、これは私の服従です.
これはまた、私の最初のポストです.

提出カテゴリ


奇抜なワイルドカード

動作方法


プロジェクトは3つのコンポーネントから構成されています.
  • 問題イベントによって引き起こされて、自由でオープンソースGithubアクションによって供給されるGithubワークフロー
  • イベントを受け取り、Azure ColorsDBに書き込む単純なAzure関数
  • Powerbiレポート世界地図上の最終的な問題を表示する!
  • ワークフローパイプライン


    YAMLパイプラインは2つのオープンソースGITHUBアクションを使用します.
  • octokit/graphql-action : ユーザの位置情報を問い合わせる
  • satak/webrequest-action : JSONデータをAzure関数に投稿するには
  • ワークフローが新しい問題(またはコメント)によって引き起こされるとき、最初のステップ
    - uses: octokit/[email protected]
      id: get_user_info
      with:
        query: |
          query info($owner:String!) { 
            user(login: $owner) {
              location
            }
          }
        owner: ${{ github.actor }}
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    
    ユーザープロファイルから場所を抽出します.
    セカンドステップ
    - uses: satak/webrequest-action@master
      env:
        USERLOCATION: ${{ steps.get_user_info.outputs.data }}
        USERNAME: ${{ github.actor }}
        REPOSITORY: ${{ github.repository }}
      with:
          url: 'http://0caad210bf6f.ngrok.io/api/ReceiveIssue'
          method: 'POST'
          headers: '{"x-functions-key": "${{ secrets.FUNCTION_KEY }}"}'
          payload: '{ "location": ${{ env.USERLOCATION }}, "repository": "${{ env.REPOSITORY }}", "username": "${{ env.USERNAME }}" }'
    
    完全なJSONペイロードを作成し、それをデータベースに格納するためにAzure関数に送ります.

    紺碧関数


    githubパイプラインからイベントを受け取り、OutputBindingを使用してColorsDBに書き込みます.
    関数キーを使用してAzure関数を呼び出す必要がありますx-functions-key HTTPヘッダー.
    
    [FunctionName("ReceiveIssue")]
    public static async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
        [CosmosDB(
            databaseName: "Github",
            collectionName: "Issues",
            ConnectionStringSetting = "CosmosDBConnection")] IAsyncCollector<Event> eventsOut,
        ILogger log)
    {
        log.LogInformation("Received event");
    
        try
        {
            string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            dynamic data = JsonConvert.DeserializeObject(requestBody);
    
            string location = data.location.user.location;
            string repos = data.repository;
            string username = data.username;
    
            var eventObj = new Event()
            {
                Location = location,
                Username = username,
                EventDate = DateTime.Now,
                Repository = repos
            };
    
            await eventsOut.AddAsync(eventObj);
    
            return new OkObjectResult("Event inserted");
        }
        catch(Exception ex)
        {
            log.LogError(ex, "Error insert event");
            return new BadRequestObjectResult("Event not valid");
        }
    }
    
    

    パワーレポート


    これは最初のpowerbiレポートの一つであるので、私はそれについて熟練していません、そして、どんな提案も歓迎されます!
    問題があります.公開レポートでは、データはリアルタイムで更新されませんMicrosoft Docs そして、スケジュールのトリックhourly data refresh ).
    しかし、DirectQueryでサポートされているデータソースを使用すると、この問題は解決できます.
    最後に報告書を公開しますwebsite !

    YAMLファイルとコードへのリンク


    あなたは私のgithubリポジトリのコードをチェックアウトすることができます

    SALME 84 / 地図あなたの問題



    地図あなたの問題


    このリポジトリには、問題点の世界地図を作成する新しい問題にトリガーされたGithub actionワークフローが含まれます.

    動作方法


    3つのコンポーネントから構成されています.
  • 問題イベントによって引き起こされて、自由でオープンソースGithubアクションによって供給されるGithubワークフロー
  • イベントを受け取り、Azure ColorsDBに書き込む単純なAzure関数
  • Powerbiレポート世界地図上の最終的な問題を表示する!
  • ワークフローパイプライン


    YAMLパイプラインは2つのオープンソースアクションを使用します.
  • octokit/graphql-action : Github GraphSQL APIを使用してユーザの位置情報を問い合わせるには
  • satak/webrequest-action : JSONデータをAzure関数に投稿するには
  • View on GitHub
    次の日(私はいくつかのものをチェックした後)私はgithubリポジトリにもpowerbiレポートを公開します!

    追加情報


    あなたが好きならば、Aを加えてください⭐ 特に書くissue , だから、ピンすることができます📌 あなたmap

    いいね


    これは明らかにいくつかの時間で開発された概念プロジェクトの単純な証明ですが、私は次の日/週に私は次のように改善しようとすると思います.
    ⬜ DirectQuery DataSourceを使用して、リアルタイムの更新に近い(またはSignalrとAzureマップを使用して完全なウェブサイトを開発します)
    ⬜ スケーラビリティを向上させるためのAzure側パイプラインの改良(例えばAzure Event Hub +他の情報源からのデータの充実)
    ⬜ すべてのGithubリポジトリの共有世界地図を作成!
    ⬜ 展開をスピードアップするスクリプトを作成する
    ⬜ テキストメッセージAIアルゴリズムを使用して、問題メッセージからデータを抽出します
    ✅ 機能認証キーでセキュリティを向上させる