'Git'에 해당하는 글 16건

Intellij upgrade

Daily/Prog 2019. 8. 27. 21:45

업그레이드 한지 1년 정도된 회사 컴퓨터. 요녀석은 온 첫날부터 블루스크린 기술을 보였었다. 1달에 한번 나타났던 블루스크린이 최근에는 하루에 5번도 나타나 나를 괴롭혔다. 나이가 들며 인내심이 강해진 나는 컴퓨터가 이 지경이 될때까지 참고 또 참았는데 프로젝트 하나가 살짝 끝난 시점에 결국 포맷을 결심했다. 블루스크린을 참았던 것도 각종 프로그램 재설치/재설정 하는게 구찮아서 였는데... 그렇게 해서 거의 1년만에 프로그램들도 버전 업그레이드를 했는데... intellij 가 문제가 됐다.




처음엔  .gitignore  파일이 문제였다. 일단 뭔가 문제가 생긴듯한 저 이상한 아이콘... 인식이 안됐는줄 알고 여기서 2시간 정도 뻘짓. 실제로 새로 pull 받은 파일들임에도 불구하고 git 에 untracked file 들이 수두룩하게 떴음. git 신버전 깔았다가 구버전도 깔았다가, git 이랑 gitignore 플러그인에서 해결될 만한것도 설치해보고 지우고... 하지만 나중에 보니 저 아이콘은 단지 .gitignore 의 새로운... 아이콘일 뿐이고, 문법이 엄격해졌는지 몇개의 상위 디렉토리가 통과된 바람에 untracked file 이 나타난 것이었다. 명확하지 않았던 정규화 사용이 문제... 문법 재조정으로 해결.




또하나. 4시간짜리 뻘짓. gradle 창에 모듈별 task 가 안나오는 또 하나의 어이없는 상황. 이전 버전 intellij 에서 잘나오던게 갑자기 안나오니 참... gradle 설정을 싹다 뒤졌다. gradle 버전별로 깔아보고 쌩쑈를 다했는데 결국엔 intellij 에서 gradle 의 project-level setting 이 사라져버린 것. 저  using explicit module groups  옵션을 선택하지 못하는 바람에 생겨버린 요상한 상황. 결국 .(dot) 으로 구분된 모듈명에서 dot 을 없애버렸다.ㅋㅋ 모듈명에 dot 을 붙인 분도 좀 그렇지만 이렇게 연락도 없이 옵션을 막 빼버리는건 너무한거 아니오?! 갈수록 새 제품 쓰는게 짜증난다. 설정하고 세팅하고 이런데다가 시간 허비하는거 이제 제발 그만~~~~





WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

4년만인가 최신 컴퓨터를 받은게. i7 8세대 3.2GHz 에 32기가 메모리... 오마오마하당. 문제는 이게 아니구...

4명이 나란히 앉아서 Windows 10 을 설치하고 git(tfs) 을 연동하는데 1명은 잘되고 나머지는 다 인증 실패


$ git clone https://tfs.blahblah.com:444/git/project1

fatal: Authentication failed for https://tfs.blahblah.com:444/git/project1


"바보들 당연히 git config 에 user 정보 넣어야지." 라고 말했지만, 결과는 같았다. 

"--global 옵션도 줘야돼." 라고 말했지만, 결과는 같았다. 끼윰~

아이디랑 패스워드를 입력했는데 인증에 실패했다니... URL 에 강제로 박아봐도 실패! 실패!! 실패!!!

방화벽 때매 URL 에 접속이 안되나 했더니 브라우저로는 인증이 잘만 된다. ㅡㅡ;;

구글로부터 찾은 해결 방법은...


[제어판] - [사용자 계정] - [자격 증명 관리자] - [Windows 자격 증명] - [일반 자격 증명 추가]

git:https://tfs.blahblah.com:444


이렇게 URL 앞에 git 만 붙여주니 해결되었다.



어떤 식으로든 클라이언트에서 저와 같은 URL 접속시에 패스워드를 전달 못하는 문제인거 같은데 Windows 10 에 뭔 보안이 또 강화됐나.

의문스러운건 다 같은 버전의 Windows 랑 git 을 깔았는데 자격 증명 설정 없이 된 사람은 뭐냐고...

또 Windows 10 을 사용하는 모든 사람들이 이 문제를 직면하진 않는다는거... 왓 더 ㅍ!!!




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

CodeStar

Server/AWS 2018. 9. 17. 21:31

특정 프로그래밍 언어로 개발/빌드/배포 환경을 미리 구성된 템플릿을 사용하여 빠르게 구축해 주는 서비스이다. 예를 들어, Laravel 로 PHP 개발을 하려 한다면, EC2 / Git / CodeBuild / CodeDeploy / CodePipeline 등을 미리 구성해 주며 git 에 push 만 하면 자동 배포되어 결과를 확인할 수 있다. 그리고 제공되는 대시보드에서 프로젝트의 개발/빌드/배포 등의 이벤트 현황을 즉시 확인할 수 있다. 아무래도 미리 준비된 템플릿으로 빠르게 구성되는 장점은 있지만, 언어나 프레임워크의 버전, 서버종류 등의 선택이 제한적인 단점 때문에 사용할 일이 있을지는 모르겠다.





