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
Requirements
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 ~/.flynnrc
[[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 the
https://controller.part removed compared to the
~/.flynnrc` file.
Step 2. Update gitlab-ci
In your 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
...
Replace app-name-staging
with the name of your app. You can find it with flynn apps
.
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.
Recent Comments