Skip to content

Commit be96008

Browse files
nineinchnickJan Waś
authored andcommitted
Add a script for starting the Trino container
1 parent 3a22de1 commit be96008

File tree

5 files changed

+85
-82
lines changed

5 files changed

+85
-82
lines changed

.github/workflows/optimize.yml

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,35 +13,14 @@ jobs:
1313
sync:
1414
runs-on: ubuntu-latest
1515
env:
16+
GITHUB_TOKEN: ${{ secrets.PERSONAL_GITHUB_TOKEN }}
1617
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
1718
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
1819
AWS_REGION: ${{ secrets.AWS_REGION }}
19-
TRINO_VERSION: 445
2020
steps:
2121
- uses: actions/checkout@v4
2222
- name: Start Trino
23-
run: |
24-
CONTAINER_ID=$(docker run \
25-
-v $(pwd)/catalog/trinocicd.properties:/etc/trino/catalog/trinocicd.properties \
26-
-v $(pwd)/sql:/sql \
27-
-e AWS_ACCESS_KEY_ID \
28-
-e AWS_SECRET_ACCESS_KEY \
29-
-e AWS_REGION \
30-
-p 8080:8080 \
31-
--name trino \
32-
-d \
33-
trinodb/trino:$TRINO_VERSION)
34-
SERVER_IP=$(docker inspect --format '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$CONTAINER_ID")
35-
echo "CONTAINER_ID=$CONTAINER_ID" >> $GITHUB_ENV
36-
echo "SERVER_IP=$SERVER_IP" >> $GITHUB_ENV
37-
i=0
38-
until docker inspect "${CONTAINER_ID}" --format "{{json .State.Health.Status }}" | grep -q '"healthy"'; do
39-
if [[ $((i++)) -ge 10 ]]; then
40-
echo "🚨 Too many retries waiting for Trino to start"
41-
exit 1
42-
fi
43-
sleep 10
44-
done
23+
run: ./bin/run-trino.sh
4524
- name: Optimize tables
4625
run: |
4726
docker exec \

.github/workflows/reports.yml

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -16,37 +16,18 @@ jobs:
1616
run:
1717
runs-on: ubuntu-latest
1818
env:
19+
GITHUB_TOKEN: ${{ secrets.PERSONAL_GITHUB_TOKEN }}
1920
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
2021
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
2122
AWS_REGION: ${{ secrets.AWS_REGION }}
22-
TRINO_VERSION: 445
23-
TRINO_GIT_VERSION: "0.74"
2423
steps:
2524
- uses: actions/checkout@v4
2625
- name: Install dependencies
2726
run: |
2827
sudo apt update
2928
sudo pip install ansi2html
30-
curl -fLOsS https://github.com/nineinchnick/trino-git/releases/download/v$TRINO_GIT_VERSION/trino-git-$TRINO_GIT_VERSION.zip
31-
unzip trino-git-$TRINO_GIT_VERSION.zip
3229
- name: Start Trino
33-
run: |
34-
CONTAINER_ID=$(docker run \
35-
-v $(pwd)/trino-git-$TRINO_GIT_VERSION:/usr/lib/trino/plugin/git \
36-
-v $(pwd)/catalog/git.properties:/etc/trino/catalog/git.properties \
37-
-v $(pwd)/catalog/trinocicd.properties:/etc/trino/catalog/trinocicd.properties \
38-
-v $(pwd)/hive-cache:/opt/hive-cache \
39-
-e AWS_ACCESS_KEY_ID \
40-
-e AWS_SECRET_ACCESS_KEY \
41-
-e AWS_REGION \
42-
-p 8080:8080 \
43-
--name trino \
44-
-d \
45-
trinodb/trino:$TRINO_VERSION)
46-
SERVER_IP=$(docker inspect --format '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$CONTAINER_ID")
47-
echo "CONTAINER_ID=$CONTAINER_ID" >> $GITHUB_ENV
48-
echo "SERVER_IP=$SERVER_IP" >> $GITHUB_ENV
49-
until docker logs trino 2>&1 | grep --quiet --fixed-strings --max-count=1 "SERVER STARTED"; do sleep 1 ; done
30+
run: ./bin/run-trino.sh
5031
- name: Execute queries
5132
run: |
5233
./bin/reports.sh reports/ci-cd/index.md "Trino CI/CD Reports" sql/ci-cd/{health,success-ratio-per-day,runs-queue-time-per-day,runs-duration-per-day,runs-job-cumulative-duration-per-day,jobs-duration}.sql

.github/workflows/sync.yml

Lines changed: 1 addition & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ jobs:
1717
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
1818
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
1919
AWS_REGION: ${{ secrets.AWS_REGION }}
20-
TRINO_VERSION: 445
2120
TRINO_REST_VERSION: "0.144"
2221
GITHUB_OWNER: trinodb
2322
GITHUB_REPO: trino
@@ -28,45 +27,11 @@ jobs:
2827
SYNC_TABLES: runs,jobs,steps,check_suites,check_runs,check_run_annotations,pulls,pull_commits,pull_stats,review_comments,reviews,issues,issue_comments,commits,teams,members
2928
steps:
3029
- uses: actions/checkout@v4
31-
- name: Download trino-rest
32-
run: |
33-
curl -fLOsS https://github.com/nineinchnick/trino-rest/releases/download/v$TRINO_REST_VERSION/trino-rest-github-$TRINO_REST_VERSION.zip
34-
unzip trino-rest-github-$TRINO_REST_VERSION.zip
3530
- name: Start Trino
3631
run: |
37-
cat <<EOF >config.properties
38-
coordinator=true
39-
node-scheduler.include-coordinator=true
40-
http-server.http.port=8080
41-
discovery.uri=http://localhost:8080
42-
query.max-memory-per-node=4086929818B
43-
EOF
44-
CONTAINER_ID=$(docker run \
45-
-v $(pwd)/config.properties:/etc/trino/config.properties \
46-
-v $(pwd)/trino-rest-github-$TRINO_REST_VERSION:/usr/lib/trino/plugin/github \
47-
-v $(pwd)/catalog/github.properties:/etc/trino/catalog/github.properties \
48-
-v $(pwd)/catalog/trinocicd.properties:/etc/trino/catalog/trinocicd.properties \
49-
-v $(pwd)/hive-cache:/opt/hive-cache \
50-
-v $(pwd)/sql:/sql \
51-
-e AWS_ACCESS_KEY_ID \
52-
-e AWS_SECRET_ACCESS_KEY \
53-
-e AWS_REGION \
54-
-e GITHUB_TOKEN \
55-
-p 8080:8080 \
56-
--name trino \
57-
-d \
58-
trinodb/trino:$TRINO_VERSION)
32+
./bin/run-trino.sh
5933
SERVER_IP=$(docker inspect --format '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$CONTAINER_ID")
60-
echo "CONTAINER_ID=$CONTAINER_ID" >> $GITHUB_ENV
6134
echo "SERVER_IP=$SERVER_IP" >> $GITHUB_ENV
62-
i=0
63-
until docker inspect "${CONTAINER_ID}" --format "{{json .State.Health.Status }}" | grep -q '"healthy"'; do
64-
if [[ $((i++)) -ge 10 ]]; then
65-
echo "🚨 Too many retries waiting for Trino to start"
66-
exit 1
67-
fi
68-
sleep 10
69-
done
7035
- name: Run Sync
7136
run: |
7237
docker run \

.gitignore

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,10 @@ dist
107107
.idea
108108

109109
# custom Trino connectors
110-
/trino-rest-github-*
111-
/trino-git-*
110+
/bin/trino-rest-github-*
111+
/bin/trino-git-*
112+
/bin/config.properties
113+
/bin/hive-cache
112114

113115
# Jekyll
114116
_site

bin/run-trino.sh

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
#!/usr/bin/env bash
2+
#
3+
# Start a Trino container with additional connectors and catalogs
4+
# configured and wait for it to be ready.
5+
6+
set -euo pipefail
7+
8+
for cmd in curl unzip docker; do
9+
if ! command -v "$cmd" >/dev/null; then
10+
echo >&2 "Missing the $cmd command"
11+
exit 1
12+
fi
13+
done
14+
15+
if [ -z "$AWS_REGION" ] || [ -z "$AWS_ACCESS_KEY_ID" ] || [ -z "$AWS_SECRET_ACCESS_KEY" ] || [ -z "$GITHUB_TOKEN" ]; then
16+
echo >&2 "Following environmental variables need to be set: AWS_REGION, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, GITHUB_TOKEN"
17+
exit 1
18+
fi
19+
20+
CONTAINER_NAME=trino
21+
TRINO_VERSION=455
22+
TRINO_GIT_VERSION=0.83
23+
TRINO_REST_VERSION=0.154
24+
25+
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
26+
cd "$SCRIPT_DIR" || exit 1
27+
28+
if [ ! -d trino-git-$TRINO_GIT_VERSION ]; then
29+
curl -fLOsS https://github.com/nineinchnick/trino-git/releases/download/v$TRINO_GIT_VERSION/trino-git-$TRINO_GIT_VERSION.zip
30+
unzip trino-git-$TRINO_GIT_VERSION.zip
31+
fi
32+
33+
if [ ! -d trino-rest-github-$TRINO_REST_VERSION ]; then
34+
curl -fLOsS https://github.com/nineinchnick/trino-rest/releases/download/v$TRINO_REST_VERSION/trino-rest-github-$TRINO_REST_VERSION.zip
35+
unzip trino-rest-github-$TRINO_REST_VERSION.zip
36+
fi
37+
38+
cat <<EOF >config.properties
39+
coordinator=true
40+
node-scheduler.include-coordinator=true
41+
http-server.http.port=8080
42+
discovery.uri=http://localhost:8080
43+
query.max-memory-per-node=4086929818B
44+
EOF
45+
46+
mkdir -p "$SCRIPT_DIR"/hive-cache
47+
chmod 777 "$SCRIPT_DIR"/hive-cache
48+
docker run \
49+
-v "$SCRIPT_DIR"/config.properties:/etc/trino/config.properties \
50+
-v "$SCRIPT_DIR"/trino-git-$TRINO_GIT_VERSION:/usr/lib/trino/plugin/git \
51+
-v "$SCRIPT_DIR"/trino-rest-github-$TRINO_REST_VERSION:/usr/lib/trino/plugin/github \
52+
-v "$SCRIPT_DIR"/../catalog/git.properties:/etc/trino/catalog/git.properties \
53+
-v "$SCRIPT_DIR"/../catalog/github.properties:/etc/trino/catalog/github.properties \
54+
-v "$SCRIPT_DIR"/../catalog/trinocicd.properties:/etc/trino/catalog/trinocicd.properties \
55+
-v "$SCRIPT_DIR"/hive-cache:/opt/hive-cache \
56+
-v "$SCRIPT_DIR"/../sql:/sql \
57+
-e AWS_ACCESS_KEY_ID \
58+
-e AWS_SECRET_ACCESS_KEY \
59+
-e AWS_REGION \
60+
-e GITHUB_TOKEN \
61+
-p 8080:8080 \
62+
--name $CONTAINER_NAME \
63+
-d \
64+
trinodb/trino:$TRINO_VERSION
65+
66+
i=0
67+
until status=$(docker inspect $CONTAINER_NAME --format "{{json .State.Health.Status }}") && echo "$status" | grep -q '"healthy"'; do
68+
if [[ $((i++)) -ge 10 ]]; then
69+
echo >&2 "🚨 Too many retries waiting for Trino to start"
70+
exit 1
71+
fi
72+
echo >&2 "Status is: $status, sleeping 10 seconds"
73+
sleep 10
74+
done
75+
76+
echo >&2 "Status is: $status, connect to trino://localhost:8080/trinocicd/v2"

0 commit comments

Comments
 (0)