Autodesk, Inc. · NASDAQ:ADSK
Autodesk — Autodesk University 2022
28 slides from Autodesk's conference presentation, Sep 27, 2022
Slide 1: Deploy Better Plug-ins Faster Through CI/CD and Unit Testing in Azure DevOps
Deploy Better Plug-ins Faster Through CI/CD and Unit Testing in Azure DevOps SD501013 Andrea Tassera Global Specialist Design Technology - Woods Bagot @dre_tas
Slide 2: How long does it take you to deploy tools?
How long does it take you to deploy tools? 🚀🚀
Slide 3: How do you ensure quality?
How do you ensure quality? ✅
Slide 4: Why are you here
Why are you here How long does it take you to release a How do you ensure quality? new tool? o Get experienced Revit guy to test; o Send files to users and tell them where to o Get mixed group of people to kick the tires; copy them; o Go rogue without testing. o Keep it to yourself and be the on
Slide 5: Assumptions
Assumptions
Slide 6: A few assumptions
A few assumptions Know from the beginning, this is “made by architects for architects” For that reason, we simplify things, and it isn’t entirely orthodox…but it works! We’ll focus on DevOps for Revit plugins (no web apps, etc) We work on a Microsoft environment, as often happens in design e
Slide 7: What is DevOps
What is DevOps And why does it matter
Slide 8: What is DevOps?
What is DevOps? Dev + Ops = Integration between devs and IT team Not only a technical matter, but a cultural shift (less siloes) Empower dev(s) to deploy to users Credit: Atlassian
Slide 9: Why DevOps?
Why DevOps? Once set up it just works, and you can bypass the IT team o Automated process every time it’s triggered o Deploy to the right people Deploy fixes and new features more frequently in less time o Better, more advanced tools o More transparency with end user (credibility) Feel more co
Slide 10: DevOps process
DevOps process Code Commit CI/CD Deploy The developers work on While working on the Commits or merges happening If the previous steps went fine, smaller features (or bug fixes) codebase, the developers will to a specific branch will trigger the pipeline will deploy the on their branches. frequently
Slide 11: What is CI/CD
What is CI/CD
Slide 12: Continuous Integration / Continuous Delivery
Continuous Integration / Continuous Delivery The technical subset of DevOps Continuous Integration o Devs merge smaller code changes to central repo more often o Automated builds, tests and other actions are triggered o Find and address bugs quicker o Improve quality and reliability o Reduce relea
Slide 13: Deployment
Setup the pipeline Install NuGets CI/CD Pipeline Build the solution Version the files Sign the files Test the code Deployment
Slide 14: What you'll need
What you’ll need Batteries not included
Slide 15: Tools and Accounts
Tools and Accounts 1. Any remote git account (GitHub, BitBucket, etc.) 2. An Azure DevOps account (or AWS, etc.) 3. A self-hosted Windows virtual machine (VM) with Revit installed 4. A code certificate 5. pyRevit
Slide 16: How to: overview
How to: overview Practical bits
Slide 17: Pipeline Setup
Pipeline Setup 1. Create a new project in DevOps 2. In the new project, create a new pipeline 3. Connect the pipeline to your remote repo 4. Access your YAML file, automatically created by DevOps 5. Set the trigger (usually a commit / merge to a specific branch) 6. Define the machine (virtual or phy
Slide 18: NuGet Tasks
NuGet Tasks Get all used NuGet packages to successfully build solution 1. Install the NuGet tool in order to install all packages 2. Use the restore command to install external packages 3. Specify vstsFeed to get internal packages source
Slide 19: Build Solution
Build Solution Use MSBuild or VSBuild to build solution Most of the setup is done in the csproj and it’s like building locally The Revit APIs are normally referenced from local files > the pipeline will likely fail. A solution is to use a NuGet package (we use ModPlus, but any will do)
Slide 20: Semantic Versioning
Semantic Versioning 1. This task will automatically assign a version to the resulting files based on the git history of the project 2. The repo needs at least a main/master and a develop branch not to fail 3. Add a GitVersion.SemVer variable to store the version info 4. Setup the GitVersion tool 5.
Slide 21: Code Signing
Code Signing To avoid unverified popup in Revit Store your certificate either in the pipeline Or on Azure KeyVault The pipeline looks like the one on the right if you go the local route
Slide 22: Automated (Unit / Integration) Testing
Automated (Unit / Integration) Testing The tests live under a separate project in the same solution We use Dynamo’s RevitTestFramework to run the tests, but you have options After building, the Windows VM with Revit installed will open Revit and run the tests The results of the tests will be
Slide 23: Deployment
Deployment Our Wombat toolbar for Revit is built upon pyRevit, which makes deployment convenient, being based on git The task is running a few git commands in order to reach all our test groups and general users Process 1. Checkout the correct branch to deploy to 2. Pull from origin to ensure
Slide 24: Deployment
Setup the pipeline Install NuGets CI/CD Pipeline Build the solution Version the files Sign the files Test the code Deployment
Slide 25: Conclusion
Conclusion If you fell asleep halfway and only bring this home
Slide 26: Key Takeaways
Key Takeaways If you forget everything else but this Better process: DevOps Better collaboration: working Better results: not only by practices, through the help of together gets smoother and deploying tools that are CI/CD standardization will less stressful, by establishing more reliable, but also
Slide 27: «
«
Slide 28: Autodesk trademarks and rights notice
Autodesk and the Autodesk logo are registered trademarks or trademarks of Autodesk, Inc., and/or its subsidiaries and/or affiliates in the USA and/or other countries. All other brand names, product names, or trademarks belong to their respective holders. Autodesk reserves the right to alter product