기본 콘텐츠로 건너뛰기

6월, 2021의 게시물 표시

[Jenkins] Build with Parameter

고객사에서 프로그램을 외부에서 사용해야 하는데 프로그램 유출이 우려되어 보안 기능을 적용해달라고 합니다. 고객사에서 제시한 기능은 다음과 같습니다. 프로세스 체크(특정 프로세스가 돌아가고 있는지 확인) 라이선스 키 체크 만료 기간 설정 첫 번째는 요새 기업에서는 보안 프로그램이 돌아가고 있기 때문에 그걸 체크해달라는 겁니다. 두, 세 번째는 JWT를 사용하여 기능을 구현하였습니다. 이제 Jenkins를 이용하여 보안 기능이 적용된 설치 파일을 만들어야 합니다. 참고로 보안 기능을 위해 git에 새로운 브랜치를 만들었습니다. 따라서 빌드할 때 브랜치를 선택해야 합니다. Jenkins의 Build with Parameter 플러그인을 이용하면 빌드할 때 브랜치를 선택할 수 있습니다. 다음과 같이 Job에 매개변수를 추가합니다. 브랜치 이름을 선택할 수 있도록 선택 파라미터로 2개의 브랜치 이름을 추가하였습니다. Windows batch command에서는 %Parameter Name% 형식으로 사용할 수 있습니다. [소스 코드 관리] 항목에 사용자가 선택한 브랜치 이름을 적용합니다. 이제 빌드 후 메일 통보에 선택한 브랜치에 따라 설치 파일 이름을 다르게 나타나도록 합니다. Email Extension에 설치 파일 이름을 넘기기 위해 Environment variables through a file 플러그인을 사용하였습니다. PowerShell을 이용하여 propfile에 환경 변수를 쓰면 됩니다. BUILD_NAME, OUTPUT_FILE_NAME 두 개를 저장하였습니다. 환경 변수를 서로 다른 줄에 저장하기 위해 `r`n 을 넣어 줄 바꿈을 하였습니다. Out-File -FilePath .\propfile -InputObject "BUILD_NAME=$version`r`nOUTPUT_FILE_NAME=$env:BRANCH" -Encoding ASCII Email Exte

데이터 위주의 프로그래밍 - #2

데이터베이스를 읽어 DataTable을 만들고 DataTable에서 다시 클래스를 만드는 작업을 합니다. 이렇게 하는 이유는 DataTable은 Control에 바인딩하기 위해서고 클래스는 프로그램에서 사용하기 위함입니다. 이렇게 하기보다는 클래스가 최종 데이타이니 이걸 그냥 바인딩 시키면 안되나?하는 의구심이 들었습니다. List<EQStructure> Structures = new List<EQStructure>(); EQStructure를 List에 담아서 GridControl에 바인딩시키려고 하니 되지 않았습니다. 포기하지 않고 구글링을 해보니 BindingList를 만들어 사용하면 된다고 합니다. BindingList<EQStructure> Structures = new BindingList<EQStructure>(); BindingList는 List와 사용법이 유사하여 기존 코드에서 List로 사용하던 부분을 BindingList로 쉽게 변환할 수 있었습니다. 이렇게 데이터 바인딩을 사용하는 이점은 데이터 조작만으로 화면이 갱신된다는 점입니다. 즉 Control에 데이터를 바인딩시킨 후 데이터를 추가 혹은 삭제하면 Control이 자동으로 변경됩니다. 데이터를 모델 그리고 Control을 뷰라고 생각하면 됩니다. 제공되는 Control에 뷰에 필요한 행위가 다 구현되어 있기 때문에 우리는 모델만 신경 쓰면 됩니다. 신경 쓸 것이 하나 줄어들어 한결 마음이 편안해집니다.