CodeStar 는...


CodeStar 는 AWS 를 기반으로 애플리케이션을 빠르게 개발, 빌드, 배포할 수 있는 클라우드 기반 서비스이다. CodeStar 프로젝트를 생성하면 이미 만들어진 CloudFormation 템플릿 중 원하는 환경의 어플리케이션을 선택할 수 있다. 사용되는 Service 들이 모두 리전 별 서비스이므로 CodeStar 역시 리전 별로 서비스한다. CodeStar 자체는 무료이므로 함께 사용하는 리소스의 요금만 발생된다.



CloudFormation 템플릿 선택사항


  • Application : Web application / Web service / Static Website / AWS Config Rule
  • Service : Elastic Beanstalk / EC2 / AWS Lambda
  • Language : Python / PHP / C# / Node.js / Ruby / Java / Go / HTML


Web application 와 Web service 의 차이라면 Web application 은 UI 나 웹페이지 기능이 많고, Web service 는 RESTful 같은 API 기능에 특화되어 있는 것 같다. 그 외에도 빌드가 트리거 될 AWS CodeCommit 나 GitHub 중 하나의 저장소를 선택해야 하고, 리소스 구성 세부 정보에서 배포될 EC2 와 VPC, Subnet 등을 설정할 수 있다.


CodeStar 에는 프로젝트, 도구 체인 및 중요 이벤트를 전체적으로 보여주는 대시보드를 제공한다. 최신 프로젝트 활동 모니터링, 코드 변경, 빌드 결과 및 배포 상태 추적 같은 작업을 타일에 추가/제거하여 대시보드를 구성할 수 있다. 프로젝트를 생성하면 팀의 소유자로 추가되며, 다른 사용자를 더 추가하고 역할을 부여하여 함께 운용할 수 있다. GitHub 리포지토리나 Atlassian JIRA 같은 AWS 외부의 리소스를 사용하는 경우, 사용자 이름 및 이메일 주소를 가진 별도의 사용자 프로필을 사용할 수 있다. 코드를 변경하고 저장소에 푸시하면, Continuous deployment 타일에 진행 중인 작업이 표시되며, CodePipeline 에서 저장소의 변경 사항으로 빌드 및 배포되어 엔드포인트에서 결과를 확인할 수 있다.


프로젝트를 삭제하면 관련 내부 리소스는 자동으로 모두 삭제된다.




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

Jenkins git rollback

Tool/Jenkins 2017. 2. 17. 00:34

Jenkins 에서 예전 빌드로 배포하는 방법을 좀 찾아봤다. 흔히 말하는 롤백.

배포되지 말아야 할 소스가 배포되었다거나, 잠시 이벤트성 수정이 들어갔다거나 할 경우 꼭 필요한 기능!

빌드 리스트 세부 메뉴에 Re-Build Now 라는 메뉴가 하나 더 있어서 그 당시 리비전으로 빌드/배포되면 차암~ 좋을거 같았는데... 없네...

Jenkins 에는 알아서 롤백해주는 머 그런건 아직 없는 듯...


하지만 수고+1 정도를 추가하면 가능하긴 하다. 바로 [SCM] - [Branch Specifier] 항목을 이용하면 된다.

Branch 를 지정할 경우 해당 Branch 의 최신 리비전을 가져오지만,

Tag 로 지정할 경우 해당 Tag 의 리비전을 가져오니, 롤백이 가능하다는 말쌈.


그리고 Git Tag Message 플러그인을 설치하면 슬랙 알림에 tag 메시지도 전할 수가 있다.

설치하고 [SCM] - [AdditionalBehaviours] - [Export git tag and message as environment variables] 를 선택하면 $GIT_TAG_MESSAGE 를 사용할 수 있다.



ps.

[SCM] 의 Tag 말고도 해당 프로젝트의 Build History 에서 임의로 Tag 를 달아 위 방식처럼 해당 리비전을 가져올 수도 있다.

[SCM] - [AdditionalBehaviours] - [Create a tag for every build] 에서 매 빌드마다 태그를 자동 생성할 수도 있다.

하지만 프로젝트가 여러개일 경우 복잡하고 번거로울 것 같다.

Git 에서 Tag 달아주는게 제일 무난할 듯!




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

Freestyle project

Tool/Jenkins 2017. 2. 13. 23:40

Jenkins 설치를 진행하여 Jenkins 웹UI에 접속할 수 있었다. 영어와 한글이 혼합되어 있는 이 모습이 썩 맘에 들진 않는다;

암튼 다음 할 일은 Pipeline 을 생성하고 설정하여 우리가 하려는 CI 기능을 동작시키는 것이다.

