Continuous Integration and Delivery are the foundations of modern software development. Continuous Integration and Delivery process is going to help your team in the following areas.
- Revision Control
- Build Automation
- Automated Deployment
- Reduced Overhead
- Consistent Build Process
- Confidence and Team Communication
- Risk Mitigation
In this article, I am going to show you how to set up Continuous Integration and Delivery for SharePoint Framework Web Part.
Tools Needed
- Visual Studio Team Service – Source Control System
- Visual Studio Code – Code Editor
- SharePoint Framework Development Environment – Refer
- Git Repository Project in Visual Studio Team Service(VSTS)
- Git Commands
- A SharePoint Document Library that acts as a CDN
- SharePoint App Catalog Site
- A SharePoint Site to test the app
SharePoint Framework(SPFx) Git Project Configuration
The first step is to create an SPFx Git Repository Project in VSTS.
Example:
Let us clone the newly created Git project into our favorite local folder using the following git command.
git clone -b master repopath
SharePoint Framework(SPFx) Web Part Setup
Go to the project directory using command prompt/ terminal and set up your SPFx Web Part project as explained here. I am going to use my sample code here but feel free to write your own logic in your SPFx Web Part.
This is my project folder structure.
One Time Activity
Let us package artifacts and upload the files in the app catalog site and CDN library.
Open the write-manifests.json file under the config folder and update the cdnBasePath parameter with your CDN SharePoint Document Library path.
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
Make sure you are still in the project directory you used to set up your web part project. In the console window, execute the following gulp task:
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
This will build the minified assets required to upload to the CDN library in temp\deploy directory. Go to your CDN SharePoint Library and upload the generated files.
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
In the console window, execute the following gulp task to package your client-side solution that contains the web part:
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
The command will create the .sppkg package file in the sharepoint/solution.
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
Go to your App Catalog site and upload the generated .sppkg file to the app catalog. This will deploy the client-side solution package. SharePoint will display a dialog and ask you to trust the client-side solution to deploy. Click "Deploy".
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
At this point, the web part is ready to be used on a page. Open a site where you want to test the web part and go the Site contents page of the site. Choose Add – App from the toolbar and choose your app to be installed on the site.
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
After the app has been installed, add the web part in a page.
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
Check-in the code and push the same to the master branch via Visual Studio Code editor.
Climax
At this point, we are ready to integrate our SPFx web part project repository with VSTS continuous build and release process.
Gulp Tasks
Upload the highlighted custom gulp tasks provided by Elio Struyf and install the necessary npm packages as per the instruction is given.
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
Update the gulpfile.js as shown below.
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
Continuous Integration and Delivery Setup in VSTS
Switch back to VSTS
Go to the "Build & Release" section and click the "New" button.
Select the empty template and click "Apply".
Variables
Configure the following variables for the Build and Release. Adjust the values as per your environment.
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
Tasks
Add the following tasks and configure it, as shown below.
Process
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
Get Sources
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
NPM Install – npm
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
Update CDN Location – Gulp
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
Bundle Project – Gulp
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
Package Solution – Gulp
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
Upload Files in CDN – Gulp
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
Upload App Package to App Catalog – Gulp
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
Deploy App – Gulp
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
Trigger
Also, enable the continuous integration settings so that the build process starts when the latest code is checked-in in the master branch.
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
All done. Now, it is time to test our continuous build and release process by pushing a new code change to git repository and check if the build process gets triggered.
Code Change
Let us change the progress bar color to red and check-in the latest change to git.
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
Commit & Push Code Changes
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
Build and Release Status
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
As you can see in the screenshot, the latest code got updated and the progress bar color is reflecting.
Email Notification
![SharePoint Framework Web Part - Continuous Integration And Delivery]()
Note
You can isolate the deployment process from the build process using a release template.