Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Add] Read Me for Neo Build Engine (NEBuild, neo-build) #3722

Merged
merged 3 commits into from
Feb 9, 2025

Conversation

cschuchardt88
Copy link
Member

@cschuchardt88 cschuchardt88 commented Feb 7, 2025

Neo Build

This engine, which is also known as NEBuild, provides a JSON schema for a project file that controls how the MSBuild platform processes and builds contracts. Visual Studio uses NEBuild, but NEBuild doesn't depend on Visual Studio. By invoking nebuild.exe or nebuild on your project, you can orchestrate and build contracts in environments where Visual Studio isn't installed.

Visual Studio uses NEBuild to load and build Neo projects. The project files in Visual Studio (*.csproj and others) contain MSBuild XML code that executes when you build a project in the IDE. Visual Studio projects import all the necessary settings (*.nbproj files) and build processes to execute NEBuild tasks, but you can extend or modify them from within Visual Studio or by using a text editor.

What is Neo Build

NEBuild, or the Neo Build Engine, is a platform that automates the process of building, deploying and testing Neo blockchain contracts. It uses a JSON schema to control how the build, deploy and test Neo platform processes and builds or deploys contracts, transactions and/or testing scenarios.

What NEBuild does

  1. Compile contracts
  2. Package contracts
  3. Test contracts
  4. Deploy contracts and nodes
  5. Create wallets and transactions

How NEBuild is used with

  • dotnet
  • Visual Studio
  • Visual Studio Code
  • MSBuild

NEBuild can be used to

  1. Deploy
    • Contracts
    • Nodes
    • Tests
    • Transactions
    • Projects
  2. Create
    • Contracts
    • Transactions
    • Wallets
    • Testing scenarios
    • Projects

How NEBuild works

  • NEBuild uses a JSON schema to instruct dotnet or MSBuild on how to compile the project.
  • NEBuild uses tasks within Visual Studio, which are independent executable components with inputs and outputs.
  • NEBuild uses targets within Visual Studio, which are named sequences of tasks that represent something to be built or done.

Type of change

  • Optimization (the change is only an optimization)
  • Style (the change is only a code style for better maintenance or standard purpose)
  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update

Checklist:

  • My code follows the style guidelines of this project
  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • Any dependent changes have been merged and published in downstream modules

@cschuchardt88 cschuchardt88 added Discussion Initial issue state - proposed but not yet accepted Waiting for Review Easy-to-Review a simple edit; just a few lines labels Feb 7, 2025
@cschuchardt88 cschuchardt88 changed the title Add ReadMe for Neo Build Engine Add ReadMe for NEBuild Feb 7, 2025
@cschuchardt88 cschuchardt88 changed the title Add ReadMe for NEBuild [Add] Read Me for NEBuild Feb 7, 2025
Copy link
Member

@shargon shargon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It will be like neo-express? We can discuss the name?

  • neoForge
  • neoBuilder
  • neoBuild?

@cschuchardt88
Copy link
Member Author

cschuchardt88 commented Feb 7, 2025

It will be like neo-express? We can discuss the name?

  • neoForge
  • neoBuilder
  • neoBuild?

Of course, I call it neo-build But I think NEBuild is better (just application name), it stands for Neo Engine Builder or Neo Build Engine. #3714 is the 1st steps to starting the project. All developers welcome to help build it out.

It will replace neo-express. Also we can use it for internal and github builds and deployment. We can talk more about features and inner workings of the application. We need to standardized the file formats and build process. Here is an example of what to come.

edit:
I like the name neoForge. We can call the application executable NFBuild.exe and errors prefixed in Visual Studio with NF or NB. Code output would be this Error NB2010: Invalid format of JSON in file "myProject.nbproj"

Example of *.csproj File

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net9.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>

    <!-- Protocol Settings -->
    <NeoProtocolAddressVersion>53</NeoProtocolAddressVersion>
  
    <!-- Wallet Configuration -->
    <NeoWalletPassword>Neo123abc</NeoWalletPassword>
    <NeoWalletName>default</NeoWalletName>
    <NeoWalletFileName>DevWallet</NeoWalletFileName>
    <NeoWalletFileFullPath>$(NeoBuildProjectDirectory)$(NeoWalletFileName).json</NeoWalletFileFullPath>
  </PropertyGroup>

  <Target Name="Build" DependsOnTargets="NeoBuildUpdateToolSetEvent">
    <!-- Create a wallet -->
    <NeoWallet Password="$(NeoWalletPassword)" ProtocolAddressVersion="$(NeoProtocolAddressVersion)" Files="$(NeoWalletFileFullPath)" />
  </Target>
    
</Project>

@cschuchardt88 cschuchardt88 changed the title [Add] Read Me for NEBuild [Add] Read Me for Neo Build Engine Feb 7, 2025
@cschuchardt88 cschuchardt88 changed the title [Add] Read Me for Neo Build Engine [Add] Read Me for Neo Build Engine (_NEBuild, neo-build_) Feb 7, 2025
@cschuchardt88 cschuchardt88 changed the title [Add] Read Me for Neo Build Engine (_NEBuild, neo-build_) [Add] Read Me for Neo Build Engine _(NEBuild, neo-build)_ Feb 7, 2025
@cschuchardt88 cschuchardt88 changed the title [Add] Read Me for Neo Build Engine _(NEBuild, neo-build)_ [Add] Read Me for Neo Build Engine (NEBuild, neo-build) Feb 7, 2025
Copy link
Member

@shargon shargon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not master, is ok to me

@cschuchardt88
Copy link
Member Author

cschuchardt88 commented Feb 7, 2025

Thank you. It will take a while to complete. But once completed and tested and NGD approved we can move it to master. I would like @nan01ab @Jim8y @shargon @vncoelho to be engaged with the development of this project.

@cschuchardt88 cschuchardt88 mentioned this pull request Feb 7, 2025
14 tasks
@cschuchardt88 cschuchardt88 removed Discussion Initial issue state - proposed but not yet accepted Waiting for Review Easy-to-Review a simple edit; just a few lines labels Feb 9, 2025
@cschuchardt88 cschuchardt88 merged commit 6e9e99a into neo-project:neo-build Feb 9, 2025
7 checks passed
@cschuchardt88 cschuchardt88 deleted the neo-build/docs branch February 9, 2025 23:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants