windmill-labs / windmill-sync-example

28 stars 10 forks source link

Windmill Sync Example

Example repo that demonstrate how to leverage Github to orchestrate your development cycles with Windmill.

How it works

This repo illustrates the following process:

Setup

Github repository setup

First the Github repo needs to be setup and Windmill needs to be able to commit to it.

  1. Create a Github repository
  2. Generate a Github token with write permission to this repository. This is necessary for Windmill to push commits to the repo everytime a change is made to the staging workspase. (keep the token value somewhere, we will need it in the following setup steps)
  3. In the repository settings > Actions > General, tick the Allow GitHub Actions to create and approve pull requests. This is necessary for the Github action automatically creating PRs when Windmill commits a change
  4. From Windmill, create a token under User settings > Token and save it as a secret named WMILL_TOKEN in the repo settings > "Secret and Variable" > "Actions". This is necessary for Windmill to push to the production workspace

Windmill setup

  1. In Windmill, create a git_repository resource pointing to the Github repository and containing the token generated previously. You URL should be https://[USERNAME]:[TOKEN]@github.com/[ORG|USER]/[REPO_NAME].git. Note that you have the possibility to input a custom branch name and a subfolder in this resource. Given that we are going to request Windmill to create one branch per script/flow/app, setting a custom branch will have no effect. However, if you wish to persist the windmill workspace in a subfolder of your repository, you can set it here.
  2. In Windmill workspace settings > Git sync tab, pick the git_repository resource and toggle ON "Create one branch per per deployed script/flow/app"

Github actions setup

Two actions are needed.

  1. The first one to automatically create a PR when Windmill commits a change after a user deployed a script/flow/app in the staging workspace. It is open-pr-on-commit.yaml. All branches created by Windmill will have a wm_deploy/ prefix, which is handy to triger this action only when a branch mathcing this pattern is created.
  2. The second one to automatically push the content of the repo to the Windmill production workspace when a PR is merged. It is push-on-merge.yaml. This action uses the Github CLI which is available by default on Github action workers.