Many development teams have embraced the convenience of using Github Actions for their CI/CD workflows. You can now save time and effort by using the Skpr Deploy Github Action in your deploy workflow.
1. Set up credentials
In your Github project settings, add SKPR_USERNAME and SKPR_PASSWORD you were provided as Action Secrets.
2. Create a Github Action workflow
In your project add a .github/workflows/deploy-dev.yml file with the following contents:
name: deploy-dev
on:
push:
branches: [master]
env:
SKPR_USERNAME: ${{ secrets.SKPR_USERNAME }}
SKPR_PASSWORD: ${{ secrets.SKPR_PASSWORD }}
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Skpr Package and Deploy
uses: skpr/package-deploy
with:
env: dev
post-deploy: make deploy
We will break this example down and explain each section.
Deploying to each environment will require a separate workflow. In this example, we want to deploy to the dev
environment whenever code is pushed to the master branch.
on:
push:
branches: [master]
We supply our Skpr credentials as environment variables taken from the Secrets we added in step 1.
env:
SKPR_USERNAME: ${{ secrets.SKPR_USERNAME }}
SKPR_PASSWORD: ${{ secrets.SKPR_PASSWORD }}
We next define our jobs running on a standard Ubuntu machine image:
jobs:
deploy:
runs-on: ubuntu-latest
Our first step simply checks out our code. We need to provide fetch-depth: 0 as we generate the version based off
git describe --tags and need the full git history for that.
steps:
- name: Checkout Code
uses: actions/checkout@v2
with:
fetch-depth: 0
Now to the Skpr specific configuration. We simply declare our skpr/package-deploy Action and provide it with two
configuration options:
- env: the Skpr environment we want to deploy to.
- post-deploy: the commands we want to run on this environment immediately after deploy.
- name: Skpr Package and Deploy
uses: skpr/package-deploy
with:
env: dev
post-deploy: make deploy
Deploying an existing packaged version
Some workflows will require an approval step (e.g. staging) and then deploy the exact same version to a production environment.
This requires listening for the workflow_dispatch event and taking the env and version parameters as inputs.
on:
workflow_dispatch:
inputs:
env:
description: The environment to deploy to
required: true
default: dev
version:
description: The version. Must be an existing packaged version.
required: true
We can skip the package step in our step definition, and use the env and version parameters here.
- name: Skpr Deploy
uses: skpr/package-deploy
with:
env: ${{ github.event.inputs.env }}
version: ${{ github.event.inputs.version }}
package: false
post-deploy: make deploy
Here's the full example of a prod deployment workflow, where the application was packaged in a previous workflow.
name: deploy-prod
on:
workflow_dispatch:
inputs:
env:
description: The environment to deploy to
required: true
default: dev
version:
description: The version. Must be an existing packaged version.
required: true
env:
SKPR_USERNAME: ${{ secrets.SKPR_USERNAME }}
SKPR_PASSWORD: ${{ secrets.SKPR_PASSWORD }}
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Skpr Deploy
uses: skpr/package-deploy
with:
env: ${{ github.event.inputs.env }}
version: ${{ github.event.inputs.version }}
package: false
post-deploy: make deploy
You can trigger a deploy to prod directly from the Actions page in your Github project by specifying the environment
and version parameters.
As you can see, deploying to Skpr using the Skpr Github Action is easy and intuitive, and will suit development teams who are considering using Github Actions for their CI/CD workflows.