我們知道持續(xù)集成和發(fā)布(CI / CD)是時下開發(fā)運維界的香餑餑。每一個團地都是使用CI / CD來極大的提高開發(fā)效率,加速項目的轉化和部署上線。然而還有很多開發(fā)者還因為CI / CD的初始比較繁瑣而望而卻步。這里蟲蟲給實例大家介紹一個最簡單的CI / CD流程,實現(xiàn)代碼編寫編譯部署一棧式流程,該流程涉及免費版的Travis CI ,Github頁面,和Scala.js,實現(xiàn)Scala.js應用程序到Github頁面的持續(xù)部署。
概述
Scala.js
Scala.js是一種具有良好生態(tài)系統(tǒng),功能齊全,支持豐富的Scala To JS代碼編譯器。Scala.js支持全部Scala語言特性,通過Scala.js,可以實現(xiàn)從前端到完全的Scala全棧Web開發(fā)。
特拉維斯CI
Travis CI是一種開源的持續(xù)集成CI系統(tǒng),和其他CI系統(tǒng)比較,Travis CI提供在SaaS云版本和GitHub項目可以無縫集成,構建和測試GitHub上托管的項目。對Github公開項目可免費使用,直接通過Github賬號登陸和配置使用。我們只需要接收自己的GitHub帳戶,提供相關權限并根據(jù)項目的實際要求更新travis.yaml文件即可。
環(huán)境安裝
所有環(huán)境需要Node.js和sbt,需要安預先安裝Node.js和sbt,另外需要Github帳戶。
centos下一個可以可以先將khara-nodejs-epel-7.repo和bintray-sbt-rpm.repo添加到/etc/yum.repos.d,然后通過yum安裝
百勝安裝nodejs nodejs-npm sbt
項目實戰(zhàn)
創(chuàng)建項目
運行以下命令:
sbt new scala/hello-Chongchong.g8
該命令將以“ hello-world”模板創(chuàng)建一個創(chuàng)建一個Scala項目。
我們也可以從頭開始手動創(chuàng)建Scala.js項目,可以執(zhí)行下面的步驟:
創(chuàng)建文件project / plugins.sbt,并通過添加以下代碼,添加Scala.js sbt插件:
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.29")
我們要設置基本項目,并在sbt生成文件中啟用此插件。在build.sbt中添加以下行(在項目根目錄中):
enablePlugins(ScalaJSPlugin)
scalaJSUseMainModuleInitializer := true
運行項目
要運行該項目,立即啟動sbt并調用運行任務:
sbt run
結果如下:
HTML集成
為了加載和啟動創(chuàng)建的JS,我們需要一個HTML文件來調用JS。我們在項目的根目錄中創(chuàng)建文件夾source。將所有源文件(html,圖像,腳本,樣式)放在此文件夾中,同時我們也手動創(chuàng)建一個index.html文件,內(nèi)容如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Scala.js CI實例</title>
</head>
<body>
<!-- Include Scala.js compiled code -->
<script type="text/javascript" src="js/hello-world-fastopt.js"></script>
</body></html>
創(chuàng)建Github倉庫
在項目的根文件夾中添加.gitignore文件,排除以下這些文件:
*.class
*.log
.cache/
.history/
.lib/
dist/*
target/
lib_managed/
src_managed/
project/boot/
project/plugins/project/
生成倉庫,并推送到github
git init
git add . & git commit -m init
git push
配置Travis CI
使用github賬號授權并登陸Travis CI,選擇需要集成的一個公共倉庫,并激活:
github倉庫設置頁,給其選擇pages源,此處我們選擇gh-pages分支,開啟pages
在github個人設置開發(fā)人員設置/個人訪問令牌,配置權限部分生成令牌,復制該值。
在“環(huán)境變量”下,輸入GH_TOKEN作為名稱,替換為上面保存的令牌填充的值插入,以添加為保存它。
前面我們在項目根目錄下創(chuàng)建源文件夾,將應用程序的靜態(tài)文件放入其中。
為了生成靜態(tài)文件,Travis CI需要將公共文件夾的內(nèi)容復制到項目的根目錄,并將其提交。下面我們將創(chuàng)建一個腳本deploy.sh實現(xiàn)將靜態(tài)文件移動到公用文件夾。
if [ ! -d "public" ]; then
mkdir public
fi
cp -fr source/* public/
if [ ! -d "public/js" ]; then
mkdir public/js
fi
sbt fastOptJS
cp target/scala-*/*.js public/js/
添加并提交deploy.sh文件到倉庫,以在Travis CI上生成.travis.yml文件,放入其添加并提交到倉庫庫中,以使用以下內(nèi)容配置Travis CI:
language: scala
jdk: openjdk8
scala:
- 2.12.10
branches:
only:
- master
script:
- bash deploy.sh
deploy:
provider: pages
skip-cleanup: true
github-token: $GH_TOKEN
keep-history: true
on:
branch: master
local-dir: public
Travis CI會自動編譯,部署后,成功后:
現(xiàn)在,切換到倉庫的gh-pages分支,就可發(fā)現(xiàn)Travis機器人自動發(fā)布生成的頁面:
我們切換到項目對應的頁面,F(xiàn)12,調試模式下查看頁面的控制臺輸出:
OK,如上圖,我們的Scala.js應用程序已部署在Github Pages上了!
請注意,此處我們?yōu)榱朔奖?,只是搞了個簡單的控制臺打印hello,ChongChong,一直在html頁中顯示元素,所以直接瀏覽器打開是空白頁面,大家可以在此基礎上在頁面添加內(nèi)容。 scala代碼為為:
object Main extends App {
println("Hello, ChongChong!")
}
Travis CI部署了Scala.js應用
總結
本文我們以簡單的scala.js示例說明了,通過Travis CI在Github頁面上實現(xiàn)持續(xù)集成和部署的實例。主要介紹了Travis CI配置以及和Github倉庫的交互,持續(xù)集成一棧式迭代發(fā)布的流程。