ν˜„μž¬ νšŒμ‚¬μ˜ 개발 μ‘°μ§μ—μ„œλŠ” ν•˜λ‚˜μ˜ λͺ¨λ†€λ¦¬μ‹ ν”„λ‘œμ νŠΈλ₯Ό λ‹€μ–‘ν•œ ν™˜κ²½μ„ μœ„ν•΄μ„œ λΉŒλ“œ 및 λ°°ν¬ν•˜κ³  μžˆλ‹€. 그리고 λΉŒλ“œμ™€ 배포λ₯Ό μœ„ν•΄μ„œ ν•˜λ‚˜μ˜ λ§ˆμŠ€ν„°λ‘œ λ™μž‘ν•˜λŠ” μ  ν‚¨μŠ€ μ„œλ²„λ₯Ό κ΅¬μ„±ν•˜μ—¬ μ‚¬μš©ν•˜κ³  있고 ν•˜λ‚˜μ˜ μ„œλ²„μ—μ„œ λΉŒλ“œλ₯Ό μˆ˜ν–‰ν•΄λ„ 무방할 만큼 μ„œλΉ„μŠ€ 규λͺ¨κ°€ ν¬κ±°λ‚˜ μ‹œμŠ€ν…œμ— λŒ€ν•œ 배포가 자주 μˆ˜ν–‰λ˜μ§„ μ•ŠκΈ°μ— 단일 λΉŒλ“œ μ„œλ²„λ‘œ μš΄μš©ν•΄λ„ μΆ©λΆ„ν•˜λ‹€κ³  λ³Ό 수 μžˆλ‹€. κ°œμΈμ μœΌλ‘œλŠ” 인터넷에 곡유된 글듀을 톡해 λŒ€λΆ€λΆ„μ˜ νšŒμ‚¬μ—μ„œλŠ” ν”„λ‘œλ•μ…˜μ„ μœ„ν•œ λΉŒλ“œ ν™˜κ²½μ„ μœ„ν•΄ λ‹€μ–‘ν•œ CI/CD 도ꡬ듀을 ν™œμš©ν•˜κΈ°λ„ ν•˜κ³  μ  ν‚¨μŠ€ μ„œλ²„μ— λŒ€ν•΄ 컨트둀러(λ§ˆμŠ€ν„°)와 μ—μ΄μ „νŠΈ(슬레이브)둜 κ΅¬μ„±λ˜λŠ” ν΄λŸ¬μŠ€ν„°(λΆ„μ‚° λΉŒλ“œ ν™˜κ²½)으둜 κ΅¬μ„±ν•œλ‹€λŠ” 것을 μ•Œκ³  μžˆμ—ˆλ‹€.

μ»¨νŠΈλ‘€λŸ¬μ™€ μ—μ΄μ „νŠΈλ‘œ λ™μž‘ν•˜λŠ” λΉŒλ“œ ν™˜κ²½μ„ λ§Œλ“€μ–΄μ•Όν•˜λŠ” μš”κ΅¬μ‚¬ν•­μ΄ ν•„μš”ν•˜κ²Œ 된 건 λΆ„μ‚° λΉŒλ“œμ˜ λͺ©μ λ³΄λ‹€λŠ” μ  ν‚¨μŠ€ μ„œλ²„κ°€ Amazon Linux 2 AMI μ΄λ―Έμ§€λ‘œ μ‹€ν–‰λœ EC2 μ„œλ²„μ— μ„€μΉ˜λ˜μ—ˆκΈ° λ•Œλ¬Έμ— Node.js 18 LTS 버전을 μ§€μ›ν•˜μ§€ μ•ŠλŠ” μ œμ•½μ‚¬ν•­μ΄ λ°œμƒν–ˆκΈ° λ•Œλ¬Έμ΄λ‹€. 일뢀 ν™˜κ²½μ— λŒ€ν•΄μ„œ 인수 ν…ŒμŠ€νŠΈλ₯Ό ν†΅ν•œ ν’ˆμ§ˆ κ°•ν™”λ₯Ό μœ„ν•΄μ„œ Jestλ₯Ό λ„μž…ν•˜κ²Œ λ˜λ©΄μ„œ Node.js 12 λ˜λŠ” 14 LTS에 μ˜μ‘΄ν–ˆλ˜ 것을 Node.js 18 LTS둜 ν˜Έν™˜μ„± 버전을 올리고자 ν–ˆκΈ° λ•Œλ¬Έμ΄λ‹€. (Node.js 16 λ˜λŠ” 18 LTS 버전을 ν˜Έν™˜μ„± λ²”μœ„λ‘œ μ²΄ν¬ν–ˆλ‹€.)

