Windows10에 앱으로 Jenkins를 넣는 방법 (OpenJDK11)
소개
Windows에서 WEB로부터 관리할 수 있는 태스크 스케줄러가 없는 것인가라고 검토하고 있었는데, Jenkins로 좋지 않을까라는 안이한 생각 아래 Windows10에 Jenkins를 넣어 태스크 관리를 해 보았다고 하는 이야기입니다
즉시 빠졌습니다.
Jenkins를 서비스로 설치한 결과 Jenkins에서 GUI 앱이 시작되지 않는다는 현상이 발각
Jenkins를 서비스로 설치한 결과 Jenkins에서 GUI 앱이 시작되지 않는다는 현상이 발각
우선, Jenkins가 시스템 유저로 기동하고 있는 것 같기 때문에, 원래 앱을 풀 패스 지정해 기동해도, 유저의 프로파일을 읽지 않는다는 사실을 깨달았다.
이것에 대해서는, Jenkins 서비스의 기동 유저를 이하의 순서로 변경해 대응했다
1.[コントロールパネル] - [管理ツール] - [サービス] を開く。
2.一覧から[Jenkins]を探し、右クリック[プロパティ]を選択する。
3.[ログオン]タブから[アカウント]を選択し、ユーザーとパスワードを入力する。
4.[OK]をクリックしてサービスを再起動する。
위의 대응을 한 결과, 앱이 프로필을 읽고 시작하게 되었지만, GUI가 일어나지 않는다. 조사해 본 결과
Windows Service から GUIアプリ を起動して操作することができない制約のため
그렇다고 해서, Jenkins를 서비스가 아니라 어플리케이션으로서 기동하지 않으면, GUI가 있는 어플리케이션을 기동하거나, 제어는 할 수 없는 것 같다.
Jenkins를 응용 프로그램으로 설치합시다.
먼저 일단 서비스로 넣은 Jenkins를 제거하고 JDK를 포함하여 다시 설치하기로 결정합니다.
Jenkins Ver
대응 JDK
2.150.3
Java 8(1.8.x)까지
2.168.0
Java 11(1.11.x)까지
이번에는 OpenJDK 11을 사용할 예정이므로
2.168
번거롭기 때문에 일괄 설치 배치를 만들었습니다.
하는 일은
:TOOLS_SETUP
-> GNU on Windows를 추가하여 Windows에서 Linux 명령을 사용할 수 있습니다.
curl을 사용하고 싶을 뿐이므로, cUrl for Windows에서도 좋았다
: START_SETUP
-> Jenkins 2.168 전쟁 다운로드
: NEXT_JAVA
-> OpenJDK 11 다운로드/설치
: NEXT_RUN
-> Jenkins 초기 시작
jenkins_setup.bat
@echo off
@echo "OpenJDK 11 & Jenkins 2.168 Install Batch"
:TOOLS_SETUP
if exist "%SystemDrive%\tmp\Gow-0.8.0.exe" goto START_SETUP
@echo "GNU on Windows install"
mkdir "%SystemDrive%\tmp"
cd "%SystemDrive%\tmp"
powershell.exe Invoke-WebRequest -Uri "https://github.com/bmatzelle/gow/releases/download/v0.8.0/Gow-0.8.0.exe" -OutFile "%SystemDrive%\tmp\Gow-0.8.0.exe"
Gow-0.8.0.exe
:START_SETUP
if exist "%SystemDrive%\jenkins\jenkins.war" goto NEXT_JAVA
mkdir "%SystemDrive%\jenkins"
mkdir "%SystemDrive%\Jenkins\war"
mkdir "%SystemDrive%\Jenkins\war\logs"
cd "%SystemDrive%\jenkins"
curl -L -o "%SystemDrive%\jenkins\jenkins.war" "http://mirrors.jenkins.io/war/latest/jenkins.war"
:NEXT_JAVA
if exist "%SystemDrive%\java\openjdk-11.0.2_windows-x64_bin.zip" goto NEXT_RUN
mkdir "%SystemDrive%\java"
cd "%SystemDrive%\java"
curl -L -o "%SystemDrive%\java\openjdk-11.0.2_windows-x64_bin.zip" "https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_windows-x64_bin.zip"
curl -L -o "%SystemDrive%\java\unz552xN.exe" "http://ftp.hans-support.de/pub/hans/misc/packer/unz552xN.exe"
unz552xN.exe x unzip.exe
unzip.exe openjdk-11.0.2_windows-x64_bin.zip
:NEXT_RUN
SET PATH="%PATH%;%SystemDrive%\java\jdk-11.0.2\bin"
SET JAVA_HOME="%SystemDrive%\java\jdk-11.0.2"
SET JENKINSBIN="%SystemDrive%\Jenkins\jenkins.war"
SET JENKINSHOME="%SystemDrive%\Jenkins\war"
SET JAVABIN="%SystemDrive%\java\jdk-11.0.2\bin\java.exe"
:RUN_ONCE
%JAVABIN% -Xrs -Xmx1024m -Xms1024m -XX:MaxMetaspaceSize=256m -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=8090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle %JENKINSOPT% -jar %JENKINSBIN% --httpPort=8080 --webroot=%JENKINSHOME%
pause
명령 프롬프트에서 실행
jenkins_setup.bat
시작되면 브라우저에서
http://127.0.0.1:8080/
에 액세스초기 비밀번호 입력 등을 완료하고 시작할 수 있으면 OK
일어난 Jenkins를 떨어뜨리려면 시작 중인 명령 프롬프트에서
CTRL+C
를 누르면라고 들리므로
Y
를 입력하고 Enter
다음 번 이후에는 설정 부분이 들어 가지 않으므로 다음과 같은 배치를 만들어 실행
jenkins_exec.bat
@echo off
:exec_jenkins
SET PATH="%PATH%;%SystemDrive%\java\jdk-11.0.2\bin"
SET JAVA_HOME="%SystemDrive%\java\jdk-11.0.2"
SET JENKINSBIN="%SystemDrive%\Jenkins\jenkins.war"
SET JENKINSHOME="%SystemDrive%\Jenkins\war"
SET JAVABIN="%SystemDrive%\java\jdk-11.0.2\bin\java.exe"
%JAVABIN% -Xrs -Xmx1024m -Xms1024m -XX:MaxMetaspaceSize=256m -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=8090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle %JENKINSOPT% -jar %JENKINSBIN% --httpPort=8080 --webroot=%JENKINSHOME% >> %JENKINSHOME%\logs\jenkins.log 2>>&1
pause
명령 프롬프트에서 실행
jenkins_exec.bat
작업 스케줄러에서 5분마다 다음과 같은 배치를 만들어 실행하여 Jenkins가 떨어진 경우에 대응하기로 했다
프로세스 모니터링 도구를 별도로 넣어도 좋았지만 쓸데없는 자원을 소비하고 싶지 않았습니다.
8080 포트에서 UI가 시작되지 않으면 시작 배치를 두드리는 행동
jenkins_watch.bat
@ECHO OFF
CD %SystemDrive%\jenkins\
curl http://localhost:8080/ > NUL
IF NOT ERRORLEVEL 1 (
GOTO PGOK
) ELSE (
ECHO jenkinsが起動していません。
GOTO PGNG
)
:PGOK
ECHO jenkins:起動OK %DATE% %TIME% >> %SystemDrive%\jenkins\jenkins_chk.txt
GOTO END
:PGNG
ECHO jenkins:起動NG!!!! %DATE% %TIME% >> %SystemDrive%\jenkins\jenkins_chk.txt
ECHO jenkins:起動します %DATE% %TIME% >> %SystemDrive%\jenkins\jenkins_chk.txt
start %SystemDrive%\jenkins\jenkins_exec.bat
GOTO END
:END
ECHO 終了処理
EXIT
사이고에게
이제 GUI 앱을 정기적으로 실행하거나 제어하는 것이 WEB 경유로 할 수 있게 된, 게다가 WindowsPC만으로.
누군가의 도움이 되어서 다행입니다.
Reference
이 문제에 관하여(Windows10에 앱으로 Jenkins를 넣는 방법 (OpenJDK11)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hirohiro77/items/4f41f90ed20f26321e56
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Windows10에 앱으로 Jenkins를 넣는 방법 (OpenJDK11)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hirohiro77/items/4f41f90ed20f26321e56텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)