SourceCommit の手動バックアップ
    • PDF

    SourceCommit の手動バックアップ

    • PDF

    Article Summary

    Classic/VPC環境で利用できます。

    SourceCommitのリポジトリは、ユーザーソースコードを安全に保存して復旧できるように構成されています。しかし、ユーザーが誤ってリポジトリを削除すると、コードも削除されて復旧できません。このような状況に備え、SourceCommitを NAVERクラウドプラットフォームの他のサービスと連携して安全にコードをバックアップできます。

    参考
    • コードバックアップは SourceCommit機能として直接提供しませんが、NAVERクラウドプラットフォームの他のサービスと連携するとバックアップできます。ユーザーの便宜のためにその方法を説明します。
    • SourceCommitの作成方法の詳細は、SourceCommit を開始するをご参照ください。

    Cloud Functionsを通じたバックアップ

    NAVERクラウドプラットフォームの Cloud Functionsと連携してコードをバックアップする方法を説明します。

    1. バックアップする SourceBuild作成

    最初に SourceCommitリポジトリをバックアップする SourceBuildプロジェクトを作成します。方法は次の通りです。

    1. NAVERクラウドプラットフォームコンソールにアクセスします。
    2. SourceCommitをバックアップする SourceBuildプロジェクトを作成するため、 Services > Developer Tools > SourceBuild メニューを順にクリックします。
    3. SourceBuild画面で [+ビルドプロジェクト作成] ボタンをクリックします。
    4. ビルド対象としてバックアップが必要な SourceCommitリポジトリを選択します。
    5. SourceBuildで管理する ubuntuイメージをビルド環境に選択します。
      source_commit_use_backup_1_ko
    6. 必要に応じてビルドコマンドを設定します。
    7. 結果アップロード設定ビルド結果結果保存 をクリックして選択します。
    • 全体パスを入力してリポジトリをバックアップするように設定します。
      source_commit_use_backup_2_ko
    1. ビルドプロジェクトの作成を完了します。

    2. SourceCommit Webhook作成

    SourceCommit Webhookを作成します。方法は次の通りです。

    1. バックアップが必要な SourceCommitリポジトリで Hooks をクリックします。
    2. 新しいウェブフックを作成するには [作成] ボタンをクリックします。シナリオに適したイベントタイプと Cloud Functionsを対象タイプに選択します。
      source_commit_use_backup_6_ko
    3. [トリガー作成] ボタンをクリックしてトリガーとアクションを作成します。イベント発生時にビルドプロジェクトを開始するアクション例は、次の通りです。
    const axios = require('axios');
    const CryptoJS = require('crypto-js');
    
    // Signature is the value of `x-ncp-apigw-signature-v2` field in the header.
    function makeSignature(url, timestamp, accessKey, secretKey) {
      const space = ' ',
        newLine = '\n',
        method = 'POST';
    
      const hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, secretKey);
    
      hmac.update(method);
      hmac.update(space);
      hmac.update(url);
      hmac.update(newLine);
      hmac.update(timestamp);
      hmac.update(newLine);
      hmac.update(accessKey);
      const hash = hmac.finalize();
    
      return hash.toString(CryptoJS.enc.Base64);
    }
    
    // Header is required for authentication to call NAVER Cloud Platform API.
    function makeHeader(timestamp, accessKey, signKey) {
      const headers = {
        'Content-Type': 'application/json; charset=utf-8',
        'x-ncp-apigw-timestamp': timestamp,
        'x-ncp-iam-access-key': accessKey,
        'x-ncp-apigw-signature-v2': signKey,
      };
    
      return headers;
    }
    
    /**
     * Action to start(or stop) server(VPC) instances using Server API
     *
     * Input parameters that must be defined as action parameters
     * @params {string} accessKey: NAVER Cloud Platform account access key used for API authentication
     * @params {string} secretKey: NAVER Cloud Platform account secret key used for API authentication
     * @params {string} baseUrl: https://sourcebuild.apigw.ntruss.com
     * @params {string} apiUrl: `/api/v1/project/{projectId}/build`
     *
     * Please refer to the Server API guide for the accurate `baseUrl` and `apiUrl`.
     */
    
    function startBuildProject(params) {
      let apiUrlWithParams = params.apiUrl;
      const url = `${params.baseUrl}${apiUrlWithParams}`;
      const timestamp = new Date().getTime().toString();
      const signKey = makeSignature(apiUrlWithParams, timestamp, params.accessKey, params.secretKey);
      const headers = makeHeader(timestamp, params.accessKey, signKey);
    
      return new Promise((resolve, reject) => {
        axios
          .post(url, {}, { headers: headers }) 
          .then(() => resolve({ done: true }))
          .catch((error) => reject({ done: false, errorMessage: error.response ? error.response.data.message : error.message }));
      });
    }
    
    exports.main = startBuildProject;
    
    1. ウェブフックを作成した後、プッシュイベントを発生させて動作を確認します。
    参考

    Cloud Functionsアクション例の詳しい作成方法は、Cloud Function のサンプルコードをご参照ください。

    SourcePipelineを通じたバックアップ

    NAVERクラウドプラットフォームの SourcePipelineで提供するトリガー機能を利用して SourceCommitリポジトリをバックアップする SourceBuildプロジェクトを実行できます。

    1. バックアップする SourceBuild作成

    最初に SourceCommitリポジトリをバックアップする SourceBuildプロジェクトを作成します。方法は次の通りです。

    1. NAVERクラウドプラットフォームコンソールにアクセスします。
    2. SourceCommitをバックアップする SourceBuildプロジェクトを作成するため、 Services > Developer Tools > SourceBuild メニューを順にクリックします。
    3. SourceBuild画面で [+ビルドプロジェクト作成] ボタンをクリックします。
    4. ビルド対象としてバックアップが必要な SourceCommitリポジトリを選択します。
    5. SourceBuildで管理する ubuntuイメージをビルド環境に選択します。
      source_commit_use_backup_1_ko
    6. 必要に応じてビルドコマンドを設定します。
    7. 結果アップロード設定ビルド結果結果保存 をクリックして選択します。
    • 全体パスを入力してリポジトリをバックアップするように設定します。
      source_commit_use_backup_2_ko
    1. ビルドプロジェクトの作成を完了します。

    2. バックアップする SourcePipeline作成

    SourceCommitで Pushが発生する時、パイプラインが動作して SourceBuildが動作できるように SourcePipelineを作成します。SourcePipelineを通じてユーザーはリポジトリに Pushイベントが発生する度に自動で SourceBuildを実行するように構成できます。この過程でリポジトリのバックアップを自動実行します。方法は次の通りです。

    1. NAVERクラウドプラットフォームコンソールにアクセスします。
    2. Services > Developer Tools > SourcePipeline メニューを順にクリックします。
    3. SourcePipeline画面で [+パイプライン作成] ボタンをクリックします。
    4. パイプラインの名前を設定します。
    5. [タスク追加] ボタンをクリックして作成した SourceBuildプロジェクトを追加します。
    • プロジェクトを追加する時、関連付け情報が正しいか確認します。
      source_commit_use_backup_3_ko
    1. 追加したタスクの [+] ボタンをクリックして先行タスクがあいパイプラインを構成します。
      source_commit_use_backup_4_ko
    2. Trigger設定Push をクリックして選択し、リポジトリを設定します。
      source_commit_use_backup_5_ko
    3. パイプラインの作成を完了します。

    この記事は役に立ちましたか?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.