728x90
๐ก ๋ค์ด๊ฐ๊ธฐ ์ ์
- ๋์ปค์ jenkins ๊ณต์์ด๋ฏธ์ง๋ Deprecated ๋์๋ค.
- ๋์ ๊ฒฝ์ฐ ์๋ฐ 11 ๋ฒ์ ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ lts-jdk 11 ๋ฒ์ ์ ์ฌ์ฉํ๋ค.
- LTS(Long Term Support)๋ ์ฅ๊ธฐ ์ง์ ๋ฒ์ ์ด๋ ์๋ฏธ๋ก, ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ๋ณด๋ค ์ฅ๊ธฐ๊ฐ์ ๊ฑธ์ณ ์ง์ํ๋๋ก ํน๋ณํ ๊ณ ์๋ ์ํํธ์จ์ด์ ๋ฒ์ ๋๋ ์๋์ ์ด๋ค.
๐ฆ ์ค๋นํ๊ธฐ
wonyong@Wonyongui-MacBookAir:~$docker volume create jenkins
jenkins
- ๋ณผ๋ฅจ ์ฌ์ฉ์ ์ํด jenkins ๋ณผ๋ฅจ์ ์์ฑํ๋ค.
- ์ด ๊ธ์ ๋์ปค ์ ํจ์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ช
ํ์ง๋ง ์ปจํ
์ด๋๋ก ์ ํจ์ค๋ฅผ ์คํํ๋ ์ ์ ์ ์ธํ๊ณ ๋ ๋ก์ปฌ์์ ์ค์นํ๋ ๊ฒ๊ณผ ํฌ๊ฒ ๋ค๋ฅด์ง ์๋ค.
- ๋ก์ปฌ์์ ์ ํค์ค๋ฅผ ์ค์นํ๊ณ ์ถ๋ค๋ฉด, https://www.jenkins.io/์ ์ ์ํ์ฌ ์ด์์ฒด์ ์ ๋ง๊ฒ ์ค์นํ๋ฉด ๋๋ค.
๐ ๋์ปค๋ก jenkins ์ปจํ ์ด๋ ์คํํ๊ธฐ
docker run -d --name jenkins -v jenkins:/var/jenkins_home -p 18080:8080 -p 50000:50000 --restart=on-failure -e TZ=Asia/Seoul jenkins/jenkins:lts-jdk11
- -d๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํํ๋ค๋ ์๋ฏธ์ด๋ค.
- --name์ ์์ฑํ ์ปจํ ์ด๋์ ์ด๋ฆ์ ์ง์ ํ๋ค.
- -v๋ ๋ณผ๋ฅจ ์ค์ ์ด๋ค. ์์์ ์์ฑํ ๋ณผ๋ฅจ jenkins์ ์ปจํ ์ด๋ ๋ด๋ถ ๊ฒฝ๋ก๋ฅผ ๋งคํํด ์ฃผ์๋ค.
- -p ํฌํธ๋ ๋ก์ปฌ์ 18080 ํฌํธ์ ์ปจํ
์ด๋ ๋ด๋ถ์ 8080 ํฌํธ๋ฅผ ์ฐ๊ฒฐํ๋ค. 50000 ํฌํธ๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค.
- ์ปจํ ์ด๋๊ฐ ์๋ ๋ก์ปฌ์ ์ง์ ์ค์นํ๋ค๋ฉด ์๋์ mac ๊ธฐ์ค ์ ํจ์ค ํฌํธ ๋ณ๊ฒฝ ๋ฐฉ๋ฒ์ ์ฐธ๊ณ ํ์.
8080 ํฌํธ
- 8080 ํฌํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก Jenkins์ ์น ์ธํฐํ์ด์ค์ ๋ํ ์ ๊ทผ์ ํ์ฉํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
- ์ด ํฌํธ๋ฅผ ํตํด Jenkins ์๋ฒ์ ์ ์ํ์ฌ ๋น๋, ๋ฐฐํฌ, ๊ด๋ฆฌ ๋ฑ์ ์์ ์ ์ํํ ์ ์๋ค.
50000 ํฌํธ
- Jenkins ์์ด์ ํธ(๋๋ ์ฌ๋ ์ด๋ธ)์ ๋ง์คํฐ ๊ฐ์ ํต์ ์ ์ํ ํฌํธ์ด๋ค.
- Jenkins ์์ด์ ํธ๋ ๋ง์คํฐ ์๋ฒ์์ ์์ ์ ๋ฐ์ ์คํํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๋ง์คํฐ ์๋ฒ๋ก ๋ณด๊ณ ํ๋ ์ญํ ์ ํ๋ค.
--restart=on-failure
- ์ด ์ต์ ์ ๋์ปค ์ปจํ ์ด๋๊ฐ ์คํจํ ๊ฒฝ์ฐ ์๋์ผ๋ก ๋ค์ ์์ํ๋๋ก ์ค์ ํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
- ์ปจํ ์ด๋๊ฐ ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋์์ ๋ ์๋์ผ๋ก ์ฌ์์ํ์ฌ ์๋น์ค์ ์ง์์ฑ์ ์ ์งํ ์ ์๋ค.
-e TZ=Asia/Seoul
- ์ด ์ต์ ์ ๋์ปค ์ปจํ ์ด๋ ๋ด๋ถ์์ ์ฌ์ฉํ ํ์์กด์ ์ค์ ํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
- ์ฌ๊ธฐ์๋ "Asia/Seoul"๋ก ํ์์กด์ ์ค์ ํ์์ผ๋ฉฐ, ์์ธ ์๊ฐ๋๋ก ์ปจํ ์ด๋ ๋ด๋ถ์ ์๊ฐ์ ์ค์ ํ๋ค.
โจ๏ธ mac ๊ธฐ์ค ์ ํจ์ค ํฌํธ ๋ณ๊ฒฝ ๋ฐฉ๋ฒ
wonyonghwang@Wonyongs-MacBook-Pro ~ % cd /usr/local/opt/jenkins
wonyonghwang@Wonyongs-MacBook-Pro jenkins % ls
INSTALL_RECEIPT.json homebrew.jenkins.service libexec
bin homebrew.mxcl.jenkins.plist
- mac ๊ธฐ์ค ์ ํจ์ค์ ํฌํธ๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ํด์๋ ์์ ๊ฒฝ๋ก๋ก ๋ค์ด๊ฐ homebrew.mxcl.jenkins.plist๋ฅผ ์์ ํ๋ฉด ๋๋ค.
- ๋ง์ฝ homebrew.mxcl.jenkins.plist๊ฐ ๋ค๋ฅธ ๊ฒฝ๋ก์ ์ค์น๋ ๊ฒฝ์ฐ find / -name jenkins.plist ๋ช
๋ น์ด๋ก ์ฐพ์๋ณด์.
- ์๋ง m ์๋ฆฌ์ฆ ๋งฅ๋ถ์ ์ฌ์ฉํ๋ค๋ฉด /opt/homebrew/opt/jenkins์ ์์ ๊ฒ์ด๋ค.
- ๋ฆฌ๋ ์ค ๊ธฐ๋ฐ ๋ค๋ฅธ ์ด์์ฒด์ ์ธ ๊ฒฝ์ฐ๋ find / -name jenkins.service๋ก ํ์ผ์ ์ฐพ๊ณ ํด๋น ํ์ผ์์ ์์ ํด์ผ ํ๋ค.
wonyonghwang@Wonyongs-MacBook-Pro jenkins % vi homebrew.mxcl.jenkins.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>homebrew.mxcl.jenkins</string>
<key>LimitLoadToSessionType</key>
<array>
<string>Aqua</string>
<string>Background</string>
<string>LoginWindow</string>
<string>StandardIO</string>
<string>System</string>
</array>
<key>ProgramArguments</key>
<array>
<string>/usr/local/opt/jenkins/bin/jenkins</string>
<string>--httpListenAddress=127.0.0.1</string>
<string>--httpPort=8080</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>/usr/local/var/log/jenkins/error.log</string>
<key>StandardOutPath</key>
<string>/usr/local/var/log/jenkins/output.log</string>
</dict>
</plist>
- vi ๋ช ๋ น์ด๋ฅผ ํตํด ๋ค์ด๊ฐ <string>--httpPort=8080</string> ์ด ๋ถ๋ถ์ ์ํ๋ ํฌํธ๋ก ์์ ํ๋ฉด ๋๋ค.
๐ ์ ํจ์ค ์ปจํ ์ด๋ ์ ์
- ์ ํจ์ค ์ปจํ
์ด๋๋ฅผ ์ ์ํ๋ ค๋ฉด ์์์ ๋์ปค ์ปจํ
์ด๋์ ๋งคํํ ๋ก์ปฌ PC์ ํฌํธ๋ฒํธ๋ฅผ ์ฃผ์์ฐฝ์ ์
๋ ฅํ๋ค.
- ๋์ ๊ฒฝ์ฐ์๋ localhost:18080์ด๋ค. ๋ธ๋ผ์ฐ์ ์ฃผ์์ฐฝ์ ์ ๋ ฅํ๋ค.
- ๋ก์ปฌ ์ ํจ์ค๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค. ์ค์ ํ ํฌํธ๋ก ์ ๋ ฅํ์ฌ ์ ์ํ๋ฉด ๋๋ค.
- jenkins์ ์ฒ์ ์ ์ํ๋ฉด ์ด๊ธฐ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํด์ผ ํ๋ค.
โจ๏ธ ์ด๊ธฐ ๋น๋ฐ๋ฒํธ ํ์ธ
๋ฐฉ๋ฒ 1)
dokcer logs jenkins(์ปจํ
์ด๋ ๋ช
)
- ๋๋ docker run ๋ช ๋ น์ด๋ฅผ ํตํด -d ์ต์ ์ ์ฌ์ฉํ์ฌ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์คํํ์ฌ ์ปจํ ์ด๋ ์คํ ๋ก๊ทธ๋ฅผ ๋ณผ ์ ์์๋ค.
- ๋ฐ๋ผ์ ๊ฐ๋จํ ํ์ธํ๊ธฐ ์ํด ์ปจํ ์ด๋์ ๋ก๊ทธ๋ฅผ ํ์ธํ๋ ๋ช ๋ น์ด์ธ docker logs๋ฅผ ์ฌ์ฉํ๋ค.
๋ฐฉ๋ฒ 2)
docker exec -it jenkins /bin/bash
cat /var/jenkins_home/secrets/initialAdminPassword
- ์์ ๊ฐ์ด ์ปจํ ์ด๋ ๋ด๋ถ๋ก ์ ์ํ์ฌ ์ง์ ํ์ธํ๋ ๋ฐฉ๋ฒ๋ ์๋ค.
- ๋ง์ฝ MacOS์ ์ง์ ์ค์นํ๋ค๋ฉด /User/<user๋ช >/.jenkins/secret/initialAdminPassword์ ์์ ๊ฒ์ด๋ค.
- ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ๋ฉด ํ๋ฌ๊ทธ์ธ ์ค์นํ์ด์ง๊ฐ ๋์ค๋๋ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ํจ์ค์์ ๊ถ์ฅํ๋ ํ๋ฌ๊ทธ์ธ์ผ๋ก ์ค์นํ๋ค.(์ผ์ชฝ ํด๋ฆญ)
- ์ผ์ชฝ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ์ค์น๊ฐ ์งํ๋๋ค.
- ์ด๊ธฐ Admin ์ ์ ๋ฅผ ์์ฑํ๋ค.
- jenkins URL์ ์ค์ ํ๋ค.
- AWS ๋ฑ์ ์ธ์คํด์ค ์๋ฒ๋ก ์ ํจ์ค๋ฅผ ์ค์นํ๋ฉด ํด๋น ์ธ์คํด์ค ์ฃผ์๊ฐ ๋์จ๋ค๊ณ ํ๋ค.
- ๋๋ ๋ก์ปฌ์์ ํ ์คํธ๋ฅผ ์งํํ๋ ๊ทธ๋๋ก ๋๊ฒ ๋ค.
๋ก๊ทธ์ธ ์
- ์์์ ๋ง๋ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํ ์ ์๋ค.
โจ๏ธ ์คํ๋ง๋ถํธ ์๋ฒ ์ธํ
- ์ ํจ์ค์ฉ ์๋ฒ๋ฅผ ํ๋ ๋ง๋ค์ด์ค๋ค.
- localhost:8080์ผ๋ก ์ ์ํ๋ฉด get ์์ฒญ์ ๊ธฐ๋ณธ์ผ๋ก ์์ ๋ฆฌํด ๋ฌธ์์ด์ด ํ๋ฉด์ ์ถ๋ ฅ๋๋ค.
โจ๏ธ github Repository์ ์ฐ๊ฒฐ
- ํ ์คํธ์ฉ ๊นํ๋ธ ๋ ํ์งํ ๋ฆฌ๋ฅผ ์์ฑํ๋ค.
- ๋ ํ์งํ ๋ฆฌ ์ ๊ทผ ๊ถํ์ private๋ก ํ๋๋ฐ ๊ทธ ์ด์ ๋ ์ค๋ฌด์์๋ private ๋ ํ์งํ ๋ฆฌ๋ฅผ ์ ์ฉํ ๊ฒ์ด ๋ถ๋ช
ํ๊ธฐ ๋๋ฌธ์ด๋ค.
- ์๋์ ์ค๋ช ํ๊ฒ ์ง๋ง Private ๋ ํ์งํ ๋ฆฌ๋ Public ๋ ํ์งํ ๋ฆฌ์ ์ ํจ์ค๋ฅผ ์ค์ ํ ๋ ์ฝ๊ฐ ๋ค๋ฅธ ๋ถ๋ถ์ด ์๋ค.
- Public์ผ๋ก ์ค์ ํ์ฌ ํ ์คํธํ ๋๋ถ๋ถ์ ๋ธ๋ก๊ทธ ๊ธ๋ง ๋ณด๊ณ ๋ฐ๋ผ ํ๋ฉด ์๋ฌ๊ฐ ๋๋ค.
โจ๏ธ ๋ก์ปฌ ๋ ํ์งํ ๋ฆฌ์ ์ฐ๊ฒฐ
Initialized empty Git repository in /Users/wonyong/study/jenkinsTest/.git/
wonyong@Wonyongui-MacBookAir:~/study/jenkinsTest$git remote add origin git@github.com:wonyongg/jenkinsTest.git
wonyong@Wonyongui-MacBookAir:~/study/jenkinsTest$git add .
wonyong@Wonyongui-MacBookAir:~/study/jenkinsTest$git commit -m "first commit"
[main (root-commit) c730eb8] first commit
11 files changed, 464 insertions(+)
create mode 100644 forJenkins/.gitignore
create mode 100644 forJenkins/build.gradle
create mode 100644 forJenkins/gradle/wrapper/gradle-wrapper.jar
create mode 100644 forJenkins/gradle/wrapper/gradle-wrapper.properties
create mode 100755 forJenkins/gradlew
create mode 100644 forJenkins/gradlew.bat
create mode 100644 forJenkins/settings.gradle
create mode 100644 forJenkins/src/main/java/test/ForJenkinsApplication.java
create mode 100644 forJenkins/src/main/java/test/MainController.java
create mode 100644 forJenkins/src/main/resources/application.properties
create mode 100644 forJenkins/src/test/java/test/ForJenkinsApplicationTests.java
wonyong@Wonyongui-MacBookAir:~/study/jenkinsTest$git push origin main
- ๋ก์ปฌ ๋ ํ์งํ ๋ฆฌ์ ์ฐ๊ฒฐํ๋ ค๋ฉด …or create a new repository on the command line๊ณผ ์ ๋ด์ฉ์ ์ฐธ๊ณ ํ์ฌ ๋ฐ๋ผํ๋ฉด ๋๋ค.
- ์ ์์ ์ผ๋ก ์ฐ๊ฒฐ๋์๋ค.
๐ ๋ณธ๊ฒฉ์ ์ธ ํ ์คํธ ์์
์์๋ ์ด๋ ๋ค.
- ๊นํ๋ธ ํ ํฐ ์ป๊ธฐ
- ์ ํจ์ค ๊ธฐ๋ณธ ์ค์
- ๊นํ๋ธ ๋ ํ์งํ ๋ฆฌ์ ์ ํจ์ค ์ฐ๊ฒฐ
- Ngrok ์ค์
- ๊นํ๋ธ ๋ ํ์งํ ๋ฆฌ ์นํ ์ค์
- ํ ์คํธ ์ฑ๊ณต ๊ณผ์ : ๋ก์ปฌ์์ ์ปค๋ฐ & ํธ์ํ๋ค -> ๋ก์ปฌ ๋ ํ์งํ ๋ฆฌ์ ์นํ ์ด ์ ํจ์ค์๊ฒ ์ ํธ๋ฅผ ๋ณด๋ธ๋ค. -> ์ ํจ์ค๊ฐ ๋น๋๋ฅผ ์งํํ๋ค.
๐ ๊นํ๋ธ ํ ํฐ ์ป๊ธฐ
- User - Settings์ ๋ค์ด๊ฐ๋ค.
- Developer settings์ ๋ค์ด๊ฐ๋ค.
- Personalaccess tokens - Tokens (classic)์ ๋ค์ด๊ฐ๋ค.
- Generate new Token - Generate new token (classic)์ ๋ค์ด๊ฐ๋ค.
- Note(token ๋ฐ๊ธ ๋ชฉ์ ๊ธฐ๋ก)๊ณผ Expiration์ ์ค์ ํ๋ค.(์์ ์)
- repo , admin:repo_hook์ ์ฒดํฌํ๋ค.
- ํ ํฐ์ ๋ฐํํ๋ค.
- ํ ํฐ์ ๋ณต์ฌํ๋ค.
- ์ฐธ๊ณ ๋ก ์ด ํ ํฐ์ ํ์ด์ง๋ฅผ ๋๊ฐ๋ฉด ๋ค์๋ ๋ณผ ์ ์์ผ๋ฏ๋ก ์ ๋๋ก ๋ณต์ฌํ์.
๐ ์ ํจ์ค ๊ธฐ๋ณธ ์ค์
- ์ ํจ์ค ๋์๋ณด๋์์ Jenkins ๊ด๋ฆฌ๋ฅผ ํด๋ฆญํ๋ค.
- System Configuration -> System์ ํด๋ฆญํ๋ค.
- Add Github Server - Github Server๋ฅผ ํด๋ฆญํ๋ค.
- ์ด๋ฆ์ ์ ํ๊ณ , API URL์ ๊ทธ๋๋ก ๋๋ค.
- Credentials์๋ Add - Jenkins๋ฅผ ํด๋ฆญํ๋ค.
Crederntial - Secret test
- Kind๋ฅผ Secret test๋ก ์ ํํ๋ค๋ฉด public ๋ ํ์งํ ๋ฆฌ์์๋ ๊ทธ๋๋ก ๋น๋ ์ Credential ์ ๋ณด๋ก ์ฌ์ฉํ ์ ์๋ค.
- Secret์ ์์์ ๋ณต์ฌํ ๊นํ๋ธ ํ ํฐ ๊ฐ์ ๋ฃ๋๋ค.
- ID, Description์ ์์ ์ด๋ค. ๋ง๋๋ก ์ ๋๋ค.
- ์ด์ Credentials๋ฅผ ์์์ ์ ํ ID๋ช
์ผ๋ก ๊ณ ๋ฅผ ์ ์๋ค.
- ์ด ์์ ์ ์ฒ์ ํ ๋น์์๋ secret text๋ก ํ ๊ฒฝ์ฐ private ๋ ํ์งํ ๋ฆฌ์ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฑธ ๋ชจ๋ฅด๊ณ secret text๋ก Credential์ ๋ง๋ค์๋ค. private ๋ ํ์งํ ๋ฆฌ์ ๋์ํ๋ ๋ฐฉ๋ฒ์ ์๋์ ์ค๋ช ํด ๋์๋ค.
- ์ค๋ฅธ์ชฝ ํ๋จ์ Test connection์ ํด๋ฆญํ์ฌ Credentials๊ฐ ์ ํจํ์ง ํ์ธํ ์ ์๋ค.
- ์ด์ Apply - Save(์ ์ฅ)์ ๋๋ฅธ๋ค.
๐ ๊นํ๋ธ ๋ ํ์งํ ๋ฆฌ์ ์ ํจ์ค ์ฐ๊ฒฐ
- ์ด์ ๊นํ๋ธ ๋ ํ์งํ ๋ฆฌ์ ์ฐ๊ฒฐํด ๋ณด์.
- ์๋ก์ด Item์ ํด๋ฆญํ๋ค.
- item ์ด๋ฆ์ ๋ง๋ค๊ณ Freestyle project๋ก ์ค์ ํ OK๋ฅผ ๋๋ฅธ๋ค.
- ์ฌ๊ธฐ๋ ๊นํ๋ธ ํด๋ก ํ ์คํธ๊ฐ ์ฃผ ๋ชฉ์ ์ด๋ ๊ฐ์ฅ ๊ฐ๋จํ Freestyle project๋ฅผ ๊ณจ๋๋ค.
- ์ฌ๋ฌ ์ค์ ์ด ์๋๋ฐ ๋ค ๊ฑด๋๋ฐ๊ณ ํ์ํ ๊ธฐ๋ฅ๋ง ์ค์ ํ๊ฒ ๋ค.
- ๋งจ ์ Github project์์ Project Url์ ์ ๋ ฅํ๋ค.
- ์์ค ์ฝ๋ ๊ด๋ฆฌ์์ Git์ ๋๋ฅธ๋ค.
- Repository URL์๋ ์์ Url๊ณผ ๋์ผํ Url์ ์ ๊ณ
- Credential์ Add - Jenkins๋ฅผ ํด๋ฆญํ์ฌ ๋ฑ๋กํด ์ค๋ค.
- Branches to build์์ ๋ธ๋์น ๋ช
์ ์ํ๋ ๋๋ก ์์ ํด ์ค๋ค.
- ๋ง์ฝ ๋ฉ์ธ ๋ธ๋์น๊ฐ master๊ฐ ์๋๋ผ main์ด๋ผ๋ฉด main์ผ๋ก ์์ ํด ์ฃผ์.
- ์์์ ์ธ๊ธํ ๋ด์ฉ์ด๋ค. ์ฌ๊ธฐ์ Public ๋ ํ์งํ ๋ฆฌ๋ผ๋ฉด ์์ Credential์ ์ค์ ํ ๊ฒ์ฒ๋ผ Secret text๋ก Credential์ ๋ฑ๋กํ๋ฉด ๋์ง๋ง, ๋ด๊ฐ ๋ง๋ jenkinsTest๋ Private ๋ ํ์งํ ๋ฆฌ์ด๋ฏ๋ก ์์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
๐ ์๋ฌ ํธ๋ค๋ง
- Private ๋ ํ์งํ ๋ฆฌ๋ ์ ๊ทผ ๊ฐ๋ฅํ๊ฒ ํ๊ธฐ ์ํด์๋ Kind์์ Username with password๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
- Username์ ๊นํ๋ธ์ username Password๋ก๋ ์์์ ๋ง๋ token ๊ฐ์ ๋ฃ์ด์ค๋ค.(username์ ๊ณ์ ๋น๋ฐ๋ฒํธ๊ฐ ์๋๋ค!)
- ์๋ฌ๊ฐ ์ฌ๋ผ์ง ๋ชจ์ต์ ํ์ธํ ์ ์๋ค.
- ๋น๋ ์ ๋ฐ์ Github hook trigger fot GITScm polling์ ์ ํํ๋ค.
- ๋น๋ ์คํญ์ Invoke Gadle script๋ฅผ ์ ํํ๋ค.
- ๊ทธ๋ฆฌ๊ณ ๊ทธ๋๋ค ๋ฒ์ ์ ๊ณจ๋ผ์ผ ํ๋๋ฐ ๋ง์ฝ Default ๋ฐ์ ์๋ค๋ฉด ๋น๋ ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ค.
- ๋ง์ฝ ๋ฒ์ ์ด ์๋ค๋ฉด ๊ทธ๊ฑธ ํด๋ฆญํ์.
- ๋๋ ์๋ฌด๊ฒ๋ ๋์ค์ง ์์ ๋ฐ๋ก ๊ทธ๋๋ค์ ๋ฒ์ ์ ์ค์นํด์ผ ํ๋ค.
- ์ฐ์ ์ฌ๊ธฐ์ ์ ์ฅ์ ํด๋ฆญํ๋ค.
๐ ์๋ฌ ํธ๋ค๋ง
- ๋ฐ์ผ๋ก ๋์ Jenkins ๊ด๋ฆฌ - System Configuration - Tools์ ๋ค์ด๊ฐ๋ค.
- Gradle Installations - Add Gradle์ ํด๋ฆญํ๋ค.
- ์ด๋ฆ์ ์ฐ๊ณ ๋ฒ์ ์ ์ ๋นํ ๊ณจ๋ผ์ค๋ค. ๋๋ ๊ทธ๋ฅ ์ด๋ฆ์ ๋ฒ์ ์ด๋ ๋๊ฐ์ด ์ผ๋ค.
- ์๊น ๋ง๋ item์ ๊ตฌ์ฑ์ ๋ค์ด๊ฐ ๊ทธ๋๋ค ๋ฒ์ ์ ์ ํ๊ณ ์ ์ฅํ๋ค.
๐ ๊นํ๋ธ ์นํ ์ค์
- ์ค์ ํด ๋์ ๊นํ๋ธ ๋ ํ์งํ ๋ฆฌ์ ๋ค์ด๊ฐ Settings - Webhooks - add webhook์ ํด๋ฆญํ๋ค.
- ์, ์ฌ๊ธฐ์ Payload URL์ ํธ์คํ ๋์ด์๋ ๋งํฌ๋ฅผ ๊ฑธ์ด์ผ ํ๋ค.
- ๋ง์ฝ AWS์ ๊ฐ์ ํด๋ผ์ฐ๋๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์ ํจ์ค๊ฐ ์ค์น๋์ด ์๋ ์ธ์คํด์ค ์ฃผ์๋ฅผ ์ ์ผ๋ฉด ๋์ง๋ง ๋ก์ปฌ ํ๊ฒฝ์์๋ ๋ถ๊ฐ๋ฅํ๋ฏ๋ก Ngrok์ ์ด์ฉํ๋ค.
- Ngrok์ด ๋ญ์ง ๋ชจ๋ฅด๋ฉด ๊ตฌ๊ธ๋ง์ ํตํด ์์๋ณด์
- ๋ค์ด๋ก๋ํ๊ณ ๋ช ๋ น์ด ํ๋์น๊ณ ๊ตฌ๊ธ ๊ณ์ ์ผ๋ก ๊ฐ์ ํ๋ฉด 3๋ถ ๋ง์ ๋ก์ปฌ ์๋ฒ๋ฅผ ์ธ๋ถ์ ๋ฌด๋ฃ๋ก ํธ์คํ ํ ์ ์๋ค.
๐ก Ngrok ์ค์
wonyong@Wonyongui-MacBookAir:~/study/jenkinsTest$docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
291cbb2ddcda jenkins/jenkins:lts-jdk11 "/usr/bin/tini -- /u…" 3 days ago Up 2 hours 0.0.0.0:50000->50000/tcp, 0.0.0.0:18080->8080/tcp jenkins
- Ngrok์ ๋ค์ด๋ก๋ํ๋ค.
- ์ฒ์ ์ฌ์ฉํ๋ฉด ์๋ง ๊ฐ์ ํ๋ผ๊ณ ํ ํ ๋ฐ ๊ทธ๋ ๊ตฌ๊ธ ๋ก๊ทธ์ธ์ผ๋ก ๊ฐ์ ํ๊ณ ์ธ์ฆ ํ ํฐ์ ์ ๋ ฅํด๋ฉด ๋์ด๋ค. ๋งค์ฐ ๊ฐ๋จํ๋ค.
- ๋์ ๊ฒฝ์ฐ jenkins๊ฐ ๋์ปค ์ปจํ ์ด๋๋ก ๋์์ ธ ์์ผ๋ฏ๋ก Ngrok์ด 18080 ํฌํธ๋ฅผ ํตํด ๋ก์ปฌ์์ ์ ํจ์ค ๋์ปค ์ปจํ ์ด๋๋ก ๋ค์ด๊ฐ ์ ํจ์ค ์๋ฒ๋ฅผ ๊นํ๋ธ ๋ ํ์งํ ๋ฆฌ์ webhook์ผ๋ก ์ฐ๊ฒฐํ๋๋ก ํ ๊ฒ์ด๋ค.
- ๋ก์ปฌ์ ์ ํจ์ค๋ฅผ ์คํ์ํค๊ณ ์๋ค๊ณ ํด๋ ์ฐจ์ด๊ฐ ์๋ค ๊ธฐ๋ณธ ํฌํธ๋ 8080์ผํ ๊ณ , ์์์ ํฌํธ๋ฅผ ๋ณ๊ฒฝ ํ๋ค๋ฉด ๋ณ๊ฒฝํ ์ ํจ์ค ํฌํธ๋ฅผ ์ฐ๊ฒฐ์ํค๋ฉด ๋๋ค.
wonyong@Wonyongui-MacBookAir:~/study/jenkinsTest$ngrok http 18080
ngrok (Ctrl+C to quit)
Build better APIs with ngrok. Early access: ngrok.com/early-access
Session Status online
Account kakaohwy@gmail.com (Plan: Free)
Version 3.4.0
Region Japan (jp)
Latency -
Web Interface http://127.0.0.1:4040
Forwarding https://dad8-222-109-220-21.ngrok-free.app -> http://localhost:18080
Connections ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
- ngrok http (์ ํจ์ค ํฌํธ) ๋ช ๋ น์ด๋ฅผ ํตํด ๋ก์ปฌ ์ ํจ์ค ์ปจํ ์ด๋๋ฅผ ํธ์คํ ํ๋ ๋ฐ ์ฑ๊ณตํ๋ค.
- ์ ๋งํฌ์ ์ ์ํ๋ฉด ngrok์์ ๋ง๋ค์ด๋์ ํ์ด์ง๊ฐ ๋์ค๋๋ฐ Visit Site๋ฅผ ๋๋ฅด๋ฉด ์ ํจ์ค ํ์ด์ง๋ก ๋ค์ด๊ฐ์ง๋ค.
- ์ฒ์์ ์ด ํ์ด์ง ๋๋ฌธ์ ์นํ ์ด ์ ๋๋ก ์๋ํ ๊น ์ถ์์ง๋ง ์ ๋๋ก ์๋ํ๋ ๋ฌด์ํด๋ ์ข๋ค.
โจ๏ธ ์นํ ์ค์ ๋ง๋ฌด๋ฆฌ
- webhook ์ค์ ์ผ๋ก ๋์๊ฐ Ngrok์ผ๋ก๋ถํฐ ๋ฌด๋ฃ๋ก ๋ฐ์ ๋๋ฉ์ธ ์ฃผ์๋ฅผ ๋ฃ๊ณ /github-webhook/์ ๋ถ์ฌ์ฃผ์.
- /๋ฅผ ๋นผ๋จน์ผ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค๊ณ ํ๋ ์ฃผ์ํ์.
- Add webhook์ ๋๋ฅธ๋ค.
- ์ ์์ ์ผ๋ก ๋ฑ๋ก๋์๋ค. ์ด์ ํ ์คํธํด๋ณด์.
๐ ๊นํ๋ธ ๋ ํ์งํ ๋ฆฌ -> ์ ํจ์ค ์ปจํ ์ด๋ ํด๋ก ํ ์คํธ
- ๋ฌธ๊ตฌ๋ฅผ ์์ ํ๊ณ ์ปค๋ฐ & ํธ์ํด ๋ณด์.
- ๋น๋ ์ฑ๊ณตํ๋ค!
๐ ๋์ปค ์ ํจ์ค ์ปจํ ์ด๋ ๋ด ์ํฌ์คํ์ด์ค ํ์ธ
- ์ปจํ
์ด๋ ๋ด๋ถ์ ์ํฌ์คํ์ด์ค์ forJenkins๋ผ๋ ์ด๋ฆ์ผ๋ก ํ์ผ์ด ์์ฑ๋์๋ค.
- ๋ก์ปฌ์์๋ mac ๊ธฐ์ค /User/<user ๋ช >/.jenkins/workspace ํด๋์ ์์ ๊ฒ์ด๋ค.
- ์ ์์ ์ผ๋ก ๊นํ๋ธ ๋ ํ์งํ ๋ฆฌ์ ์ ๋ก๋ ํ์ผ๋ค์ด ์ ํจ์ค ์ปจํ ์ด๋ ๋ด ์ํฌ์คํ์ด์ค ํด๋์ ํด๋ก (clone)๋์์์ ํ์ธํ ์ ์๋ค.
์ฐธ๊ณ
๋คผํผ
https://hyunminh.github.io/nonstop-deploy/
https://stackoverflow.com/questions/8646762/cannot-run-program-gradle-in-jenkins
728x90