name: Budibase Release Selfhost on: workflow_dispatch: jobs: release: runs-on: ubuntu-latest steps: - name: Fail if not a tag run: | if [[ $GITHUB_REF != refs/tags/* ]]; then echo "Workflow Dispatch can only be run on tags" exit 1 fi - uses: actions/checkout@v2 with: submodules: true token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} fetch-depth: 0 - name: Fail if tag is not in master run: | if ! git merge-base --is-ancestor ${{ github.sha }} origin/master; then echo "Tag is not in master. This pipeline can only execute tags that are present on the master branch" exit 1 fi - name: Use Node.js 18.x uses: actions/setup-node@v1 with: node-version: 18.x - name: Get the latest budibase release version id: version run: | release_version=$(cat lerna.json | jq -r '.version') echo "RELEASE_VERSION=$release_version" >> $GITHUB_ENV - name: Tag and release Docker images (Self Host) run: | docker login -u $DOCKER_USER -p $DOCKER_PASSWORD release_tag=${{ env.RELEASE_VERSION }} # Pull apps and worker images docker pull budibase/apps:$release_tag docker pull budibase/worker:$release_tag docker pull budibase/proxy:$release_tag # Tag apps and worker images docker tag budibase/apps:$release_tag budibase/apps:$SELFHOST_TAG docker tag budibase/worker:$release_tag budibase/worker:$SELFHOST_TAG docker tag budibase/proxy:$release_tag budibase/proxy:$SELFHOST_TAG # Push images docker push budibase/apps:$SELFHOST_TAG docker push budibase/worker:$SELFHOST_TAG docker push budibase/proxy:$SELFHOST_TAG env: DOCKER_USER: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_API_KEY }} SELFHOST_TAG: latest - name: Bootstrap and build (CLI) run: | yarn yarn bootstrap yarn build - name: Build OpenAPI spec run: | pushd packages/server yarn yarn specs popd - name: Setup Helm uses: azure/setup-helm@v1 id: helm-install # due to helm repo index issue: https://github.com/helm/helm/issues/7363 # we need to create new package in a different dir, merge the index and move the package back - name: Build and release helm chart run: | git config user.name "Budibase Helm Bot" git config user.email "<>" git reset --hard git fetch mkdir sync echo "Packaging chart to sync dir" helm package charts/budibase --version "$RELEASE_VERSION" --app-version "$RELEASE_VERSION" --destination sync echo "Packaging successful" git checkout gh-pages echo "Indexing helm repo" helm repo index --merge docs/index.yaml sync mv -f sync/* docs rm -rf sync echo "Pushing new helm release" git add -A git commit -m "Helm Release: ${{ env.RELEASE_VERSION }}" git push env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Perform Github Release uses: softprops/action-gh-release@v1 with: name: ${{ env.RELEASE_VERSION }} tag_name: ${{ env.RELEASE_VERSION }} generate_release_notes: true files: | packages/cli/build/cli-win.exe packages/cli/build/cli-linux packages/cli/build/cli-macos packages/server/specs/openapi.yaml packages/server/specs/openapi.json - name: Discord Webhook Action uses: tsickert/discord-webhook@v4.0.0 with: webhook-url: ${{ secrets.PROD_DEPLOY_WEBHOOK_URL }} content: "Self Host Deployment Complete: ${{ env.RELEASE_VERSION }} deployed to Self Host." embed-title: ${{ env.RELEASE_VERSION }}