Initial tinybird setup
ref https://linear.app/tryghost/issue/ANAL-27/setup-tinybird-project-and-cicd - Tinybird has a system for managing it's configuration as code, with full ci/cd support - The tinybird CLI tool uses python, so we'll run that using docker, via `yarn tb` - Some of the files tinybird adds should not be in source control, so we've added those to git ignore - Everything in /ghost/tinybird is tinybird's init config
This commit is contained in:
parent
9d121d8e9a
commit
e41984d0a5
5
.gitignore
vendored
5
.gitignore
vendored
@ -167,3 +167,8 @@ tsconfig.tsbuildinfo
|
|||||||
/apps/admin-x-settings/test-results/
|
/apps/admin-x-settings/test-results/
|
||||||
/apps/admin-x-settings/playwright-report/
|
/apps/admin-x-settings/playwright-report/
|
||||||
/apps/admin-x-settings/playwright/.cache/
|
/apps/admin-x-settings/playwright/.cache/
|
||||||
|
|
||||||
|
# Tinybird
|
||||||
|
.tinyb
|
||||||
|
.venv
|
||||||
|
.diff_tmp
|
||||||
|
31
ghost/tinybird/.tinyenv
Normal file
31
ghost/tinybird/.tinyenv
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
|
||||||
|
# VERSION format is major.minor.patch-post where major, minor, patch and post are integer numbers
|
||||||
|
# bump post to deploy to the current live Release, rollback to previous post version is not available
|
||||||
|
# bump patch or minor to deploy a new Release and auto-promote it to live. Add TB_AUTO_PROMOTE=0 to create the Release in preview status
|
||||||
|
# bump major to deploy a new Release in preview status
|
||||||
|
VERSION=0.0.0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##########
|
||||||
|
# OPTIONAL env vars
|
||||||
|
# Deploy a new Release in preview status (default is 1)
|
||||||
|
# TB_AUTO_PROMOTE=0
|
||||||
|
|
||||||
|
# Check if deploy requires backfilling on preview (default is 1)
|
||||||
|
# TB_CHECK_BACKFILL_REQUIRED=0
|
||||||
|
|
||||||
|
# Force old Releases deletion on promote (default is 0)
|
||||||
|
# Setting it to 1 will remove oldest rollback Releases even when some resource is still in use
|
||||||
|
# TB_FORCE_REMOVE_OLDEST_ROLLBACK=0
|
||||||
|
|
||||||
|
# Don't print CLI version warning message if there's a new available version
|
||||||
|
# TB_VERSION_WARNING=0
|
||||||
|
|
||||||
|
# Skip regression tests
|
||||||
|
# TB_SKIP_REGRESSION=0
|
||||||
|
|
||||||
|
# Use `OBFUSCATE_REGEX_PATTERN` and `OBFUSCATE_PATTERN_SEPARATOR` environment variables to define a regex pattern and a separator (in case of a single string with multiple regex) to obfuscate secrets in the CLI output.
|
||||||
|
# OBFUSCATE_REGEX_PATTERN="https://(www\.)?[^/]+||^Follow these instructions =>"
|
||||||
|
# OBFUSCATE_PATTERN_SEPARATOR=||
|
||||||
|
##########
|
18
ghost/tinybird/README.md
Normal file
18
ghost/tinybird/README.md
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# Tinybird
|
||||||
|
|
||||||
|
This folder contains configuration for Tinybird, so that the stats feature can be used.
|
||||||
|
|
||||||
|
We sync this configuration with Tinybird via the Tinybird CLI.
|
||||||
|
|
||||||
|
## Tinybird CLI
|
||||||
|
|
||||||
|
The Tinybird CLI is used via Docker.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
yarn tb
|
||||||
|
```
|
||||||
|
|
||||||
|
Documentation for the Tinybird CLI: https://docs.tinybird.co/v/0.22.0/cli/overview
|
||||||
|
Note: you can use python if you prefer, but we use Docker for consistency.
|
||||||
|
|
||||||
|
How to work with version control: https://docs.tinybird.co/v/0.22.0/guides/version-control
|
1
ghost/tinybird/requirements.txt
Normal file
1
ghost/tinybird/requirements.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
tinybird-cli>=4,<5
|
21
ghost/tinybird/scripts/append_fixtures.sh
Executable file
21
ghost/tinybird/scripts/append_fixtures.sh
Executable file
@ -0,0 +1,21 @@
|
|||||||
|
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euxo pipefail
|
||||||
|
|
||||||
|
directory="datasources/fixtures"
|
||||||
|
extensions=("csv" "ndjson")
|
||||||
|
|
||||||
|
absolute_directory=$(realpath "$directory")
|
||||||
|
|
||||||
|
for extension in "${extensions[@]}"; do
|
||||||
|
file_list=$(find "$absolute_directory" -type f -name "*.$extension")
|
||||||
|
|
||||||
|
for file_path in $file_list; do
|
||||||
|
file_name=$(basename "$file_path")
|
||||||
|
file_name_without_extension="${file_name%.*}"
|
||||||
|
|
||||||
|
command="tb datasource append $file_name_without_extension datasources/fixtures/$file_name"
|
||||||
|
echo $command
|
||||||
|
$command
|
||||||
|
done
|
||||||
|
done
|
58
ghost/tinybird/scripts/exec_test.sh
Executable file
58
ghost/tinybird/scripts/exec_test.sh
Executable file
@ -0,0 +1,58 @@
|
|||||||
|
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euxo pipefail
|
||||||
|
|
||||||
|
export TB_VERSION_WARNING=0
|
||||||
|
|
||||||
|
run_test() {
|
||||||
|
t=$1
|
||||||
|
echo "** Running $t **"
|
||||||
|
echo "** $(cat $t)"
|
||||||
|
tmpfile=$(mktemp)
|
||||||
|
retries=0
|
||||||
|
TOTAL_RETRIES=3
|
||||||
|
|
||||||
|
# When appending fixtures, we need to retry in case of the data is not replicated in time
|
||||||
|
while [ $retries -lt $TOTAL_RETRIES ]; do
|
||||||
|
# Run the test and store the output in a temporary file
|
||||||
|
bash $t $2 >$tmpfile
|
||||||
|
exit_code=$?
|
||||||
|
if [ "$exit_code" -eq 0 ]; then
|
||||||
|
# If the test passed, break the loop
|
||||||
|
if diff -B ${t}.result $tmpfile >/dev/null 2>&1; then
|
||||||
|
break
|
||||||
|
# If the test failed, increment the retries counter and try again
|
||||||
|
else
|
||||||
|
retries=$((retries+1))
|
||||||
|
fi
|
||||||
|
# If the bash command failed, print an error message and break the loop
|
||||||
|
else
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if diff -B ${t}.result $tmpfile >/dev/null 2>&1; then
|
||||||
|
echo "✅ Test $t passed"
|
||||||
|
rm $tmpfile
|
||||||
|
return 0
|
||||||
|
elif [ $retries -eq $TOTAL_RETRIES ]; then
|
||||||
|
echo "🚨 ERROR: Test $t failed, diff:";
|
||||||
|
diff -B ${t}.result $tmpfile
|
||||||
|
rm $tmpfile
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
echo "🚨 ERROR: Test $t failed with bash command exit code $?"
|
||||||
|
cat $tmpfile
|
||||||
|
rm $tmpfile
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
export -f run_test
|
||||||
|
|
||||||
|
fail=0
|
||||||
|
find ./tests -name "*.test" -print0 | xargs -0 -I {} -P 4 bash -c 'run_test "$@"' _ {} || fail=1
|
||||||
|
|
||||||
|
if [ $fail == 1 ]; then
|
||||||
|
exit -1;
|
||||||
|
fi
|
@ -40,7 +40,8 @@
|
|||||||
"main": "yarn main:monorepo && yarn main:submodules",
|
"main": "yarn main:monorepo && yarn main:submodules",
|
||||||
"main:monorepo": "git checkout main && git pull ${GHOST_UPSTREAM:-origin} main && yarn",
|
"main:monorepo": "git checkout main && git pull ${GHOST_UPSTREAM:-origin} main && yarn",
|
||||||
"main:submodules": "git submodule sync && git submodule update && git submodule foreach \"git checkout main && git pull ${GHOST_UPSTREAM:-origin} main && yarn\"",
|
"main:submodules": "git submodule sync && git submodule update && git submodule foreach \"git checkout main && git pull ${GHOST_UPSTREAM:-origin} main && yarn\"",
|
||||||
"prepare": "husky install .github/hooks"
|
"prepare": "husky install .github/hooks",
|
||||||
|
"tb": "docker run --rm -v $(pwd):/ghost -w /ghost/ghost/tinybird -it tinybirdco/tinybird-cli-docker"
|
||||||
},
|
},
|
||||||
"resolutions": {
|
"resolutions": {
|
||||||
"@tryghost/errors": "1.3.5",
|
"@tryghost/errors": "1.3.5",
|
||||||
|
Loading…
Reference in New Issue
Block a user