[INFRA] Redmine๊ณผ Git ์—ฐ๋™

2022. 10. 27. 16:22ใ†System ์ž‘์—…์‹ค/Server ๊ด€๋ จ

728x90
๋ฐ˜์‘ํ˜•

 

 

 

 

Redmine Cookbook

COUPANG

www.coupang.com

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."




๐Ÿ—‚ ๋ชฉ์ฐจ

โ— [INFRA] Ubuntu 22.04 LTS Redmine ์„ค์น˜  
โ— [INFRA] Redmine๊ณผ Git ์—ฐ๋™  
โ— [REDMINE] ์‚ฌ์šฉ ๋ฐฉ๋ฒ•  

 

 

๐Ÿš€ Redmine๊ณผ Gitea ์—ฐ๋™ํ•˜๊ธฐ

    ๐Ÿ”ฝ  ๊ฐœ์š”

        ๐Ÿ“ฆ ์†Œ๊ฐœ

Redmine์€ Project ๊ด€๋ฆฌ ๋„๊ตฌ๋กœ Gitea, GitHup, GitLap๊ณผ ๊ฐ™์€ ํ˜•์ƒ ๊ด€๋ฆฌ ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ์˜ฌ๋ผ๊ฐ„ Source Code ๋“ค์„ ๊ด€๋ฆฌํ•˜๊ณ , Issue Tracker๋ฅผ ํ•  ์ˆ˜ ์žˆ์–ด์š”.

๋‹ค๋งŒ, Jira์™€ ๊ฐ™์ด ํŽธ๋ฆฌํ•˜๊ฒŒ ์‹ค์‹œ๊ฐ„์œผ๋กœ Sync๋Š” ๋˜์ง€ ์•Š๊ณ , ๋ช‡๊ฐ€์ง€ ์ž‘์—…์„ ํ•ด์ค˜์•ผ์ง€ ๋˜๋Š” ๊ฒƒ์ด์—์š”.

์ฃผ๋‹ˆํ•˜๋ž‘์€ Github์ด ์•„๋‹Œ ๋‚ด๋ถ€ Server์— Gitea๋ฅผ ์„ค์น˜ํ•˜๊ณ , ์ด๋ฅผ ํ†ตํ•ด Source Code๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ์–ด์š”.
Gitea ๊ตฌ์„ฑ๋ฒ•์€ ์ด ๊ณณ์— ์ค€๋น„ํ•ด ๋‘์—ˆ์–ด์š”.

 

 

 

    ๐Ÿ”ฝ  Gitea

        ๐Ÿ“ฆ Git ์ €์žฅ์†Œ Clone

์ตœ์ดˆ Gitea์— ์ €์žฅ๋œ Source Code๋ฅผ ๋ฐ›์•„์˜ค๊ธฐ ์œ„ํ•ด Redmine์—์„œ Clone์„ ๋– ์ฃผ์–ด์•ผ ํ•ด์š”.

/usr/src/redmine


Redmine์ด ์„ค์น˜๋œ Directory์—์„œ ์ž‘์—…์„ ํ•ด์ฃผ์–ด์•ผ ํ•ด์š”.

mkdir gitea-clone


๊ทธ๋Ÿฐ ๋’ค gitea์— ์žˆ๋Š” ์—ฌ๋Ÿฌ Source Code๋ฅผ ํ•œ ๊ณณ์—์„œ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด Directory๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์–ด์š”.

 

git config --global credential.helper 'store --file ~/.credentials'
git clone --mirror {git Repository ์ฃผ์†Œ.git}

 


์ตœ์ดˆ git ๊ณ„์ •์„ Clone์„ ํ•  ๋•Œ๋งˆ๋‹ค ์ž…๋ ฅ์„ ํ•ด ์ค„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ณ„์ • ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์œ„ ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด ์ฃผ์—ˆ์–ด์š”.

๊ทธ๋Ÿฐ ๋’ค ์œ„์˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์›ํ•˜๋Š” Repository๋ฅผ Cloneํ•˜์—ฌ ์ค๋‹ˆ๋‹ค.

 


๊ทธ๋Ÿผ ์œ„์™€ ๊ฐ™์ด git์— ์ ‘์† ์ •๋ณด๋ฅผ ๋ฌผ์–ด๋ด์š”.
GitHub์˜ Private์ธ ๊ฒฝ์šฐ Access Token์„ Git Hub์—์„œ ๋ฐœ๊ธ‰ ๋ฐ›์•„์„œ ์ง„ํ–‰ํ•ด์•ผ ํ•ด์š”.

Public Repository๋‚˜, Gitea์ธ ๊ฒฝ์šฐ๋Š” ์œ„์™€ ๊ฐ™์ด ๊ณ„์ •์˜ ID์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ์œผ๋กœ ์ฒ˜๋ฆฌ๊ฐ€ ๋˜๋Š” ๊ฑฐ ๊ฐ™์•„์š”.


