|
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