• システム開発に関わる内容をざっくりと書いていく

Jenkinsジョブ-フロント-Angularアプリ-ng-build-FTPS編

Jenkinsを使用してフロントエンドのAngularアプリのビルドとFTPSを使ってデプロイする使用例:

 1、新規プロジェクトの作成から、「フリースタイル・プロジェクトのビルド」を選択し「OK」ボタンを押す。

 2、Generalの高度な設定を押し、カスタムワークスペースを任意のワークスペースに変更する。(指定したカスタムワークスペースにソース等を取ってくるため、作業の経緯を追いやすくなる)

画像に alt 属性が指定されていません。ファイル名: image-23-1024x635.png

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

画像に alt 属性が指定されていません。ファイル名: image-24-1024x685.png
認証情報は追加->Jenkinsを押下して設定画面が出るのでそこで設定
画像に alt 属性が指定されていません。ファイル名: image-25-1024x680.png
ユーザ名、パスワードを指定

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

npmコマンドはcallで呼ばないと最初のnpmコマンドで終了してしまう

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

画像に alt 属性が指定されていません。ファイル名: image-30.png
replace.jsをカレントに移動して実行する

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をカレントに移動してああ実行する

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();
  });
}