Skip to content

Releasing a new update via Zombie and GitHub Releases

Dan Siroky edited this page May 21, 2019 · 1 revision

Currently all HOK Revit Addins can be released to users via **Zombie **and GitHub Releases. Zombie is an Open Source application that runs a Windows Service on user machines and pings GitHub for changes once every few hours. When a new Release is detected it attempts to install it on user machine. This process is persistent until new update successfully installs.

There are couple of steps that need to be taken in order to release a new update.

GitHub Releases

  • Rebuild all relevant HOK Revit Addins. This means replacing all DLLs in the %appdata%/Autodesk/Revit/XXX/Addins location. Please make sure to also include the contents of the Resources folder and *.addin manifest files. Here's a link to contents of a ZIP file.
  • Go to GitHub Releases Releases and create a new Release. Mark all changes with a "new", "improved" and "fixed" tags for reference.

  • Assign a new Tag to the release. Make sure that the tag version is higher than that of the previous release. Zombie uses Semantic version numbering to analyze these tags in order to figure out which version is higher.
  • ZIP and upload DLLs and manifest files discussed in previous point. Make sure that ZIPs are named after the version of Revit that they correspond to. That will make it easier to sort out later. 2019.zip is for Revit 2019 plugins etc.
  • Check "this is a pre-release" checkbox. For now, we only need to publish this as a pre-release. We will use Zombie next to create a new settings file, and change the status of the release. Your release should look like this:

Zombie

  • Launch Zombie UI. You probably want to pull the repository Zombie. Zombie should be distributed to all user's computers, but the UI is for admins only, so that will not be on your machine, until you build it from the Visual Studio Solution. One day in the future we will have an installer for Zombie, so you can install it via that.
  • Once Zombie comes up the UI should be something like this:

  • The above screen will show you what the current installed version of Zombie is based on the latest release from GitHub. Now, in order to submit a new release, we need to generate a new settings file for Zombie, that will point to relevant new files in the Release. We can do that by first pulling down any "pre-releases" from GitHub. Since we just submitted a new pre-release, Zombie should be able to discover that. Just click on this icon:

  • Clicking on that button will put Zombie into a pre-release mode. That means that any updates from the Zombie Service that is still running in the background will be ignored for now. Let's navigate to Mappings.

  • Make sure that zip files are scheduled to be unzipped into the right path. Zombie will pick up what the previous release was, and if any of the files are the same (they all should be unless there is a whole new version update like 2020.zip) it will attempt to put them in the same location as it was in the previous release. In case that it was not able to find a previous location for a file, it will be on the left under "Source Files". If that's the case, just create a new **Target **for it on the right using the "+" button, and point it to that location. So for example there is a new set of DLLs for Revit 2020 so you have a 2020.zip on the left. Create a new Target on the right, set it to %appdata%/Autodesk/Revit/Addins/2020 and drag that zip from left to right.
  • Now that we have all of the targets resolved, we should publish the new Zombie Settings file.

  • By pushing the commit button, Zombie Settings will be published to this repo: Zombie Settings Repo. That repo has three (3) ZombieSettings files:

    • ZombieSettings.json
    • ZombieSettings_beta.json
    • ZombieSettings_test.json
  • This commit will **ONLY **update the ZombieSettings.json (if published from NY ZombieSettings_beta.json) file which was specified in the Zombie UI under General>Settings Location. The other two paths are used only by NY office (_beta) so that we can release a different setting just for NY users if we need to test something on a smaller batch of users. The last one (_test) is used only by me, if I need to test something just on my machine.

!!! Important !!!

  • ZombieSettings.json and ZombieSettings_beta.json need to be the same, if we are just pushing an update and want all of the users to have the same thing. Please make, that once the new setting is committed to GitHub, go to that repo, and copy/paste contents of the ZombieSettings into ZombieSettings_beta. That will ensure that they both contain the same thing. Please pay attention to which file is updated by Zombie UI. If you are in New York and releasing an update that file will be pointing at the _beta settings, so copy from _beta to main settings. If you are elsewhere, copy the other way around. Changes in these files will be minimal. It's usually the Ids of files and description that changes.

  • Ok, so once the Settings all done, we can now convert the pre-release to current release, and Zombie will take over from here. It will be triggered on all users machines and go to work.