Blame
| 06d2ef | 강세보 | 2026-01-13 10:05:28 | 1 | # Jenkins |
| 2 | ||||
| 3 | Jenkins: [Jenkins](https://www.jenkins.io/) |
|||
| 4 | ||||
| 5 | # 설치 및 설정 |
|||
| 6 | war 파일로 다운로드 받는다. |
|||
| 7 | ```bash |
|||
| 8 | mkdir jenkins |
|||
| 9 | cd jenkins |
|||
| 10 | wget https://get.jenkins.io/war-stable/2.492.3/jenkins.war |
|||
| 11 | mkdir home logs work |
|||
| 12 | ``` |
|||
| 13 | start.sh |
|||
| 14 | ```bash |
|||
| 15 | #!/bin/bash |
|||
| 16 | #!/bin/bash |
|||
| 17 | JAVA_HOME=$HOME/devops/jvm/jdk-21.0.9+10 |
|||
| 18 | JENKINS_DATA=/mnt/LaCie/svcrnd/data/jenkins |
|||
| 19 | ||||
| 20 | JENKINS_ROOT=$HOME/devops/jenkins |
|||
| 21 | JENKINS_WAR=$JENKINS_ROOT/dist/jenkins.war |
|||
| 22 | JENKINS_HOME=$JENKINS_DATA |
|||
| 23 | JENKINS_LOG=$JENKINS_ROOT/logs/jenkins.log |
|||
| 24 | JENKINS_PIDFILE=$JENKINS_ROOT/logs/jenkins.pid |
|||
| 25 | JENKINS_WEBROOT=$JENKINS_ROOT/work |
|||
| 26 | ||||
| 27 | case $1 in |
|||
| 28 | start) |
|||
| 29 | $JAVA_HOME/bin/java -DJENKINS_HOME=$JENKINS_HOME -jar $JENKINS_WAR --enable-future-java --logfile=$JENKINS_LOG --webroot=$JENKINS_WEBROOT --httpPort=6501 --prefix=/jenkins & |
|||
| 30 | echo $! > $JENKINS_PIDFILE |
|||
| 31 | ;; |
|||
| 32 | stop) |
|||
| 33 | if [ -f $JENKINS_PIDFILE ]; then |
|||
| 34 | kill $(cat $JENKINS_PIDFILE) |
|||
| 35 | rm $JENKINS_PIDFILE |
|||
| 36 | else |
|||
| 37 | ps -ef | grep jenkins | grep -v grep | awk '{print $2}' | xargs kill |
|||
| 38 | fi |
|||
| 39 | ;; |
|||
| 40 | *) |
|||
| 41 | echo "Usage: $0 {start|stop}" |
|||
| 42 | exit 1 |
|||
| 43 | ;; |
|||
| 44 | esac |
|||
| 45 | ||||
| 46 | exit 0 |
|||
| 47 | ``` |
|||
| 48 | ||||
| 49 | supervisord 설정 |
|||
| 50 | ```ini |
|||
| 51 | [program:jenkins] |
|||
| 52 | environment=HOME="/home/aicsgw" |
|||
| 53 | command=java -DJENKINS_HOME=/home/aicsgw/servers/jenkins/home -jar /home/aicsgw/servers/jenkins/jenkins.war --logfile=/home/aicsgw/servers/jenkins/logs/jenkins.log --webroot=/home/aicsgw/servers/jenkins/work --httpPort=8084 --prefix=/ci |
|||
| 54 | directory=/home/aicsgw/servers/jenkins/ |
|||
| 55 | autostart=true |
|||
| 56 | stopasgroup=true |
|||
| 57 | ;startsecs=5 |
|||
| 58 | ;stopwaitsecs=10 |
|||
| 59 | ;autorestart=true |
|||
| 60 | ;stopsignal=KILL |
|||
| 61 | stdout_logfile=/home/aicsgw/servers/supervisor/logs/jenkins_out.log |
|||
| 62 | stderr_logfile=/home/aicsgw/servers/supervisor/logs/jenkins_err.log |
|||
| 63 | stdout_logfile_backups=3 |
|||
| 64 | stderr_logfile_backups=3 |
|||
| 65 | user=aicsgw |
|||
| 66 | priority=21 |
|||
| 67 | ``` |
|||
| 68 | ||||
| 69 | # Keycloak 연동 |
|||
| 70 | [Keycloak Authentication | Jenkins plugin](https://plugins.jenkins.io/keycloak/) |
|||
| 71 | ||||
| 72 | 최대한 언급된 항목만 설정한다. |
|||
| 73 | ||||
| 74 | # maven 설정 수정 |
|||
| 75 | 사내 maven repository 접근 시 오류 발생 |
|||
| 76 | ``` |
|||
| 77 | [ERROR] Failed to read artifact descriptor for com.uangel.aica:aipbmsg:jar:0.0.16 |
|||
| 78 | [ERROR] Caused by: The following artifacts could not be resolved: com.uangel.aica:aipbmsg:pom:0.0.16 (absent): Could not transfer artifact com.uangel.aica:aipbmsg:pom:0.0.16 from/to maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories: [maven-public (http://192.168.7.33:8082/repository/maven-public/, default, releases+snapshots)] |
|||
| 79 | ``` |
|||
| 80 | maven 설정 수정 |
|||
| 81 | /home/aicsgw/servers/jenkins/home/tools/hudson.tasks.Maven_MavenInstallation/maven/conf |
|||
| 82 | ```xml |
|||
| 83 | <!-- disable http mirror blocker |
|||
| 84 | <mirror> |
|||
| 85 | <id>maven-default-http-blocker</id> |
|||
| 86 | <mirrorOf>external:http:*</mirrorOf> |
|||
| 87 | <name>Pseudo repository to mirror external repositories initially using HTTP.</name> |
|||
| 88 | <url>http://0.0.0.0/</url> |
|||
| 89 | <blocked>true</blocked> |
|||
| 90 | </mirror> |
|||
| 91 | --> |
|||
| 92 | ``` |