Node.js 14도 ν˜Έν™˜μ„± 버전 후보에 μžˆμœΌλ‚˜ ARM μ•„ν‚€ν…μ²˜λ‘œ λ™μž‘ν•˜λŠ” M1 λ˜λŠ” M2 λ§₯ ν™˜κ²½μ—μ„œ Node.js 14 LTSλŠ” 곡식 λΉŒλ“œκ°€ ν¬ν•¨λ˜μ–΄μžˆμ§€ μ•ŠκΈ° λ•Œλ¬Έμ— Using NodeJs 14 with Mac Silicon (M1)와 같은 정보듀을 μ°Έκ³ ν•΄μ„œ 터미널이 AMD 64 μ•„ν‚€ν…μ²˜λ‘œ λ™μž‘ν•˜λ„λ‘ λ³€κ²½ν•΄μ„œ μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” λΆˆνŽΈν•¨μ— μ˜ν•΄ μ œμ™Έμ‹œμΌ°λ‹€.

μ  ν‚¨μŠ€ μ„œλ²„λ₯Ό Amzon Linux 2023 λ˜λŠ” Ubuntu 20.24 μ΄μƒμ˜ EC2 μ„œλ²„λ‘œ μ΄κ΄€ν•˜λŠ” 방법도 μžˆμ§€λ§Œ μ  ν‚¨μŠ€ μ„œλ²„λ₯Ό 지원 μ’…λ£Œλ˜λŠ” AL1μ—μ„œ Amazon Linux 2둜 μ΄κ΄€ν•œ 지 μ–Όλ§ˆλ˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ— 인프라 μ—”μ§€λ‹ˆμ–΄μ—κ²Œ μš”μ²­ν•˜λŠ” 것은 λΉ„νš¨μœ¨μ μ΄λ‹€λΌλŠ” 생각이 λ“€μ—ˆκΈ° λ•Œλ¬Έμ΄λ‹€. ꡳ이 μ  ν‚¨μŠ€ μ„œλ²„λ₯Ό μƒˆλ‘œμš΄ EC2 μ„œλ²„λ‘œ μž¬κ΅¬μ„±ν•˜κ±°λ‚˜ μ»¨ν…Œμ΄λ„ˆ 기반으둜 μ‹€ν–‰ν•˜μ§€ μ•Šμ•„λ„ λΆ„μ‚° λΉŒλ“œ ν™˜κ²½μœΌλ‘œ μ œκ³΅ν•˜λŠ” μ—μ΄μ „νŠΈ(λ…Έλ“œλ‚˜ ν΄λΌμš°λ“œ) κΈ°λŠ₯으둜 λ³„λ„μ˜ μ„œλ²„λ‚˜ μ»¨ν…Œμ΄λ„ˆμ—μ„œ λΉŒλ“œλ₯Ό μˆ˜ν–‰ν•˜λŠ” 것을 μ§€μ›ν•˜κΈ° λ•Œλ¬Έμ— ν΄λŸ¬μŠ€ν„° ꡬ성을 μ‹œλ„ν•˜κ³ μž ν•œλ‹€.

