How to add Flynn to your GitLab CI/CD workflow
Goal: Make GitLab deploy to Flynn
I will assume you already have your .yml setup to build your project. As I will only cover the deploy section.
You also need to have an app created on your Flynn server and any resources already created. If you need help doing this there is great documentation on the official website https://flynn.io/docs/basics to get you initially setup
Either your Flynn cluster add string that you got on first install
flynn cluster add -p <tls pin> <cluster name> <controller domain> <controller key>
or the backup located in
[[cluster]] Name = "default" Key = "347skdfh2389hskdfds" ControllerURL = "https://controller.my.flynn.site.com" TLSPin = "SLDFKSDF3E0Y3924Y23HJKLHDSFOE=" DockerPushURL = ""
Step 1. Configure Environment Variables
It is highly recommended that you create environment variables in GitLab for the above variables (Settings > CI/CD > Variables). While you could hard-code them… please don’t.
In this tutorial I will be using the following env mapping.
FLYNN_TLS_PIN=SLDFKSDF3E0Y3924Y23HJKLHDSFOE= FLYNN_CLUSTER_NAME=default FLYNN_CONTROLLER_DOMAIN=my.flynn.site.com FLYNN_CONTROLLER_KEY=347skdfh2389hskdfds
Note that the
FLYNN_CONTROLLER_DOMAIN has thehttps://controller.
part removed compared to the~/.flynnrc` file.
Step 2. Update gitlab-ci
gitlab-ci.yml file, create a deploy with the following
... staging: type: deploy script: - L=/usr/local/bin/flynn && curl -sSL -A "`uname -sp`" https://dl.flynn.io/cli | zcat >$L && chmod +x $L - flynn cluster add -p $FLYNN_TLS_PIN $FLYNN_CLUSTER_NAME $FLYNN_CONTROLLER_DOMAIN $FLYNN_CONTROLLER_KEY - flynn -a `app-name-staging` remote add - git push flynn master only: - master ...
app-name-staging with the name of your app. You can find it with
Step 3. Commit and Push
At this point we are essentially done. All commits henceforth will be pushed to Flynn.
Issues? Let me know in the comments below.