jenkins로 electron 빌드 자동화 하기 1

지솔빈·2023년 5월 20일
0

공부

목록 보기
4/4
post-thumbnail

jenkins..? 나는 써본적이 거의 없다.
electron..? 내 뜻대로 되는 게 없다.

하지만 젠킨스를 사용하여 일렉트론 앱 빌드를 해내야 한다.
그것도 맥용 앱, 윈도우용 앱 두 개를 동시에.
왜냐? 시키셨으니까.

작년부터 밀리고 밀리던 일인데 더 이상 미룰 수 없었다.
왜냐? 시키셨으니까.
눈물 닦는데만 15분 걸리는 이 일도 어느샌가 끝나가고 있기 때문에 잊기 전에 글을 써보려고 한다.

다만, 우리 회사에만 해당하는 작업들과 기타 우여곡절들은 생략하고 결과적으로 어떤 형태로 해냈는지만 적으려고 한다.
왜냐면 지금 새벽 2시.


Electron Multi Platform build

electron-builder는 공식문서에서 "우리는 멀티 플랫폼 빌드가 가능해요."라고 주장한다.
하지만 M1 부터였나? 맥에서 멀티 플랫폼 빌드가 안되기 시작했고 그냥 PC 두 개를 사용하여 앱을 빌드해왔다.
(맥용 앱에 공증을 적용해야 하기 때문에 윈도우에서의 크로스 플랫폼 빌드는 고려하지 않음)

빌드 자동화를 하기 전 hoxy? 하며 맥에서

electron-builder -mw

-mw 옵션을 주고 빌드를 시도했으나 어림도 없었다.
설치 파일이 두 개가 생성되긴 하지만 윈도우에서 제대로 설치가 되지 않았다.

하지만 (역시 안되네~ 하면서 WindowOS PC로 젠킨스 서버를 띄우고 MacOS agent를 등록하여 빌드를 하려고 했으나, 내 맘처럼 되지 않아 멘탈이 터져버린 나는) 다시 한 번 멀티 플랫폼 빌드, 크로스 플랫폼을 도전했고 빌드에 성공했다.

target을 이렇게 설정해주면 윈도우용 설치파일도 정상적으로 빌드가 된다.
arch를 명시적으로! 미리(?) 설정해줘야 한다.. 이유는 나도 진짜 모르겠다.
그냥 하나의 생명체로 보고 그러려니 이해 중인데 다음에 밝혀보고 싶다.

아무튼 이제 mac으로 젠킨스 서버를 띄우고 빌드를 하면 된다.


맥 젠킨스 세팅

젠킨스 설치

맥에 젠킨스를 설치하는 건 자료가 아주 많다.
친절한 스크린샷은 검색해서 보도록 하자.

아래 명령어로 젠킨스를 설치할 수 있다. (brew 필수)

젠킨스 설치
$ brew install jenkins

젠킨스 시작
$ brew services start jenkins

젠킨스 종료
$ brew services stop jenkins

젠킨스 재시작
$ brew services restart jenkins

설치 및 서버 구동 후 http://localhost:8080 에 접속하면 젠킨스 서버를 확인할 수 있다.

비밀번호를 입력하라고 하는데 아래 파일에서 비밀번호를 확인할 수 있다.
터미널에서 vi로 확인하거나 파인더로 직접 찾아 들어가면 된다.

$ vi /var/lib/jenkins/secrets/initialAdminPassword

이어서 어드민 유저를 생성하고 나면 젠킨스 메인 화면이 뜬다.

외부 IP 접근 허용

빌드를 혼자 즐기고 싶다면 굳이 할 필요 없을 것 같다.
나는 다른 사람들도 내 젠킨스 서버에 접속해서 빌드를 할 수 있는 형태를 만들고 있기 때문에 외부 IP 접근을 허용해줘야 한다.

vi ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist

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>/opt/homebrew/opt/jenkins/bin/jenkins</string>
                <string>--httpListenAddress=아이피</string>
                <string>--httpPort=포트</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>StandardErrorPath</key>
        <string>/opt/homebrew/var/log/jenkins/error.log</string>
        <key>StandardOutPath</key>
        <string>/opt/homebrew/var/log/jenkins/output.log</string>
</dict>
</plist>

--httpListenAddress
0.0.0.0 또는 특정 ip로 수정해준다.
나는 우리 회사 사람들만 접속 가능하도록 만들어야 했으므로 회사 wifi에 붙은 뒤 내 ip를 입력해줬다.

--httpPort
안바꿔도 되긴 하지만 8080은 너무 흔해서 괜히 수정해줬다.

그리고 젠킨스 설정도 수정해주면 끝!
윈도우는 가물가물 하지만.. 자바 인바운드 접근을 허용해줘야 했다. -> 링크

플러그인 설치

일렉트론 앱을 빌드하기 위해서 설치해야 할 플러그인이 있다.
바로바로 Node.js 플러그인!

위 메뉴에서 노드 플러그인을 설치하자.
그리고 젠킨스 관리 -> Tools -> Node installations 설정까지 해줘야 한다.

이러면 끝!

이제 프로젝트를 생성하고 세부 설정을 한 뒤에 빌드를 하면 끝이다.
그것은 2탄에서 ... 왜냐면 지금 새벽 3시.

profile
맘 바꾸면 세상도 바뀐다 〰️ 👠

0개의 댓글