-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathaction.yml
More file actions
78 lines (71 loc) · 2.35 KB
/
action.yml
File metadata and controls
78 lines (71 loc) · 2.35 KB
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
name: "ChartDB Database Sync"
description: "Sync your database schema with ChartDB for automatic ER diagram updates"
author: "ChartDB"
branding:
icon: "database"
color: "blue"
inputs:
db-host:
description: "Database host address"
required: true
db-port:
description: "Database port"
required: false
default: "5432"
db-database:
description: "Database name"
required: true
db-username:
description: "Database username"
required: true
db-password:
description: "Database password (use secrets!)"
required: false
db-type:
description: "Database type (postgresql, mysql, mariadb, mssql)"
required: true
chartdb-api-token:
description: "ChartDB API token (use secrets!)"
required: true
chartdb-diagram-id:
description: "ChartDB diagram ID to sync with"
required: true
network:
description: "Docker network mode"
required: false
default: "host"
outputs:
status:
description: "Sync status"
value: ${{ steps.sync.outputs.status }}
runs:
using: "composite"
steps:
- name: Sync with ChartDB
id: sync
shell: bash
run: |
echo "Starting ChartDB sync..."
# Build docker run command
DOCKER_CMD="docker run --rm --pull always"
DOCKER_CMD="$DOCKER_CMD --name chartdb-syncer-${{ github.run_id }}"
DOCKER_CMD="$DOCKER_CMD --network=${{ inputs.network }}"
DOCKER_CMD="$DOCKER_CMD -e DB_HOST='${{ inputs.db-host }}'"
DOCKER_CMD="$DOCKER_CMD -e DB_PORT='${{ inputs.db-port }}'"
DOCKER_CMD="$DOCKER_CMD -e DB_DATABASE='${{ inputs.db-database }}'"
DOCKER_CMD="$DOCKER_CMD -e DB_USERNAME='${{ inputs.db-username }}'"
DOCKER_CMD="$DOCKER_CMD -e DB_TYPE='${{ inputs.db-type }}'"
DOCKER_CMD="$DOCKER_CMD -e CHARTDB_API_TOKEN='${{ inputs.chartdb-api-token }}'"
DOCKER_CMD="$DOCKER_CMD -e CHARTDB_DIAGRAM_ID='${{ inputs.chartdb-diagram-id }}'"
DOCKER_CMD="$DOCKER_CMD -e DB_PASSWORD='${{ inputs.db-password }}'"
DOCKER_CMD="$DOCKER_CMD ghcr.io/chartdb/syncer:latest"
# Execute sync
eval $DOCKER_CMD
if [ $? -eq 0 ]; then
echo "ChartDB sync completed successfully!"
echo "status=success" >> $GITHUB_OUTPUT
else
echo "ChartDB sync failed!"
echo "status=failed" >> $GITHUB_OUTPUT
exit 1
fi