μ  ν‚¨μŠ€ λΆ„μ‚° λΉŒλ“œ ν™˜κ²½μ„ κ΅¬μ„±ν•΄λ³΄λŠ” 것은 쒋은 κ²½ν—˜μ΄μ—ˆλ‹€κ³  μƒκ°λ˜λ‚˜ λ³„λ„μ˜ μ„œλ²„μ—μ„œ ν”„λ‘œμ νŠΈ λΉŒλ“œλ₯Ό μˆ˜ν–‰ν•  수 μžˆλ„λ‘ μ„€μ •ν•˜κΈ° κΉŒμ§€ 생각보닀 μ–΄λ €μ› λ‹€. μ΄λŸ¬ν•œ 이유둜 λΉŒλ“œμ— μ„±κ³΅ν•˜κΈ°κΉŒμ§€μ˜ κ³Όμ •μ—μ„œ λ°œμƒν•œ λ¬Έμ œλ“€μ„ κΈ°λ‘ν•΄λ³΄κ³ μž ν•œλ‹€.

μ  ν‚¨μŠ€ 관리 > Nodes and Clouds

λΆ„μ‚° λΉŒλ“œ ν™˜κ²½μ˜ μ  ν‚¨μŠ€ ν΄λŸ¬μŠ€ν„°λ₯Ό κ΅¬μ„±ν•˜λŠ” 것은 μ  ν‚¨μŠ€ κ΄€λ¦¬μ—μ„œ Nodes and Clouds 메뉴λ₯Ό 톡해 μˆ˜ν–‰ν•  수 μžˆλ‹€. μ—μ΄μ „νŠΈλ₯Ό λ“±λ‘ν•˜λŠ” 방식에 따라 λ…Έλ“œλŠ” λ¦¬λˆ…μŠ€ μ„œλ²„ λ˜λŠ” VM λ¨Έμ‹ μ—μ„œ λΉŒλ“œλ₯Ό μˆ˜ν–‰ν•˜κ³  ν΄λΌμš°λ“œλŠ” 도컀 μ»¨ν…Œμ΄λ„ˆ λ˜λŠ” μΏ λ²„λ„€ν‹°μŠ€μ™€ 같은 ν™˜κ²½μœΌλ‘œ λΉŒλ“œλ₯Ό μˆ˜ν–‰ν•˜λŠ” 것이라고 μƒκ°ν•˜λ©΄ λœλ‹€. μ  ν‚¨μŠ€ μ„œλ²„κ°€ EC2에 μ„€μΉ˜λ˜μ–΄μžˆλ‹€κ³  ν•˜λ”λΌλ„ EC2에 도컀 엔진과 μ»¨ν…Œμ΄λ„ˆκ°€ μ„€μΉ˜λ˜μ–΄μžˆλ‹€λ©΄ 도컀 μ—”μ§„μ˜ μœ λ‹‰μŠ€ 도메인 μ†ŒμΌ“μ„ 톡해 ν΄λΌμš°λ“œ μ—μ΄μ „νŠΈλ₯Ό 등둝할 수 μžˆλ‹€.