ls -al


์›ํ•˜๋Š” Repository๊ฐ€ ์ž˜ Clone ๋œ ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.





    ๐Ÿ”ฝ  Crontab

        ๐Ÿ“ฆ ์ž‘์—… ์Šค์ผ€์ฅด ๋“ฑ๋ก

์ด๋ฒˆ์—๋Š” Gitea์— Source Code๊ฐ€ Update๊ฐ€ ๋˜๋ฉด ์ž๋™์œผ๋กœ Clone์„ ๋œฐ ์ˆ˜ ์žˆ๋„๋ก Shell Script๋ฅผ ๋งŒ๋“ค๊ณ , ํ•ด๋‹น Script๋ฅผ Crontab์„ ์ด์šฉํ•˜์—ฌ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด ์ค„๊ฒŒ์š”.

vim /usr/src/redmine/gitea-clone/clone-gitea.sh

728x90


์œ„์™€ ๊ฐ™์ด Shell Script๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์–ด์š”.

Script ๋‚ด์šฉ์„ ๋ณด๋ฉด ๋จผ์ € Bash Shell์„ ์“ฐ๊ฒ ๋‹ค๊ณ  ์„ ์–ธํ•˜๊ณ , Repository๋ฅผ Cloneํ•œ Directory๊นŒ์ง€ ์ด๋™ํ•˜๋ผ๊ณ  ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋กœ ๋ช…๋ น์–ด๋ฅผ ์ฃผ์—ˆ์–ด์š”.

๊ทธ๋Ÿฐ ๋’ค git ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์›๊ฒฉ์ง€์—์„œ update๋ฅผ ํ•˜๋ผ๊ณ  ๋ช…๋ น์–ด๋ฅผ ์ค€ ๊ฒƒ์ด์—์š”.



์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด์„œ Crontab ์ž‘์—…์„ ํ•ด ์ค„๊ฑฐ์—์š”.

crontab -e

# ๋งŒ์•ฝ Command Not Found Error ๋ฐœ์ƒ ์‹œ
# Ubuntu์˜ ๊ฒฝ์šฐ ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ํ•ด๊ฒฐ
apt-get install -y cron
๋ฐ˜์‘ํ˜•

 


๋ช…๋ น์–ด๋ฅผ ๋ณด๋ฉด ๋งค์ผ ๋งค ๋ถ„๋งˆ๋‹ค /usr/src/redmine/gitea-clone/clone-gitea.sh์„ ์‹คํ–‰ํ•˜๊ณ , ๊ฑฐ๊ธฐ์„œ ๋ฐœ์ƒ๋˜๋Š” ๋‚ด์šฉ๋“ค์€ /usr/src/redmine/gitea-clone-cron.log์— ๋‚จ๊ธฐ๋ผ๋Š” ๋ช…๋ น์–ด์—์š”.

:์„ ํ•˜๊ณ , wq๋กœ ์ €์žฅ์„ ํ•˜๊ณ  ๋‚˜์˜ต๋‹ˆ๋‹ค.



๐Ÿ’ก Crontab

Crontab ๊ธฐ๋ณธ ๋ช…๋ น์–ด

crontab -e

Crontab ์„ค์ •


crontab -l

Crontab ๋‚ด์šฉ ํ™•์ธ 


crontab -r


Crontab ์‚ญ์ œ


์ฃผ๊ธฐ ์„ค์ •

        *                      *                *             *              *
๋ถ„(0-59)  ์‹œ๊ฐ„(0-23) ์ผ(1-31) ์›”(1-12) ์š”์ผ(0-7)


๋งค๋ถ„ test.sh ์‹คํ–‰

* * * * * /home/test.sh



ํŠน์ • ์‹œ๊ฐ„ ์‹คํ–‰
 - ๋งค์ฃผ ๊ธˆ์š”์ผ ์˜ค์ „ 05์‹œ 45๋ถ„ test.sh ์‹คํ–‰

45 5 * * 5 /home/test.sh


๋ฐ˜๋ณต ์‹คํ–‰
 - ๋งค์ผ ๋งค์‹œ 0๋ถ„, 20๋ถ„, 40๋ถ„ ๋งˆ๋‹ค test.sh ์‹คํ–‰

0,20,40 * * * * /home/test.sh


๋ฒ”์œ„ ์‹คํ–‰
 - ๋งค์ผ 01์‹œ 00๋ถ„ ๋ถ€ํ„ฐ 30๋ถ„๊นŒ์ง€ ๋งค ๋ถ„ test.sh ์‹คํ–‰

