젠킨스는 시스템에 직접 접근하지 않아도 외부에서 보거나 처리할 수 있게 REST API를 지원하고 있다. 따라서 마지막 빌드의 결과를 외부(Blazor)에서 알아보기 위해 구현해볼 것이다.
젠킨스 화면 우측 상단. 프로필 - 설정 클릭
설정페이지에서 API Token 항목을 찾기
Add new Token을 눌러 토큰을 생성해주는데 이때 작성하는 이름은 토큰을 여러개 생성시 내부 구분용이므로 중요치 않음. 따라서 이름을 지어줘도 되고, 지어주지 않을 경우 위와 같이 자동 생성된 이름으로 저장이 됨.
생성시 "1169eccdeef2e2f102c44e46e38ff60020"와 같은 복잡한 문자열을 자동생성해주는데 실제로 사용할 데이터이니 잘 복사 해둘 것. (설정 페이지를 나갔다가 들어오면 다시 볼 수 없음!)
그리고 본인 계정명과 위에서 생성한 토큰데이터를 아래 형태로 만들어 줄 것.
계정명:토큰
(이때 계정명은 토큰생성시 지어준 이름이 아닌 젠킨스 계정명을 말하고, 계정명과 토큰사이 콜론(:) 을 빼먹지 말 것)
- 예시
JH:1169eccdeef2e2f102c44e46e38ff60020
다 작성하였으면 그대로 복사해서 Base64 인코딩을 하면 되는데, 변환 코드를 직접작성하거나 사이트를 통해 문자열을 얻으면 된다. 아래는 사이트를 통해 문자열을 얻는 방법을 나타냄
JH:1169eccdeef2e2f102c44e46e38ff60020
(Base64 인코딩)
Skg6MTE2OWVjY2RlZWYyZTJmMTAyYzQ0ZTQ2ZTM4ZmY2MDAyMA==
인코딩 된 문자를 잘 복사해둔다.
코드 예시
Jenkins.razor
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
@page "/jenkins"
@using System.Text.Json
<PageTitle>Jenkins 테스트</PageTitle>
<h3>Jenkins</h3>
빌드 결과 알림 <br/>
@buildData.result
<br/>
<br/>
<hr/>
Json 원문
<br/>
@json
@code {
BuildData buildData = new BuildData();
string json;
public class BuildData
{
public string result = "UNKNWON";
}
protected override async Task OnInitializedAsync()
{
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", "Skg6MTE2OWVjY2RlZWYyZTJmMTAyYzQ0ZTQ2ZTM4ZmY2MDAyMA==");
HttpResponseMessage response = await client.GetAsync("http://localhost:8080/job/aa/lastBuild/api/json");
json = await response.Content.ReadAsStringAsync();
// json 데이터중에 일부 프로퍼티만 필요한경우 DOM 기능을 사용하면 된다.
JsonDocument jdom = JsonDocument.Parse(json);
JsonElement jroot = jdom.RootElement;
JsonElement success = jroot.GetProperty("result");
string g = success.GetString() ?? "UNKNOWN";
buildData.result = g;
StateHasChanged();
}
}
}
|
cs |
33번 줄의 Authorization에 "Basic", "아까 위에서 base64인코딩한 문자열"을 적어주면 된다.
그리고 해당 헤더 바탕으로 "젠킨스작업공간주소/api/json" 형태로 GET을 날리면 된다.
만약 401, unauthorization 나오면 인증키 잘못 적은 것
- 실행결과
Json 데이터로 수많은 프로퍼티가 날아오지만 결과만 알기 되기 때문에, DOM 기능으로 result 프로퍼티에 대한 값만 얻어 온 것을 확인할 수 있고, 원문도 추가로 출력하여 전체를 확인할 수 있도록 함.
- 굳이 검증?
젠킨스 마지막 빌드 결과가 성공이므로 Json의 result 프로퍼티에 SUCCESS가 기록 되었고, 젠킨스의 REST API가 정상 작동을 확인할 수 있음.
--
인증방식에 대해 읽어보면 좋은 글
'ASP.NET Blazor' 카테고리의 다른 글
Blazor/ASP.NET 구글 인증 로그인 만들기 - 3. 구글 인증 처리 코드 작성 (0) | 2023.08.22 |
---|---|
Blazor/ASP.NET 구글 인증 로그인 만들기 - 2. 구글 클라우드 API 프로젝트 세팅 (0) | 2023.08.22 |
Blazor/ASP.NET 구글 인증 로그인 만들기 - 1. 프로젝트 세팅 (0) | 2023.08.22 |
Blazor 실행 시 HTTPS가 아닌 HTTP 프로토콜로 시작하는 방법 (0) | 2023.07.25 |
Blazor 에서 구글 차트를 사용하는 방법 (0) | 2023.07.25 |