Pipeline 이란 것은 빌드나 테스트, 배포 등의 단계를 구성하는 하나의 프로젝트 정도로 봐도 될 것 같다.


Pipeline 을 정의하는 방법은 두가지가 있다.

- 웹UI 를 이용하는 방법

- Jenkinsfile 을 이용하는 방법


어느 것을 사용하던 동작은 동일하다.

웹UI를 따라서 선택하고 입력한 것이나, Jenkinsfile 에 DSL 코드로 작성하는 것이나 동일한 동작을 하게 할 수 있다.

SCM 을 이용하여 협업 등을 이유로 메뉴얼에서는 Jenkinsfile 의 사용을 추천하고 있다.


그러나...


나는 freestyle project 를 먼저 사용해 봤다.

단계별 어떤 옵션들이 있는지 정도는 알아야 Pipeline 을 작성할게 아닌가 ㅜ



* Jenkins 에게 원하는 목표

- Git 소스 체크아웃

- 소스 빌드(gradle)

- 빌드 파일 원격 서버로 업로드



기본 설정


1. 플러그인 설치

[Jenkins 관리] - [플러그인 관리]

- git plugin

- gradle plugin

- publish over ssh 


2. ssh 서버 설정

[Jenkins 관리] - [시스템 설정] 에서 배포할 타겟 서버를 구성한다. (굳이 ssh 를 이용할 필요가 없다면 ftp 플러그인을 받아 설정하면 된다.)

- hostname / username 과 [고급]에서 private Key 입력

- Test Configuration 으로 접속 테스트


3. gradle 설정

[Jenkins 관리] - [Global Tool Configuration]

- Install automatically > 체크 원하는 버전 선택



freestyle project



1. freestyle project 생성

[새로운 Item] - [freestyle project]


2. 소스 코드 관리

- Git Repository URL 정보 입력


3. Build

- Build : Invoke Gradle 선택


4. 빌드 후 조치

- Sned build artifacts over SSH 선택

- SSH Server Name : [시스템 설정]에서 구성한 타겟 서버 선택

- Source files : **/build/libs/*.war

- Remove prefix : /build/libs/

- Exec command :


sudo service tomcat8 stop
sudo cp -ap web1-1.0-SNAPSHOT.war /var/lib/tomcat8/webapps/ROOT.war
sudo service tomcat8 start
cs


5. Build Now

[Console Output] 에서 성공/실패 로그를 확인할 수 있다.


Started by user LeeHongKyu
Building in workspace /var/lib/jenkins/workspace/freestyle project
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url https://github.com/ggamzzak/javatest.git # timeout=10
Fetching upstream changes from https://github.com/ggamzzak/javatest.git
 > git --version # timeout=10
 > git fetch --tags --progress https://github.com/ggamzzak/javatest.git +refs/heads/*:refs/remotes/origin/*
 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision 7599f414e9beb11d4d1350e571b83b2290557465 (refs/remotes/origin/master)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f 7599f414e9beb11d4d1350e571b83b2290557465
 > git rev-list 7599f414e9beb11d4d1350e571b83b2290557465 # timeout=10
[Gradle] - Launching build.
[freestyle project] $ /var/lib/jenkins/tools/hudson.plugins.gradle.GradleInstallation/gradle33/bin/gradle
Starting a Gradle Daemon (subsequent builds will be faster)
:help
 
Welcome to Gradle 3.3.
 
To run a build, run gradle <task> ...
 
To see a list of available tasks, run gradle tasks
 
To see a list of command-line options, run gradle --help
 
To see more detail about a task, run gradle help --task <task>
 
BUILD SUCCESSFUL
 
Total time: 12.231 secs
Build step 'Invoke Gradle script' changed build result to SUCCESS
SSH: Connecting from host [ip-172-31-27-119]
SSH: Connecting with configuration [honghost1] ...
SSH: EXEC: STDOUT/STDERR from command [sudo service tomcat8 stop
sudo cp -ap web1-1.0-SNAPSHOT.war /var/lib/tomcat8/webapps/ROOT.war
sudo service tomcat8 start
] ...
Stopping tomcat8: [  OK  ]
Starting tomcat8: [  OK  ]
SSH: EXEC: completed after 2,003 ms
SSH: Disconnecting configuration [honghost1] ...
SSH: Transferred 1 file(s)
Finished: SUCCESS
cs


중간에 BUILD SUCCESSFUL 로 빌드가 성공한 것을 확인할 수 있고, 제일 마지막의 SUCCESS 로 모든 과정이 성공한 것을 확인할 수 있다.

타겟 서버에 접속해서 새로운 빌드 파일로 배포가 되었는지 확인한다.

지금까지 아주 기본적인 설정만을 선택하여 Git 소스 체크아웃 받고 gradle 로 소스를 빌드하고 타겟 서버에 빌드 파일을 업로드한 것을 확인할 수 있다.


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret