|
39 | 39 | export/**/*.sql
|
40 | 40 | since_last_remote_commit: true
|
41 | 41 |
|
| 42 | + - name: Install jq |
| 43 | + run: sudo apt-get install -y jq |
| 44 | + |
42 | 45 | - name: Process SQL files
|
43 | 46 | id: process-sql
|
44 | 47 | if: steps.changed-files.outputs.any_changed == 'true'
|
|
60 | 63 | --data "$data" \
|
61 | 64 | -o "$temp_file")
|
62 | 65 |
|
63 |
| - # Return the response regardless of status code |
64 |
| - # This allows the caller to handle the response |
| 66 | + echo "Response (Status $http_code):" |
| 67 | + cat "$temp_file" | jq '.' |
| 68 | + echo "------------------------" |
| 69 | + |
65 | 70 | cat "$temp_file"
|
66 | 71 | }
|
67 | 72 |
|
@@ -104,68 +109,50 @@ jobs:
|
104 | 109 | echo "==========================="
|
105 | 110 |
|
106 | 111 | for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
|
107 |
| - echo "DEBUG: Starting to process file: $file" |
| 112 | + echo "Processing $file" |
108 | 113 | SQL_CONTENT=$(base64 < "$file")
|
109 |
| - echo "DEBUG: SQL content encoded" |
110 | 114 | STEP_ID=$(python3 -c "import uuid; print(str(uuid.uuid4()))")
|
111 | 115 | BASE_URL="${{ steps.bytebase-login.outputs.api_url }}"
|
112 |
| - |
113 |
| - echo "DEBUG: About to make first API call to create sheet" |
114 |
| - response=$(call_api \ |
| 116 | +
|
| 117 | + # Create Sheet |
| 118 | + sheet_data=$(call_api \ |
115 | 119 | "$BASE_URL/projects/$PROJECT/sheets" \
|
116 | 120 | "POST" \
|
117 | 121 | "{\"title\":\"\",\"content\":\"$SQL_CONTENT\",\"type\":\"TYPE_SQL\",\"source\":\"SOURCE_BYTEBASE_ARTIFACT\",\"visibility\":\"VISIBILITY_PUBLIC\"}" \
|
118 | 122 | "Create Sheet")
|
119 | 123 |
|
120 |
| - echo "DEBUG: Raw API Response:" |
121 |
| - echo "$response" |
122 |
| - |
123 |
| - # Option 1: Using grep and cut |
124 |
| - SHEET_NAME=$(echo "$response" | grep -o '"name":"[^"]*"' | cut -d'"' -f4) |
125 |
| - |
126 |
| - # Option 2: Using sed |
127 |
| - # SHEET_NAME=$(echo "$response" | sed -n 's/.*"name":"\([^"]*\)".*/\1/p') |
128 |
| - |
129 |
| - # Option 3: Using jq if available |
130 |
| - # SHEET_NAME=$(echo "$response" | jq -r '.name') |
131 |
| - |
132 |
| - echo "DEBUG: Retrieved sheet name: $SHEET_NAME" |
133 |
| -
|
134 |
| - echo "finishing sheetname ================================================" |
| 124 | + SHEET_NAME=$(echo "$sheet_data" | jq -r '.name') |
| 125 | + echo "Sheet name: $SHEET_NAME" |
135 | 126 |
|
| 127 | + # Create Plan |
136 | 128 | plan_data=$(call_api \
|
137 | 129 | "$BASE_URL/projects/$PROJECT/plans" \
|
138 | 130 | "POST" \
|
139 | 131 | "{\"steps\":[{\"specs\":[{\"id\":\"$STEP_ID\",\"export_data_config\":{\"target\":\"/instances/$INSTANCE/databases/$DATABASE\",\"format\":\"$FORMAT\",\"sheet\":\"$SHEET_NAME\"}}]}],\"title\":\"Export data from $DATABASE\",\"description\":\"EXPORT\"}" \
|
140 | 132 | "Create Plan")
|
| 133 | + |
| 134 | + PLAN_NAME=$(echo "$plan_data" | jq -r '.name') |
| 135 | + echo "Plan name: $PLAN_NAME" |
141 | 136 |
|
142 |
| - echo "finishing plan_data ================================================" |
143 |
| -
|
144 |
| - PLAN_NAME=$(echo "$plan_data" | python3 -c "import sys, json; print(json.load(sys.stdin)['name'])") |
145 |
| -
|
146 |
| - echo "finishing plan_name ================================================" |
147 |
| -
|
| 137 | + # Create Issue |
148 | 138 | issue_data=$(call_api \
|
149 | 139 | "$BASE_URL/projects/$PROJECT/issues" \
|
150 | 140 | "POST" \
|
151 | 141 | "{\"approvers\":[],\"approvalTemplates\":[],\"subscribers\":[],\"title\":\"Issue: Export data from instances/$INSTANCE/databases/$DATABASE\",\"description\":\"SQL request from GitHub\",\"type\":\"DATABASE_DATA_EXPORT\",\"assignee\":\"\",\"plan\":\"$PLAN_NAME\"}" \
|
152 | 142 | "Create Issue")
|
| 143 | + |
| 144 | + ISSUE_NUMBER=$(echo "$issue_data" | jq -r '.name | split("/")[-1]') |
| 145 | + ISSUE_LINK="${{ secrets.BYTEBASE_URL }}/projects/$PROJECT/issues/$ISSUE_NUMBER" |
| 146 | + echo "Issue link: $ISSUE_LINK" |
153 | 147 |
|
154 |
| - echo "finishing issue_data ================================================" |
155 |
| -
|
| 148 | + # Create Rollout |
156 | 149 | rollout_data=$(call_api \
|
157 | 150 | "$BASE_URL/projects/$PROJECT/rollouts" \
|
158 | 151 | "POST" \
|
159 | 152 | "{\"plan\":\"$PLAN_NAME\"}" \
|
160 | 153 | "Create Rollout")
|
161 |
| -
|
162 |
| - echo "finishing rollout_data ================================================" |
163 |
| -
|
164 |
| - ISSUE_NUMBER=$(echo "$issue_data" | python3 -c "import sys, json; print(json.load(sys.stdin)['name'].split('/')[-1])") |
165 |
| - ISSUE_LINK="${{ secrets.BYTEBASE_URL }}/projects/$PROJECT/issues/$ISSUE_NUMBER" |
166 |
| - echo "ISSUE_LINK=$ISSUE_LINK" >> $GITHUB_ENV |
167 |
| -
|
168 |
| - echo "finishing issue_link ================================================" |
| 154 | + |
| 155 | + echo "Rollout created: $(echo "$rollout_data" | jq -r '.name')" |
169 | 156 | done
|
170 | 157 |
|
171 | 158 | - name: Comment on PR
|
|
0 commit comments