GitHub Actions
このサンプルでは、基本的な WebApi アプリケーションを使って、Babel Obfuscator を GitHub Actions に無理なく統合する方法を紹介します。この統合の目的は、NuGet パッケージを使えば Babel Obfuscator をプロジェクトへ簡単に追加できること、そして GitHub のシークレットを通じてライセンスファイルへ安全にアクセスする方法を示すことです。
さらに、このサンプルでは、NuGet が GitHub のパッケージストアに直接アクセスするように設定し、Babel Obfuscator の NuGet パッケージを依存関係としてプロジェクトにインストールする方法も説明します。手順に沿って進めれば、Babel Obfuscator をプロジェクトに簡単に導入し、その強力な難読化機能を活用できます。
すぐに始められるように、サンプルのソースコードを GitHub リポジトリで公開しています。統合の流れを詳しく確認できます。
git clone https://github.com/babelfornet/webapi-actions-example.gitBabel Obfuscator を GitHub Actions に統合するには、プロジェクトに Babel Obfuscator の NuGet パッケージへの参照を追加する必要があります。このパッケージにより、Babel Obfuscator がビルドプロセスの一部となり、ターゲットアセンブリを難読化します。パッケージは、GitHub のプライベート NuGet フィードから直接ダウンロードしてインストールできます。
Babel Obfuscator の NuGet パッケージを GitHub のパッケージストアにセットアップするには、GitHub のパッケージストアで NuGet パッケージの公開、インストール、削除ができる権限を持つアクセストークンを作成する必要があります(GitHub のドキュメントを参照してください)。その後、dotnet CLI ツールを使って Babel Obfuscator の NuGet パッケージをプッシュできます。
dotnet nuget push .\Babel.Obfuscator.nupkg --api-key TOKEN --source https://nuget.pkg.github.com/USERNAME/index.json上のコマンドの各項目は次のとおりです。
TOKENは、パッケージを公開できる権限を持つ個人用アクセストークンです。USERNAMEは、GitHub の個人アカウントの名前です。
GitHub のパッケージストアから Babel Obfuscator の NuGet パッケージをインストールするには、次の XML 構成ファイルをプロジェクトに追加します。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget" value="https://www.nuget.org/api/v2" />
<add key="github" value="https://nuget.pkg.github.com/USERNAME/index.json" />
</packageSources>
<activePackageSource>
<add key="All" value="(Aggregate source)" />
</activePackageSource>
<packageSourceCredentials>
<github>
<add key="Username" value="babelfornet" />
<add key="ClearTextPassword" value="%PACKAGES_TOKEN%" />
</github>
</packageSourceCredentials>
</configuration>上の XML 構成ファイルの各項目は次のとおりです。
PACKAGES_TOKENは、ストアから読み取る権限を持つ個人用アクセストークンを格納した環境変数です。USERNAMEは、GitHub の個人アカウントの名前です。
Babel Obfuscator の NuGet パッケージをインストールしたら、継続的インテグレーション(CI)のワークフローでこのパッケージを使うように GitHub Actions を設定できます。そのためには、ワークフローを定義する YAML ファイルをリポジトリに作成します。YAML ファイルには、ビルドステップを含め、CI プロセスで実行されるステップを指定します。
YAML ファイルの例を次に示します。
name: dotnet package
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
dotnet-version: [ '8.0.x' ]
steps:
- uses: actions/checkout@v3
- name: Setup .NET Core SDK ${{ matrix.dotnet-version }}
uses: actions/setup-dotnet@v3
with:
dotnet-version: ${{ matrix.dotnet-version }}
- name: Install dependencies
run: dotnet restore
env:
PACKAGES_TOKEN: ${{ secrets.PACKAGES_TOKEN }}
- name: Build
run: dotnet build --configuration Release --no-restore
env:
BABEL_LICENSE: ${{ secrets.BABEL_LICENSE_SECRET }}パッケージ参照に加えて、CI ワークフローで BABEL_LICENSE 環境変数にライセンスファイルのパスを設定する必要もあります。そのためには、ワークフローファイルの env セクションに次の行を追加します。
BABEL_LICENSE: ${{ secrets.BABEL_LICENSE_SECRET }}ここで、シークレット BABEL_LICENSE_SECRET にはライセンスキーが格納されています。プロジェクトファイルで次のプロパティを設定すると、ビルドプロセス中にこのキーが Babel Obfuscator に渡されます。
<PropertyGroup>
<BabelLicense>$(BABEL_LICENSE)</BabelLicense>
</PropertyGroup>BABEL_LICENSE_SECRET は、GitHub リポジトリの設定の「Security > Secrets and variables > Actions」で作成できます。
受け取ったライセンスの種類に応じて、BABEL_LICENSE_SECRET 変数を更新します。
フローティングライセンス
BABEL_LICENSE_SECRET に、次のようにフローティングライセンスのキーを設定します。
BABEL_LICENSE_SECRET=floating:UAZK7-GTO0E-98KR1-CKPUJファイルライセンス
BABEL_LICENSE_SECRET に、ライセンスファイルのパスを設定します。たとえば次のとおりです。
BABEL_LICENSE_SECRET=./Babel/babel.licenses全体として、このサンプルは Babel Obfuscator を GitHub Actions に統合する方法を示すとともに、ライセンスキーのような機密情報へのアクセスを保護することの重要性を示しています。