λ…Έλ“œ μ—μ΄μ „νŠΈλ₯Ό λ“±λ‘ν•˜λŠ” λ°©λ²•μ—λŠ” μ  ν‚¨μŠ€ μ„œλ²„μ—μ„œ SSH와 같은 λ°©μ‹μœΌλ‘œ 연결을 κ΄€λ¦¬ν•˜λŠ” 것과 λ³„λ„μ˜ μœˆλ„μš°λ‚˜ λ¦¬λˆ…μŠ€ μ„œλ²„μ™€ 같은 κ³³μ—μ„œ μ‹€ν–‰λœ λ…Έλ“œ μ—μ΄μ „νŠΈκ°€ μ  ν‚¨μŠ€ μ„œλ²„μ— νŠΉμ • 포트λ₯Ό μ‚¬μš©ν•˜μ—¬ 연결을 μš”κ΅¬ν•˜λŠ” λ°©μ‹μœΌλ‘œ λ‚˜λˆ„μ–΄μ§„λ‹€. μ  ν‚¨μŠ€ μ„œλ²„μ— Elastic IPκ°€ ν• λ‹Ήλ˜μ–΄μžˆμœΌλ―€λ‘œ ꡳ이 VPC κ°„ 연결을 μˆ˜ν–‰ν•  수 μžˆλ„λ‘ μž‘μ—…μ„ ν•˜μ§€ μ•Šλ”λΌλ„ λ…Έλ“œ μ—μ΄μ „νŠΈμ—μ„œ μ  ν‚¨μŠ€ μ„œλ²„μ— TCP 연결을 μˆ˜ν–‰ν•  수 μžˆλ„λ‘ μΈλ°”μš΄λ“œ κ·œμΉ™λ§Œ μ„€μ •ν•˜λ©΄ λ˜λŠ” κ°„λ‹¨ν•œ 방식이라 ν›„μžλ₯Ό μ„ νƒν–ˆλ‹€. λ…Έλ“œ μ—μ΄μ „νŠΈκ°€ 싀행될 μ„œλ²„λŠ” 였λ₯˜ νŠΈλž˜ν‚Ή μ‹œμŠ€ν…œμ΄ κ΅¬λ™λ˜λŠ” μ„œλ²„λ‘œ 미달 ν”„λ‘œλΉ„μ €λ‹ μƒνƒœλ‘œ 보고된 EC2(Amazon Linux 2023으둜 μ‹€ν–‰λœ μœ μΌν•œ EC2)λ₯Ό λ…Έλ“œλ‘œ μΆ”κ°€ν•˜κΈ°λ‘œ ν–ˆλ‹€.

Launch method β†’ Launch agent by connecting it to the controller

μžλ°”λ‘œ μ‹€ν–‰λ˜λŠ” λ…Έλ“œ μ—μ΄μ „νŠΈμ—μ„œ 컨트둀러(λ§ˆμŠ€ν„°)에 μ—°κ²°ν•˜λŠ” λ°©μ‹μœΌλ‘œ λ…Έλ“œ μ—μ΄μ „νŠΈμ—μ„œ μ  ν‚¨μŠ€ μ„œλ²„μ— μ—°κ²°ν•  수 μžˆλŠ” TCP 포트λ₯Ό μš”κ΅¬ν•˜λ―€λ‘œ μ  ν‚¨μŠ€ 관리 > Security λ©”λ‰΄μ˜ Agents ν•­λͺ©μ—μ„œ TCP port for inbound agents에 λŒ€ν•œ 섀정을 Fixed둜 μ„ νƒν•˜μ—¬ 50000번 포트둜 μž…λ ₯ν–ˆλ‹€. μ  ν‚¨μŠ€ μ„œλ²„μ—μ„œ λ…Έλ“œλ₯Ό μΆ”κ°€ν•˜λ©΄ μ  ν‚¨μŠ€ μ„œλ²„λ‘œ λΆ€ν„° μžλ°” μ—μ΄μ „νŠΈ νŒŒμΌμ„ λ‹€μš΄λ‘œλ“œν•  수 μžˆλŠ” μ—¬λŸ¬κ°€μ§€ λͺ…λ Ήμ–΄λ₯Ό μ œκ³΅ν•΄μ€€λ‹€. λ…Έλ“œ μ—μ΄μ „νŠΈλ₯Ό μ„€μΉ˜ν•˜λ €λŠ” ν™˜κ²½μ— 맞게 λ³΅μ‚¬ν•΄μ„œ ν˜ΈμΆœν•˜λ©΄ λœλ‹€.

