From 1cc2b98de5759abc1a1b08f00b6a84d7333d87b3 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Wed, 15 Dec 2021 18:43:12 +0100 Subject: [PATCH] split CI pipelines to improve speed and automate deployment to production through manual action --- .github/workflows/deploy-cloud.yaml | 41 ++++++++++++++++ .github/workflows/release-charts.yml | 42 ---------------- .github/workflows/release-selfhost.yml | 65 ++++++++++++++----------- .github/workflows/release.yml | 23 ++++++++- budibase-1.0.0.tgz | Bin 0 -> 42683 bytes scripts/latest_budibase_version.sh | 0 6 files changed, 100 insertions(+), 71 deletions(-) create mode 100644 .github/workflows/deploy-cloud.yaml delete mode 100644 .github/workflows/release-charts.yml create mode 100644 budibase-1.0.0.tgz create mode 100644 scripts/latest_budibase_version.sh diff --git a/.github/workflows/deploy-cloud.yaml b/.github/workflows/deploy-cloud.yaml new file mode 100644 index 0000000000..778029bf03 --- /dev/null +++ b/.github/workflows/deploy-cloud.yaml @@ -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 \ No newline at end of file diff --git a/.github/workflows/release-charts.yml b/.github/workflows/release-charts.yml deleted file mode 100644 index 500eb42908..0000000000 --- a/.github/workflows/release-charts.yml +++ /dev/null @@ -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 }}" \ No newline at end of file diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index 4fc8a98350..16f38ec6f1 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -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 }} - \ No newline at end of file + 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 }}" \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d4142f7ac9..43d5eb7b13 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -57,4 +57,25 @@ jobs: DOCKER_PASSWORD: ${{ secrets.DOCKER_API_KEY }} BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }} - # Release to pre-prod environment \ No newline at end of file + # - 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 }}' diff --git a/budibase-1.0.0.tgz b/budibase-1.0.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..72d39b9a73229da1c2b869c637935527be6111e0 GIT binary patch literal 42683 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 D1Vk5` literal 0 HcmV?d00001 diff --git a/scripts/latest_budibase_version.sh b/scripts/latest_budibase_version.sh new file mode 100644 index 0000000000..e69de29bb2