split CI pipelines to improve speed and automate deployment to production through manual action

This commit is contained in:
Martin McKeaveney 2021-12-15 18:43:12 +01:00
parent 1ab1e7517d
commit 1cc2b98de5
6 changed files with 100 additions and 71 deletions

41
.github/workflows/deploy-cloud.yaml vendored Normal file
View File

@ -0,0 +1,41 @@
name: Budibase Cloud Deploy
on:
workflow_dispatch:
inputs:
version:
description: Budibase release version. For example - 1.0.0
required: false
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Pull values.yaml from budibase-infra
run: |
curl -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ [c3a7a9d12]
-H 'Accept: application/vnd.github.v3.raw' \
-o values.production.yaml \
-L https://api.github.com/repos/budibase/budibase-infra/contents/kubernetes/values.yaml
- name: Get the latest budibase release version if not specifically set
if: ${{ !github.event.inputs.version }}
id: version
run: |
sudo apt-get install -y jq
release_version=$(cat lerna.json | jq -r '.version')
echo "::set-output name=release_version::$release_version"
- uses: peymanmortazavi/eks-helm-deploy@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-west-1
cluster-name: budibase-eks-production
config-files: values.production.yaml
namespace: budibase
values: appVersion=v${{ github.event.inputs.version || github.steps.version.outputs.release_version }}
name: budibase-prod

View File

@ -1,42 +0,0 @@
name: Budibase Release Helm Charts
on:
workflow_dispatch:
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- uses: actions/setup-node@v1
with:
node-version: 14.x
- run: yarn
- run: yarn bootstrap
- name: 'Get Previous tag'
id: previoustag
uses: "WyriHaximus/github-action-get-previous-tag@v1"
- name: Install Helm
uses: azure/setup-helm@v1
with:
version: v3.4.0
- run: yarn release:helm
env:
BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }}
- name: Configure Git
run: |
git config user.name "Budibase Helm Bot"
git config user.email "<>"
- name: Run chart-releaser
uses: helm/chart-releaser-action@v1.2.1
env:
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"

View File

@ -3,43 +3,52 @@ name: Budibase Release Docker Selfhost
on:
workflow_dispatch:
env:
POSTHOG_TOKEN: ${{ secrets.POSTHOG_TOKEN }}
INTERCOM_TOKEN: ${{ secrets.INTERCOM_TOKEN }}
POSTHOG_URL: ${{ secrets.POSTHOG_URL }}
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- uses: actions/setup-node@v1
with:
node-version: 14.x
- run: yarn
- run: yarn bootstrap
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-west-1
- name: 'Get Previous tag'
id: previoustag
uses: "WyriHaximus/github-action-get-previous-tag@v1"
- name: Build/release Docker images (Self Host)
- name: Tag and release Docker images (Self Host)
run: |
docker login -u $DOCKER_USER -p $DOCKER_PASSWORD
yarn build
yarn build:docker:selfhost
# Get latest release version
sudo apt-get install -y jq
release_version=v$(cat lerna.json | jq -r '.version')
echo "::set-output name=release_version::$release_version"
# Pull apps and worker images
docker pull budibase/apps:$release_version
docker pull budibase/worker:$release_version
# Tag apps and worker images
docker tag budibase/apps:$release_version $SELF_HOST_TAG
docker tag budibase/worker:$release_version $SELF_HOST_TAG
# Push images
docker push --all-tags budibase/apps
docker push --all-tags budibase/worker
env:
DOCKER_USER: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_API_KEY }}
BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }}
SELF_HOST_TAG: latest
# - name: Build and release helm chart
# run: |
# git config user.name "Budibase Helm Bot"
# git config user.email "<>"
# helm package charts/budibase
# git checkout gh-pages
# mv budibase-${{ github.steps.version.outputs.release_version }}.tgz docs
# git commit -m "Helm Release: ${{ github.steps.version.outputs.release_version }}"
# git push
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# - name: Perform github release
# run: |
# echo release
# env:
# GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"

View File

@ -57,4 +57,25 @@ jobs:
DOCKER_PASSWORD: ${{ secrets.DOCKER_API_KEY }}
BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }}
# Release to pre-prod environment
# - name: Pull values.yaml from budibase-infra
# run: |
# curl -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ [c3a7a9d12]
# -H 'Accept: application/vnd.github.v3.raw' \
# -o values.production.yaml \
# -L https://api.github.com/repos/budibase/budibase-infra/contents/kubernetes/values.preprod.yaml
# - name: Deploy to Preprod Environment
# uses: deliverybot/helm@v1
# with:
# release: budibase-preprod
# namespace: budibase
# chart: charts/budibase
# token: ${{ github.token }}
# values: |
# appVersion: ${{ steps.previoustag.outputs.tag }}
# value-files: >-
# [
# "values.preprod.yaml"
# ]
# env:
# KUBECONFIG_FILE: '${{ secrets.PREPROD_KUBECONFIG }}'

BIN
budibase-1.0.0.tgz Normal file

Binary file not shown.

View File