Today we are pleased to announce the official release of our Convox Github Actions. With these actions you can easily create a fully-featured CI/CD pipeline for the cloud of your choice. All you need to do is install a Convox Rack for a cloud provider, and create a convox.yml to describe your app and you will be ready to start deploying. For a basic primer on how Github Actions work you can read more here.
The set of actions we have created should be everything you need to build, deploy, and manage your app. They can be combined to enable a wide variety of workflows. These actions work on all Convox Racks on AWS(ECS or EKS), Google Cloud, Digital Ocean, and more to come. The actions are as follows:
This action authenticates your Convox Account and sets login credentials for all subsequent actions.
This action builds your Dockerfile and processes your convox.yml to create a promotable Convox release.
This action runs a command using a previously built release either before or after it’s promoted in your Convox Rack. This action is very handy for things like running migrations before promoting or running a cleanup or notification command after promoting.
This action promotes a release and performs a rolling deploy of your application.
This action performs the build and promote steps in a single action. You can use this when you don’t need to run migrations or perform any other steps between building and promoting.
Let’s take the scenario where we have a Rails app and we want to build it, run migrations, and then promote on our staging Rack. The first thing we will need to do is grab our Convox Deploy Key and create a Github encrypted secret called CONVOX_DEPLOY_KEY
with its value. Now all we need to do is create a .github/workflows/deploy.yml
in our repo that looks something like:
name: CD
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: checkout
id: checkout
uses: actions/checkout@v1
- name: login
id: login
uses: convox/action-login@v1
with:
password: ${{ secrets.CONVOX_DEPLOY_KEY }}
- name: build
id: build
uses: convox/action-build@v1
with:
rack: staging
app: myrailsapp
- name: migrate
id:migrate
uses: convox/action-run@v1
with:
rack: staging
app: myrailsapp
service: web
command: rake db:migrate
release: ${{ steps.build.outputs.release }}
- name: promote
id: promote
uses: convox/action-promote@v1
with:
rack: staging
app: myrailsapp
release: ${{ steps.build.outputs.release }}
Looking through this example we can see it’s fairly simple. The steps are
checkout
- Uses the Github Checkout Action to grab the latest codelogin
- Uses our stored secret deploy key with the login action to authenticate our Convox accountbuild
- Builds our app using the build action creating a releasemigrate
- Runs our migrations with a run action using the new releasepromote
- Promotes our new release using the promote action with a zero-downtime rolling deployYou can find our actions in the Github Marketplace or in our Github Actions Repository. You can combine these actions to create all sorts of interesting workflows. We can’t wait to see what you build with them!