문제를 매핑하세요!
11832 단어 showdevactionshackathongithubazure
이것은 또한 Dev.to에 대한 나의 첫 번째 게시물입니다!
제출 범주
엉뚱한 와일드카드
작동 방식
프로젝트는 세 가지 구성 요소로 구성됩니다.
워크플로 파이프라인
Yaml 파이프라인은 두 가지 오픈 소스 Github 작업을 사용합니다.
octokit/graphql-action
: 사용자 위치 정보를 쿼리하기 위해satak/webrequest-action
: Azure 함수에 JSON 데이터 게시새로운 이슈(또는 댓글)로 워크플로가 트리거되면 첫 번째 단계
- 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 }}
GraphQL Github API를 사용하여 사용자 프로필에서 위치를 추출합니다.
대신 두 번째 단계
- 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 Function으로 보냅니다.
Azure 함수
Github 파이프라인에서 이벤트를 수신하고 OutputBinding을 사용하여 CosmosDb에 쓰는 HTTP 트리거 Azure 함수입니다.
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 저장소에서 코드를 확인할 수 있습니다.
salem84 / 문제 매핑
문제 매핑
이 리포지토리에는 문제 위치의 세계 지도를 만들기 위해 새 문제에서 트리거되는 Github 작업 워크플로가 포함되어 있습니다.
작동 방식
세 가지 구성 요소로 구성됩니다.
워크플로 파이프라인
Yaml 파이프라인은 두 가지 오픈 소스 작업을 사용합니다.
octokit/graphql-action
: Github GraphQL API를 사용하여 사용자 위치 정보를 쿼리하기 위해satak/webrequest-action
: Azure 함수에 JSON 데이터 게시View on GitHub
다음 날(몇 가지 사항을 확인한 후) GitHub 리포지토리에 PowerBi 보고서도 게시할 예정입니다!
추가 리소스/정보
원하는 경우 ⭐를 추가하고 특히 issue을 작성하여 📌 당신을 map에 고정할 수 있습니다.
가져서 좋다
이것은 분명히 몇 시간 만에 개발된 간단한 개념 증명 프로젝트이지만 다음 몇 주 안에 다음과 같이 개선하려고 노력할 것입니다.
⬜ DirectQuery Datasource를 사용하여 거의 실시간 업데이트(또는 SignalR 및 Azure Maps 등을 사용하여 완전한 웹 사이트 개발)
⬜ Azure 측 파이프라인을 개선하여 확장성 향상(예: Azure Event Hub + 다른 소스의 데이터 보강 사용)
⬜ 모든 Github 리포지토리의 공유 세계 지도를 만드세요!
⬜ 배포 속도를 높이는 IaC 스크립트 만들기
⬜ Text Analysis AI 알고리즘을 사용하여 이슈 메시지에서 데이터 추출
✅ 기능 인증 키로 보안 강화
Reference
이 문제에 관하여(문제를 매핑하세요!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/giorgiolasala/map-your-issues-52j0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)