0-30 1 * * * /home/test.shโ€‹

 

๊ฐ„๊ฒฉ ์‹คํ–‰
 - ๋งค 10๋ถ„๋งˆ๋‹ค test.sh ์‹คํ–‰
*/10 * * * * /home/test.shโ€‹

 

๋ณต์žกํ•œ ์˜ˆ์ œ
 - 5์ผ์—์„œ 6์ผ๊นŒ์ง€ 2์‹œ, 3์‹œ, 4์‹œ์— ๋งค 10๋ถ„๋งˆ๋‹ค test.sh ์‹คํ–‰
*/10 2,3,4, 5-6 * * /home/test.shโ€‹

 

crontab -l


์ž˜ ๋“ฑ๋ก๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.

 


์œ„์™€ ๊ฐ™์ด ๊ด€๋ฆฌ -> ์„ค์ •์—์„œ ํ‘œ์‹œ๋œ ๊ณณ์— ๋ชจ๋“  Chek Box๋ฅผ ํ™œ์„ฑํ™” ํ•ด์ฃผ์–ด์•ผ ํ•ด์š”.

๊ทธ๋Ÿฐ ๋’ค ์ €์žฅ์„ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”.



์œ„์™€ ๊ฐ™์ด Test ์šฉ์œผ๋กœ Project๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด ์ค„๊ฒŒ์š”.




ํ•ด๋‹น Project์— ์ €์žฅ์†Œ -> ์ €์žฅ์†Œ ์ถ”๊ฐ€๋ฅผ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.


 


์œ„์™€ ๊ฐ™์ด ํ˜•์ƒ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์€ Git์œผ๋กœ ํ•ด์ฃผ์„ธ์š”.
์‹๋ณ„์ž๋Š” ์ฃผ๋‹ˆํ•˜๋ž‘์˜ ๊ฒฝ์šฐ ํ•ด๋‹น Project Repository Name์œผ๋กœ ํ•ด์ฃผ์—ˆ์–ด์š”.
๊ทธ๋ฆฌ๊ณ , ํ•ด๋‹น Source Code๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” Directory ๊ฒฝ๋กœ๋ฅผ '์ €์žฅ์†Œ ๊ฒฝ๋กœ'๋กœ ์ง€์ •ํ•ด ์ฃผ๊ณ ,
'๋งŒ๋“ค๊ธฐ'๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์—ˆ๋‹ต๋‹ˆ๋‹ค.




๋งŒ์•ฝ ํ•ด๋‹น ์ €์žฅ์†Œ ์ด๋ฆ„์„ ๋ˆŒ๋ €์„ ๋•Œ, ์œ„์™€ ๊ฐ™์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋‘ ๊ฐ€์˜๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์–ด์š”.

์ฒซ์งธ: redmine์—์„œ ์ €์žฅ์†Œ ์œ„์น˜๋ฅผ ์ž˜ ๋ชป ์ž‘์„ฑํ•œ ๊ฒฝ์šฐ
      - ์ €์žฅ์†Œ ์œ„์น˜๋ฅผ ๋‹ค์‹œ ํ™•์ธํ•˜๊ณ , ์žฌ ์„ค์ •

๋‘˜์งธ: redmine ์„ค์ •์ด ์•„์ง ๋ฐ˜์˜์ด ์•ˆ ๋˜์—ˆ์„ ๊ฒฝ์šฐ
     - Redmine ์—ฐ๊ฒฐ์„ ๋Š๊ณ , ์žฌ์ ‘์† ํ•˜๊ฑฐ๋‚˜, Redmine Server๋ฅผ ์ค‘์ง€ํ•˜๊ณ , ์žฌ ์‹คํ–‰



cat gitea-clone-cron.log


Cron ์„ค์ •์ด ์™„๋ฃŒ ๋˜๋ฉด ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ Cron์„ ์žฌ ์‹œ์ž‘ ํ•ด์ฃผ์–ด์•ผ ํ•ด์š”.

service cron restart


๊ทผ๋ฐ ์œ„์™€ ๊ฐ™์ด Log๋ฅผ ํ™•์ธํ•˜์˜€์„ ๋•Œ, permission denied๊ฐ€ ๋‚˜์˜จ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๊ถŒํ•œ์„ ์ถ”๊ฐ€ํ•ด ์ฃผ๋ฉด ๋˜์š”.


chmod +x /usr/src/redmine/gitea-clone/clone-gitea.sh






์œ„์™€ ๊ฐ™์ด ์ž˜ ์—ฐ๋™ ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.







 

Redmine Cookbook

COUPANG

www.coupang.com

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."

 

 

 

๐Ÿง ์ฐธ๊ณ  ์ž๋ฃŒ

https://20plus3.tistory.com/72

 

 

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•