Jenkinsを使用してフロントエンドのAngularアプリのビルドとFTPSを使ってデプロイする使用例:
1、新規プロジェクトの作成から、「フリースタイル・プロジェクトのビルド」を選択し「OK」ボタンを押す。
2、Generalの高度な設定を押し、カスタムワークスペースを任意のワークスペースに変更する。(指定したカスタムワークスペースにソース等を取ってくるため、作業の経緯を追いやすくなる)

3、ソースコード管理でソースコードのバージョン管理ソフトを指定し、接続のための情報を入力する。(今回はGit、他大体のバージョン管理ソフトはプラグインをインストールすれば表示される)


4、ビルド手順の追加から「Windowsバッチコマンドの実行」を選択し、npmのインストールとビルドを行う。

5、ビルド手順の追加から「Windowsバッチコマンドの実行」を選択し、jsでIndex.htmlのhrefをサイト名に変える。(デフォルトだと=”/”となっているが、=”/サイト名/”にしないと動かない)

replace.js
var fs = require('fs')
fs.readFile('dist/apps/samplefront/index.html', 'utf8', function (err,data) {
if (err) {
return console.log(err);
}
var result = data.replace('href="/"', 'href="/samplefront/"');
fs.writeFile('dist/apps/everysmart/index.html', result, 'utf8', function (err) {
if (err) return console.log(err);
});
});
6、ビルド手順の追加から「Windowsバッチコマンドの実行」を選択し、jsでFTPSでファイルを移動する(デプロイ)

ftp.js
process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = "0";
var fs = require("fs");
var Client = require("ftp");
var client = new Client();
client.connect({
host: "宛先ホスト名",
port: 443,//ポート
secure: true,
user: "ftpUser",//Ftpユーザ
password: "pass"//Ftpパスワード
});
//フォルダのファイル一覧取得
const srcFolder = 'dist/apps/frontsample'//コピー元フォルダ
const distFolder = '/ClientApp/dist/'//コピー先フォルダ
fs.readdir(srcFolder, (err, files) => {
files.forEach(file => {
var fullpath = srcFolder + '/' + file;
var distPath = distFolder + file;
PutFile(fullpath,distPath);
});
});
function PutFile(src,dist){
client.put(src, dist, (error) => {
if (error) {
throw error;
}
client.end();
});
}