μ  ν‚¨μŠ€ μ„œλ²„μ— μžλ°” μ—μ΄μ „νŠΈκ°€ μ—°κ²°ν•  수 μžˆλ„λ‘ λ³΄μ•ˆ 그룹에 TCP 50000번 포트λ₯Ό μΈλ°”μš΄λ“œ κ·œμΉ™μœΌλ‘œ μΆ”κ°€ν•΄μ•Ό ν•œλ‹€. λ˜ν•œ, 일반적으둜 λ…Έλ“œ μ—μ΄μ „νŠΈλ₯Ό μ—°κ²°ν•˜λŠ” ν¬νŠΈκ°€ 50000λ²ˆμ„ μ‚¬μš©ν•˜λŠ” κ²ƒμœΌλ‘œ μ•Œλ €μ Έ μžˆκΈ°μ— λ³΄μ•ˆμ μΈ 관점을 λ‘μ–΄μ•Όν•œλ‹€λ©΄ λ³„λ„μ˜ 포트λ₯Ό μ§€μ •ν•˜λŠ” 것을 μΆ”μ²œν•œλ‹€.

Usage β†’ Only build jobs with label expressions matching this node

λ…Έλ“œ μ—μ΄μ „νŠΈλ₯Ό μΆ”κ°€ν•˜λŠ” μ΄μœ λŠ” λΆ„μ‚° λΉŒλ“œμ˜ λͺ©μ μ΄ μ•„λ‹Œ Node.js 18 LTSλ₯Ό μ‚¬μš©ν•˜μ—¬ ν”„λ‘ νŠΈμ—”λ“œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ½”λ“œλ₯Ό λΉŒλ“œν•˜μ—¬ 배포할 수 μžˆλŠ” ν™˜κ²½μ„ λ§Œλ“€κ³ μž 함에 μžˆμœΌλ―€λ‘œ 기쑴에 λ™μž‘ν•˜λ˜ ν”„λ‘œμ νŠΈλ“€μ€ κ·ΈλŒ€λ‘œ μ  ν‚¨μŠ€ μ„œλ²„μ—μ„œ μˆ˜ν–‰ν•  수 μžˆλ„λ‘ νŠΉμ • ν”„λ‘œμ νŠΈμ—μ„œ λ³„λ„λ‘œ 라벨을 μ§€μ •ν•˜μ—¬μ•Όλ§Œ ν•΄λ‹Ή λ…Έλ“œλ₯Ό 톡해 λΉŒλ“œλ₯Ό μˆ˜ν–‰ν•  수 μžˆλ„λ‘ ν•˜μ˜€λ‹€. μ  ν‚¨μŠ€ μ„œλ²„μ— λ…Έλ“œ μ—μ΄μ „νŠΈλ₯Ό μΆ”κ°€ν•˜λŠ” κ³Όμ •μ—μ„œλ„ 일뢀 ν”„λ‘œμ νŠΈκ°€ λΉŒλ“œλ  κ°€λŠ₯성이 μžˆμœΌλ―€λ‘œ 잘λͺ»λœ ν™˜κ²½μ—μ„œ λΉŒλ“œλ˜μ–΄ λ°°ν¬λ˜λŠ” 것을 λ§‰κ³ μžν•˜λŠ” μ΅œμ†Œν•œμ˜ μ‘°μΉ˜μ΄λ‹€.

Clouds > Docker Cloud details

λ…Έλ“œκ°€ μ•„λ‹Œ 도컀 μ»¨ν…Œμ΄λ„ˆ ν™˜κ²½μ—μ„œ λΉŒλ“œλ₯Ό μˆ˜ν–‰ν•˜κ³ μž ν•˜λŠ” 경우 ν΄λΌμš°λ“œλ₯Ό 톡해 도컀 μ—μ΄μ „νŠΈλ₯Ό λ“±λ‘ν•˜λ©΄ λœλ‹€. μ•žμ„œ μ–ΈκΈ‰ν–ˆλ“―μ΄ μ  ν‚¨μŠ€ μ„œλ²„ 내에 μ„€μΉ˜ν•œ 도컀 엔진에 μ—°κ²°ν•˜κ³ μž ν•˜λŠ” 경우 μœ λ‹‰μŠ€ 도메인 μ†ŒμΌ“ λ°©μ‹μ˜ unix:///var/run/docker.sock을 μ§€μ •ν•˜λ©΄ 되며 λ³„λ„μ˜ μ„œλ²„μ˜ 도컀 엔진에 μ—°κ²°ν•˜κ³ μž ν•˜λŠ” κ²½μš°μ—λŠ” ν•΄λ‹Ή μ„œλ²„μ—μ„œ 도컀 엔진을 μ‹€ν–‰ν•  λ•Œ TCP 연결을 μˆ˜ν–‰ν•  수 μžˆλ„λ‘ μ•„λž˜μ™€ 같이 μ„œλΉ„μŠ€λ₯Ό μˆ˜μ •ν•˜κ³  λ‹€μ‹œ μ‹€ν–‰ν•΄μ•Όν•œλ‹€.

