-
Notifications
You must be signed in to change notification settings - Fork 6
82 lines (79 loc) · 3.17 KB
/
sync-slack.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
name: Incremental Slack sync
on:
workflow_dispatch: {}
schedule:
- cron: '0 6 * * 1'
concurrency:
group: ${{ github.workflow }}
cancel-in-progress: false
jobs:
sync:
runs-on: ubuntu-latest
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: ${{ secrets.AWS_REGION }}
SLACK_API_TOKEN: ${{ secrets.SLACK_API_TOKEN }}
TRINO_VERSION: 471
TRINO_REST_VERSION: "0.165"
TRINO_DEST_SCHEMA: trinoslack.slack
TRINO_SRC_SCHEMA: slack.default
SYNC_CHANNELS: announcements,python,kubernetes,iceberg,delta-lake,trino-gateway,trino-gateway-dev,core-dev,dev,troubleshooting,beginner
SYNC_TABLES: users,channels,channel_members,messages,replies
steps:
- uses: actions/checkout@v4
- name: Download trino-rest
run: |
curl -fLOsS https://github.com/nineinchnick/trino-rest/releases/download/v$TRINO_REST_VERSION/trino-rest-slack-$TRINO_REST_VERSION.zip
unzip trino-rest-slack-$TRINO_REST_VERSION.zip
- name: Start Trino
run: |
cat <<EOF >config.properties
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8080
discovery.uri=http://localhost:8080
query.max-memory-per-node=4086929818B
EOF
mkdir -p $(pwd)/hive-cache && chmod go+w $(pwd)/hive-cache
CONTAINER_ID=$(docker run \
-v $(pwd)/config.properties:/etc/trino/config.properties \
-v $(pwd)/trino-rest-slack-$TRINO_REST_VERSION:/usr/lib/trino/plugin/slack \
-v $(pwd)/catalog/slack.properties:/etc/trino/catalog/slack.properties \
-v $(pwd)/catalog/trinoslack.properties:/etc/trino/catalog/trinoslack.properties \
-v $(pwd)/hive-cache:/opt/hive-cache \
-v $(pwd)/sql:/sql \
-e AWS_ACCESS_KEY_ID \
-e AWS_SECRET_ACCESS_KEY \
-e AWS_REGION \
-e SLACK_API_TOKEN \
-p 8080:8080 \
--name trino \
-d \
trinodb/trino:$TRINO_VERSION)
SERVER_IP=$(docker inspect --format '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$CONTAINER_ID")
echo "CONTAINER_ID=$CONTAINER_ID" >> $GITHUB_ENV
echo "SERVER_IP=$SERVER_IP" >> $GITHUB_ENV
i=0
until docker inspect "${CONTAINER_ID}" --format "{{json .State.Health.Status }}" | grep -q '"healthy"'; do
if [[ $((i++)) -ge 10 ]]; then
echo "🚨 Too many retries waiting for Trino to start"
exit 1
fi
sleep 10
done
- name: Run Sync
run: |
docker run \
-e TRINO_DEST_SCHEMA \
-e TRINO_SRC_SCHEMA \
-e SYNC_CHANNELS \
-e SYNC_TABLES \
-e TRINO_URL=jdbc:trino://$SERVER_IP:8080/github/default \
--rm \
nineinchnick/trino-rest:$TRINO_REST_VERSION \
java -cp "/usr/lib/trino/plugin/slack/*" pl.net.was.rest.slack.Sync
- name: Dump Trino logs
if: always()
run: |
docker logs trino