๋ฐฐ์น๋ฅผ ์๋์ผ๋ก ๋๋ ค์ผ ํ๋ ์ํฉ์ด ์์ ์ ์๋ค.
์๋ฅผ ๋ค๋ฉด, DBMS์ ์ ๋ฒ์ ์ด ๋์์ ๋ ๋ฐ๋ก ๋ฐฐ์น๋ฅผ ๋๋ ค์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํด์ผ ๋ ์๋ ์๊ธฐ ๋๋ฌธ!
์น์ [์๋ ๋ฐฐ์น] ๊ฐ์ ๋ฒํผ์ ๋ง๋ค์ด ๋๊ณ ๋๋ฅด๋ฉด ์ ํจ์ค์์ ๋ฐฐ์น๊ฐ ๋๊ฒ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ
์ ํจ์ค์์ ์ ๊ณตํ๋ ์๊ฒฉ์ผ๋ก ๋น๋ ์ ๋ฐ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ๋๋ค.
๊ทธ๋ฌ๋ฉด ์ ํจ์ค์ ์ค์ ํด ๋์ ์ฌ์๋ ํ์, ๋๋ ์ด ๋ฉ์ ์ ์๋ฆผ ๊ธฐ๋ฅ, ๋ก๊ทธ ํ์ธ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์๋ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ์ ์๊ฒฉ์ผ๋ก ๋น๋๋ฅผ ์ ๋ฐํด๋ณด์!
1. ํ ํฐ ๋ฐ๊ธ
- Dashboard > ์ฌ๋
- admin์ด๋ ์ด๋ฆ์ผ๋ก ์ฌ์ฉ์๋ฅผ ๋ฑ๋กํ๊ธฐ ๋๋ฌธ์ admin ํด๋ฆญ!
- ์ค์ ์ผ๋ก ๋ค์ด๊ฐ์ API Token ๋ฐ๊ธ
๋ค์ ๋ค์ด๊ฐ๋ฉด ๊ฐ์ด ์ฌ๋ผ์ ธ ์์ผ๋ ์ ๋ณต์ฌํด๋์!
2. Job ์ค์
- ์๊ฒฉ์ผ๋ก ๋น๋ ์ ๋ฐ ์ฒดํฌ ๋ฐ ํ ํฐ ์ด๋ฆ ์ค์
ํ ํฐ ์ด๋ฆ์ ๋์ค์ ํธ์ถํ ๋ ์ฌ์ฉํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋์ด์ฐ๊ธฐ ์์ด ์งง๊ฒ ์ ์ด์ฃผ๋ฉด ๋๋ค.
3. ์๊ฒฉ์ผ๋ก ๋น๋
1) Job Build
- Parameter๊ฐ ์๋ build
curl -i -X POST 'http://<jenkins_username>:<jenkins_api_token>@<jenkins_url>/job/<job_name>/build?token= <token_name>'
๊ฐ์ ์ฑ์๋ฃ๊ณ ํฐ๋ฏธ๋์์ ์คํํด๋ณด๋ฉด ์ ํจ์ค job์ด ์ ์คํ๋๋ค!
ํ์ด์ฌ์์ ๊ตฌํํ๊ณ ์ ํ๋ฉด
@api_view(['POST'])
def trigger_build(request):
# ์ ํจ์ค ๋น๋ ์ฃผ์ - ํ๋ผ๋ฏธํฐ : ํ ํฐ
jenkins_url = f"http://{jenkins_username}:{jenkins_password}@{jenkins_server}/job/{jenkins_job_name}/build?token={jenkins_token}"
try:
response = requests.post(jenkins_url) # ์ ํจ์ค ๋น๋ ์ฃผ์๋ก post ์์ฒญ ๋ณด๋ด๊ธฐ
if response.status_code == 201: # ์์ฒญ ์ฑ๊ณต
print("[Success] Jenkins trigger builds remotely!")
return HttpResponse("Jenkins build triggered successfully!", status=201)
else: # ์์ฒญ ์คํจ
print("[Fail] Failed to trigger builds remotely. Status code:", response.status_code)
return HttpResponse("Failed to trigger Jenkins build. Status code: " + str(response.status_code), status=500)
except Exception as e: # ์์ธ ๋ฐ์
print("[Fail] Failed to trigger builds remotely. Exception:", e)
return HttpResponse("Failed to trigger Jenkins build. Exception: " + str(e), status=500)
- Build with Parameter
curl -X POST 'http://[IP]:[PORT]/job/[JOB_NAME]/build buildWithParameters --data [PARAM1]=[VALUE1] --data [PARAM2]=[VALUE2] --user [USER_NAME]:[USER_API_TOKEN]'
@api_view(['GET'])
def trigger_build_with_parameters(request):
try:
# ์ ํจ์ค ๋น๋ ์ฃผ์ - ํ๋ผ๋ฏธํฐ : ํ ํฐ, ํ๋ผ๋ฏธํฐ
jenkins_url = f"http://{jenkins_username}:{jenkins_password}@{jenkins_server}/job/{jenkins_job_name}/buildWithParameters?token={jenkins_token}¶ms={params}"
response = requests.post(jenkins_url) # ์ ํจ์ค ๋น๋ ์ฃผ์๋ก post ์์ฒญ ๋ณด๋ด๊ธฐ
if response.status_code == 201: # ์์ฒญ ์ฑ๊ณต
print("[Success] Jenkins trigger builds remotely!")
return HttpResponse("Jenkins build triggered successfully!", status=201)
else: # ์์ฒญ ์คํจ
print("[Fail] Failed to trigger builds remotely. Status code:", response.status_code)
return HttpResponse("Failed to trigger Jenkins build. Status code: " + str(response.status_code), status=500)
except Exception as e: # ์์ธ ๋ฐ์
print("[Fail] Failed to trigger builds remotely. Exception:", e)
return HttpResponse("Failed to trigger Jenkins build. Exception: " + str(e), status=500)
2) Job Build ์กฐํ
curl -X GET 'http://[IP]:[PORT]/job/[JOB_NAME]/api/json --user [USER_NAME]:[USER_API_TOKEN]'
3) Job Build ๊ฒฐ๊ณผ ์กฐํ
curl -X GET 'http://[IP]:[PORT]/job/[JOB_NAME]/[BUILD_NUM]/api/json --user [USER_NAME]:[USER_API_TOKEN]'
๋น๋ ๋๋ฒ๋ฅผ ํ์ธํ๊ธฐ ์ด๋ ค์ธ ๊ฒฝ์ฐ
BUILD_NUM ๋์ lastStableBuild๋ฅผ ์ ๋ ฅํ ๊ฒฝ์ฐ ๊ฐ์ฅ ์ต์ ์ ๋น๋ ๊ฒฐ๊ณผ๋ฅผ ์ ์ ์๋ค.
๊ฐ ์กฐํ ๊ฒฐ๊ณผ๋ json, xml, python ํ์ ์ ์ง์ ํ ์ ์๋ค.
curl -X GET 'http://[IP]:[PORT]/job/[JOB_NAME]/lastStableBuild/api/json --user [USER_NAME]:[USER_API_TOKEN]'
์ฐธ๊ณ ์ฌ์ดํธ