vi /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

sudo systemctl daemon-reload
sudo service docker restart

curl http://localhost:2375/version

λ§Œμ•½, λ¦¬λˆ…μŠ€ μ„œλ²„κ°€ μ•„λ‹Œ μœˆλ„μš° λ˜λŠ” λ§₯ ν™˜κ²½μ˜ 도컀 λ°μŠ€ν¬νƒ‘μ—μ„œλŠ” TCP 연결을 ν™œμ„±ν™”ν•  방법이 없을 수 μžˆμœΌλ‹ˆ λ³„λ„μ˜ 방법을 찾아보아야 ν•œλ‹€. λ§₯의 경우 socat을 톡해 TCP와 μœ λ‹‰μŠ€ 도메인 μ†ŒμΌ“μ„ μ—°κ²°ν•˜λŠ” 우회 방법이 μžˆλŠ” 것 κ°™λ‹€.

도컀 μ—μ΄μ „νŠΈ 이미지 (Optional)

μ²˜μŒμ—λŠ” 도컀 μ—μ΄μ „νŠΈλ₯Ό μΆ”κ°€ν•˜κ³ λ‚˜μ„œ μ—μ΄μ „νŠΈ ν…œν”Œλ¦Ώμ„ λ“±λ‘ν•˜λŠ” κ³Όμ •μ—μ„œ μ—μ΄μ „νŠΈ 이미지λ₯Ό jenkins/agentλ₯Ό μ‚¬μš©ν•˜λ„λ‘ ν–ˆμœΌλ‚˜ μ‹€μ œλ‘œ ν”„λ‘œμ νŠΈλ₯Ό λΉŒλ“œν•˜λ €λŠ” κ³Όμ •μ—μ„œ 일뢀 νŒ¨ν‚€μ§€κ°€ μ—†μ–΄μ„œ 였λ₯˜κ°€ λ°œμƒν•¨μ— 따라 jenkins/agent:jdk17λ₯Ό 베이슀둜 ν•˜μ—¬ λ³„λ„μ˜ μ—μ΄μ „νŠΈ 이미지λ₯Ό λ§Œλ“€μ–΄μ„œ μ‚¬μš©ν•΄μ•Όν–ˆλ‹€.

Dockerfile
FROM jenkins/agent:jdk17 USER root RUN apt-get update \ && apt-get install build-essential python3 -y USER jenkins

μœ„ μ΄λ―Έμ§€λŠ” μ‚¬μš©μ€‘μΈ λΌμ΄λΈŒλŸ¬λ¦¬μ— 따라 g++ λ˜λŠ” python3 λ₯Ό 찾을 수 μ—†λ‹€λŠ” 였λ₯˜κ°€ λ°œμƒν•˜μ—¬ μΆ”κ°€ν•œ κ²ƒμœΌλ‘œ μ‘°μ§μ—μ„œ μ‚¬μš©ν•˜λŠ” 도컀 ν—ˆλΈŒ κ³„μ •μ˜ 퍼블릭 λ¦¬νŒŒμ§€ν† λ¦¬μ— 올렸으며 프라이빗 ν™˜κ²½μ΄λΌλ©΄ Registry Authentication 섀정이 μš”κ΅¬λœλ‹€.

μ  ν‚¨μŠ€ 관리 > Security > Git Host Key Verification configuration

