發表文章

目前顯示的是有「WildFly」標籤的文章

Docker Jenkins build java webapp and deploy on WildFly

圖片
大部分的內容可參考 這篇 ,重複的就不贅述拉! 上面這篇已經涵蓋 專案git之bitbucket設定 (已有java web專案) jenkins專案與套件安裝基本步驟 WildFly與 Jenkins Container檔案共用 (wildfly-dist) docker-compose.yml 僅列出部分與自此設定有關的檔案,也留下angular的方便對照,概念很類似 jboss-backend: image: jboss/wildfly:ytTest container_name: 'jboss_Backend' env_file: .env ports: - 8080:8080 volumes: - web-dist-volume:/opt/jboss/wildfly/angular-dist - wildfly-dist-volume:/opt/jboss/wildfly/standalone/deployments/ jenkins: image: jenkins/jenkins:ytTest container_name: 'jenkins' env_file: .env ports: - "18080:8080" - "50000:50000" volumes: - web-dist-volume:/angular-dist - wildfly-dist-volume:/wildfly-war volumes: web-dist-volume: wildfly-dist-volume: jenkins 的 Dockerfile 需加上下列這三行 RUN mkdir /wildfly-war RUN chown -R jenkins:0 /wildfly-war \ && chmod -R g+rw /wildfly-war 接著到jenkins的操作介面 選擇需要的 maven 版本 專案設定 (原始碼可以找已有...

建置一個開發Web服務用的Docker環境 (II)

圖片
在 建置一個開發Web服務用的Docker環境 (I) 一文中我們提到建置客製化Image的需求 是因為Docker Hub之類的服務,雖然公開Repository是免費的 不過我們需要Private的,然而免費的只能有一個Repository,不敷使用 自己建置Repository Server又有需要權限管理、安全管理的問題 所以就選擇0金錢與維護成本的Dockerfile + 資料備份還原的方式來建立Image 讓協同開發者都有相同的開發與建置環境 我們將以Jenkins為例,完成客製化的Jenkins Image (一)、在全新的Jenkins容器逐步進行相關設定 (二)、建置好一個專案,進行打包備份 (三)、透過Dockerfile與備份檔,將備份的資料移至全新容器,做一個新的Jenkins Image 必須做好Jenkin容器共用的配置 才能確保Jenkins Build後,能直接佈署在WildFly Server上 請參考 Docker Container 檔案共享 以下的步驟如果已經閱讀過 這篇 文章則可以快速看過去,這邊只是講得更詳細一點 開啟全新的Jenkins容器,打開首頁會看到要輸入啟動密碼 可以取得啟動密碼的方式有很多, cat /var/jenkins_home/secrets/initialAdminPassword 或是啟動時會看到console有跑出來下列資訊,再把資訊複製貼上即可(每次都會不同) 因為我們還要裝Nodejs套件,選擇「Select plugins to install」 搜尋並勾選Nodejs Plugin 點擊「Install」就會開始安裝 有時候可能會因為網路環境安裝失敗,Retry就可以了 建立有管理者權限的使用者資訊 會看到成功訊息與Jenkins首頁 (沒有特別設定,但Jenkins似乎會自己抓語系,所以有中文介面) 點選「新增作業」 根據先前的情境,我們是bitBucket 輸入專案名稱並選擇「建置 Free-Style 軟體專案」 專案設置頁面 首先我們要先設定git的 repository,指向bitbucket的某個專案 並選擇「Add」 配置ssh k...

Jenkins x Bitbucket x Angular x WildFly

圖片
上次有提到透過 Container檔案共用 ,可以讓Jenkins Build好的檔案放到部署的資料夾 回顧先前提到的系統架構圖 現在,我們要先以Jenkins為中心 從Bitbucket取得程式碼,Build Angular的程式碼,部署到WildFly上 雖然說是部署,但這Case其實就是複製到某資料夾而已 在說明開始前有以下假設: 已經完成  Angular佈署在WildFly上 本來的 testAngular 這邊改成 angular-dist 已經完成 Container檔案共用 Jenkins已經安裝好預設的plugin 跟  Nodejs Plugin Note: karma plugin 不在本次的說明範圍 大致有三大步驟: I. 安裝Nodejs的運行版本 II. 設定到bitbucket的ssh key III. Jenkins 組態設定Build and deploy I. 安裝Nodejs的運行版本 到Jenkins首頁,點選管理Jenkins 點選 Global Tool Configuration 往下滑到NodeJS區塊,點選NodeJS安裝 填寫Nodejs相關資訊 我們以 nodejs 8.9.3為例 名稱方便辨識即可(e.g., nodeJS 8.9.3),Version就選擇 8.9.3 由於是Angular開發,我們要安裝 @angular/cli,也讓npm版本是最新的(5.5以前有bug) II. 設定到Bitbucket的ssh key 假設我們已經透過 Keygen 產生一組  id_rsa 與 id_rsa.pub 並且把他放到 jenkin容器下的  /var/jenkins_home/.ssh/  目錄 該目錄應該會長這樣 (known_hosts可以先忽略) Jenkins的預設設定,也是抓id_rsa與id_rsa.pub這兩個名稱,若不需要不建議更改 接著,到我們的Bitbucket專案的設定裡面選取Access keys → Add Key Label命名好之後,將 id_rsa.pub 貼在 Key的欄位並新增 ...

Web Service 協同開發 - Angular 部署於 WildFly

圖片
這是我們預想中的網路服務主要元件架構圖 後端主要由 WildFly (前身為JBoss) + MariaDB,提供一些API Service 前端為AngularJS,主要讓前端使用者使用 中間的Jenkins主要是拿來做自動化測試與部署用的 Source Code則是放在Bitbucket 為了讓開發中也可以使用,也不需讓開發者自行建設這些服務 就使用Docker Compose組起來,這個配置我們等最後都串好全部的流程了再談 也有很多東西要解決跟討論的,但我們先將焦點放在我們的應用情境上 理想狀態是上了一個Change之後 Bitbucket就會送一個Webhook到Jenkins Server 接著,Jenkins就會依照我們的設定進行 Build (Angular、WildFly api service) 測試 部署到對應的MariaDB、WildFly、Angular三台Server 但是我們現在只有一台可以對外的Production Server Angular就得放到WildFly上面跑 所以我們得先了解,如何讓Angular的Dist folder全部放到WildFly上 再寫成Shell Script透過Jenkins自動化部署過去 將電腦本機端的Angular Distribution 丟到 WildFly web server 以下的操作是以2018/1/1的Angular install為範例 也假設我們已經部署好了Docker 已經跑起來了名為jboss_Backend的container 修改<ANGULAR-ROOT-FOLDER>/src/index.html 把這行  <base href="/">  改成  <base href="."> 把初始的Angular原始碼下以下指令 ng build 會看到dist長出來的結構如下圖: 進入 jboss_Backend containter (以下二擇一) MAC: bash -c "clear && docker exec -it jboss_Backend bash" ...