5

Setup Obfuscation in AppVeyor

posted by admin

Setup Obfuscation in AppVeyor

 

To setup Babel Obfuscator in AppVeyor build pipeline you need to reference the Babel.Obfuscator NuGet package in your Visual Studio project.

The Babel.Obfuscator NuGet package is not available on NuGet. This package is distributed as a .nupkg file with the Babel Obfuscator Company license. This means that to use Babel Obfuscator tools you need to upload the Babel.Obfuscator NuGet package in your AppVeyor Account feed.

Prerequisites

The following files are required to integrate Babel Obfuscator in AppVeyor:

·         Babel.Obfuscator.9.1.0.nupkg NuGet package file

·         Babel Obfuscator Company License file babel.licenses

Upload Babel Obfuscator on AppVeyor Account Feed

Login to AppVeyor and from Account Settings > NuGet, copy the command line used to upload NuGet package files. Open a PowerShell command prompt and enter the publish package command:

nuget push Babel.Obfuscator.9.1.0.nupkg -ApiKey <your api key> -Source https://ci.appveyor.com/nuget/<appveyor account feed>/api/v2/package

 

Setup AppVeyor NuGet Package Source in Visual Studio

Open Visual Studio and in the Tools > Options dialog search for NuGet. Select Package Source and add the AppVeyor Account feed as follow:

Accept changes by pressing the OK button.

Adding Reference to Babel Obfuscator NuGet

In Visual Studio open your project and add the Babel.Obfuscator NuGet package by selecting the configured AppVeyor source already configured.

The first time you connect to AppVeyor Account feed, a popup will ask to enter your AppVeyor user name and password. Enter the credential used to login your AppVeyor account.

Install Babel.Obfuscator NuGet package by pressing the Install button. When you reference Babel.Obfuscator package the Babel MSBuild task is injected in your project file just before the AfterBuild task to obfuscate the target assembly.

 

After installing Babel.Obfuscator you can rebuild your project to see the obfuscation running in the Output window.

 

Deploying Babel Obfuscator on AppVeyor

Now that the obfuscation run locally on your Visual Studio project, you need to deploy in AppVeyor.
Upload the solution on GitHub (or the Source Control System you have configured in AppVeyor).

Login at https://ci.appveyor.com and create a NEW PROJECT by selecting the GitHub repository you have created for your project.

Now use Visual Studio to create inside the solution folder a file called

appveyor.yml

Note that the solution folder must be the root folder of your GitHub repository to let AppVeyor to use your build configuration instead of the configuration edited in the AppVeyor UI

Then add your babel.licenses license file in the same folder.

The appveyor.yml configures AppVeyor build pipeline and substitute the configuration edited in AppVeyor UI. The appveyor.yml file content for the example project here represented, is the following:

version: '1.0.{build}'

image: Visual Studio 2017

branches:

  only:

  - master

 

init:

  # Good practise, because Windows line endings are different from Unix/Linux ones

  - cmd: git config --global core.autocrlf true

 

# build Configuration, i.e. Debug, Release, etc.

configuration:

  - Release

 

before_build:

  # Display .NET Core version

  - cmd: dotnet --version

 

  # Add private AppVeyor feed source

  - cmd: nuget sources add -Name AppVeyor -Source https://ci.appveyor.com/nuget/babelfornet-kwtc6g3uiwze -UserName xxxxxxxxxxxxxx -Password xxxxxxxxxxxxxx

  # Display minimal restore text

  - cmd: nuget restore ./AppVeyorIntegration/AppVeyorIntegration.sln

 

build:

  verbosity: minimal

 

artifacts:

  - path: ./AppVeyorIntegration/AppVeyorIntegration/bin/$(configuration)/netcoreapp2.1

    name: Build_$(configuration)_$(appveyor_build_version)

    type: zip

 

The relevant parts are:

image: Visual Studio 2017

 

The image property set which system image to use to build your project. As we use to build our application in Visual Studio 2017, you should pick the Visual Studio 2017 image.

 

  # Add private AppVeyor feed source

  - cmd: nuget sources add -Name AppVeyor -Source https://ci.appveyor.com/nuget/babelfornet-kwtc6g3uiwze -UserName xxxxxxxxxxxxxx -Password xxxxxxxxxxxxxx

  # Display minimal restore text

  - cmd: nuget restore ./AppVeyorIntegration/AppVeyorIntegration.sln

Setup NuGet source to add your AppVeyor Account feed. This command ensures AppVeyor can find the Babel.Obfuscator NuGet package we uploaded in AppVeyor Account feed.

Then we restore all packages referenced inside the Visual Studio solution.

 

build:

  verbosity: minimal


The build command that starts the build on AppVeyor.

 

artifacts:

  - path: ./AppVeyorIntegration/AppVeyorIntegration/bin/$(configuration)/netcoreapp2.1

    name: Build_$(configuration)_$(appveyor_build_version)

    type: zip


This command tells AppVeyor that we want to take everything from the build directory, create a zip file called Build_$(configuration)_$(appveyor_build_version) and upload it to AppVeyor’s cloud storage. Ensure to update the path command with the relative path of your project file. We’re ready to commit the yml file to GitHub source control. When we push our changes to GitHub, AppVeyor starts a new build presenting the build output inside the Console. A green bar indicates that a build action has completed.

 

The Artifacts tab displays a list of the artifacts that were created as part of the build action.

By clicking the name of the artifact, the zip file containing the obfuscated assembly will be downloaded.

Conclusion

We have seen how to integrate Babel Obfuscator in AppVeyor continuous integration build using the Babel.Obfuscator NuGet package tool. By referencing Babel.Obfuscator tool package, Babel is injected in the project file to obfuscate the target assembly. The obfuscated assemblies are collected in a zip file downloadable through the Artifacts page.

Back to List