ν”„λ‘œμ νŠΈμ—μ„œ λΉŒλ“œν•  μ†ŒμŠ€μ½”λ“œλ₯Ό κ°€μ Έμ˜€κΈ° μœ„ν•΄ 깃을 μ‚¬μš©ν•˜λŠ” 경우 SSH Host Key verification의 Host Key Verification Strategyκ°€ Known hosts file이 기본값인 κ΄€κ³„λ‘œ 슬레이브 λ…Έλ“œ μ—μ΄μ „νŠΈλ‚˜ ν΄λΌμš°λ“œλ‘œ μΆ”κ°€ν•œ 도컀 μ—μ΄μ „νŠΈμ—μ„œ λΉŒλ“œλ₯Ό μˆ˜ν–‰ν•˜λŠ” 경우 No ECDSA host key is known for github.com and you have requested strict checking. Host key verification failed. 와 같은 였λ₯˜κ°€ λ°œμƒν•  수 μžˆλ‹€.

git ls-remote -h git@github.com:[user]/[project].git HEAD

λ…Έλ“œ λ¨Έμ‹ μ΄λ‚˜ 도컀 μ—μ΄μ „νŠΈλ‘œ μ‹€ν–‰λ˜λŠ” μ»¨ν…Œμ΄λ„ˆμ— ~/.ssh/known_hosts 파일이 μ—†κΈ° λ•Œλ¬Έμ΄λ©° μœ„μ™€ 같이 κΉƒν—ˆλΈŒ ν˜ΈμŠ€νŠΈμ— λŒ€ν•œ 지문을 μ΅œμ†Œν•œ ν•œλ²ˆμ΄λΌλ„ μΆ”κ°€ν•˜μ—¬ known_hosts νŒŒμΌμ„ λ§Œλ“œλŠ” 것이 μš”κ΅¬λ  수 μžˆλ‹€. λ§Œμ•½, 도컀 μ—μ΄μ „νŠΈμ—μ„œ 도컀 μ»¨ν…Œμ΄λ„ˆλ₯Ό λ§Œλ“œλŠ” 경우 μœ„ λͺ…λ Ήμ–΄λ₯Ό μˆ˜ν–‰ν•  수 없기에 도컀 μ—μ΄μ „νŠΈλ‘œ μ—°κ²°λ˜λŠ” μ„œλ²„μ—μ„œ μœ„ λͺ…λ Ήμ–΄λ₯Ό μˆ˜ν–‰ν•œ ν›„ 마운트 μ˜΅μ…˜μ„ 톡해 known_hosts νŒŒμΌμ„ μ „λ‹¬ν•˜λ„λ‘ μ„€μ •ν•˜λŠ” 것도 방법이닀.

Container settings > Mounts

μœ„μ™€ 같이 Docker Agent Templatesλ₯Ό λ“±λ‘ν•˜λŠ” μ„€μ •μ—μ„œ Container settings > Mounts μ˜΅μ…˜μ„ 톡해 μœ„ λͺ…λ Ήμ–΄λ‘œ λ§Œλ“€μ–΄μ§„ known_hosts νŒŒμΌμ„ κ³΅μœ ν•  수 μžˆλ„λ‘ type=bind,src=/home/ec2-user/.ssh,dst=/home/jenkins/.ssh와 같은 λ°©μ‹μœΌλ‘œ μž…λ ₯ν•˜λ©΄ λœλ‹€.

μ  ν‚¨μŠ€ μ„œλ²„μ˜ λΆ„μ‚° λΉŒλ“œ ν™˜κ²½ ꡬ성에 λŒ€ν•œ νŠœν† λ¦¬μ–Όμ€ μ•„λ‹ˆκΈ° λ•Œλ¬Έμ— μƒλž΅ν•œ 정보가 λ§Žμ„ 수 μžˆμ§€λ§Œ μΌλΆ€μ˜ λ‚΄μš©λ§ŒμœΌλ‘œλ„ 도움이 되기λ₯Ό λ°”λž˜λ³Έλ‹€.