Tinybird - Forward Deployment demo #4066
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Tinybird - Forward Deployment demo | |
| on: | |
| workflow_dispatch: | |
| schedule: | |
| - cron: "0 * * * *" | |
| pull_request: | |
| branches: | |
| - main | |
| - master | |
| types: [opened, reopened, labeled, unlabeled, synchronize] | |
| concurrency: ${{ github.workflow }}-${{ github.event.pull_request.number }} | |
| env: | |
| TINYBIRD_FWD_HOST: ${{ secrets.TINYBIRD_FWD_HOST }} | |
| TINYBIRD_FWD_TOKEN: ${{ secrets.TINYBIRD_FWD_TOKEN }} | |
| jobs: | |
| forward_deployment: | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: './forward_deployment' | |
| services: | |
| tinybird: | |
| image: tinybirdco/tinybird-local:beta | |
| ports: | |
| - 7181:7181 | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Install Tinybird CLI | |
| run: curl -LsSf https://tbrd.co/fwd | sh | |
| - name: Tinybird CLI version | |
| run: tb --version | |
| - name: Get datasource definition | |
| run: | | |
| DATASOURCE_SORTING_KEY=$(curl \ | |
| -H "Authorization: Bearer $TINYBIRD_FWD_TOKEN" \ | |
| -X GET "$TINYBIRD_FWD_HOST/v0/datasources/users.datasource" | grep 'ENGINE_SORTING_KEY ""' || true) | |
| echo "DATASOURCE_SORTING_KEY=$DATASOURCE_SORTING_KEY" >> $GITHUB_ENV | |
| - name: Apply patch | |
| run: | | |
| if [ -n "$DATASOURCE_SORTING_KEY" ]; then | |
| cp -r .diff/* . && git diff | |
| else | |
| echo "No changes to apply" | |
| fi | |
| - name: Build project | |
| run: tb build | |
| - name: Deploy project | |
| run: tb --host $TINYBIRD_FWD_HOST --token $TINYBIRD_FWD_TOKEN --cloud deployment create --auto --wait | |
| - name: Populate datasource if empty | |
| run: | | |
| COUNT=$(tb --host $TINYBIRD_FWD_HOST --token $TINYBIRD_FWD_TOKEN --cloud --output json sql "SELECT count() AS c FROM users" | grep '"c":' | awk '{print $2}') | |
| if [ "$COUNT" -eq 0 ]; then | |
| tb --host $TINYBIRD_FWD_HOST --token $TINYBIRD_FWD_TOKEN --cloud copy run populate --wait | |
| else | |
| echo "Datasource is not empty, skipping population" | |
| fi | |
| - name: Check users datasource | |
| run: | | |
| COUNT=$(tb --host $TINYBIRD_FWD_HOST --token $TINYBIRD_FWD_TOKEN --cloud --output json sql "SELECT count() AS c FROM users" | grep '"c":' | awk '{print $2}') | |
| if [ "$COUNT" -eq 1000000000 ]; then | |
| echo "Datasource data is correct" | |
| else | |
| echo "Datasource data is incorrect" | |
| exit 1 | |
| fi | |
| - name: Check user_stats datasource | |
| run: | | |
| COUNT=$(tb --host $TINYBIRD_FWD_HOST --token $TINYBIRD_FWD_TOKEN --cloud --output json sql "SELECT count() AS c FROM user_stats" | grep '"c":' | awk '{print $2}') | |
| if [ "$COUNT" -gt 0 ]; then | |
| echo "Datasource data is correct" | |
| else | |
| echo "Datasource data is incorrect" | |
| exit 1 | |
| fi | |