|
61 | 61 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
62 | 62 | ISSUE_TITLE_PREFIX: "[Automation] Testing failed for library: " |
63 | 63 | ISSUE_BODY_PREFIX: "Failure kind: " |
| 64 | + LOG_LINES: "300" |
64 | 65 | strategy: |
65 | 66 | fail-fast: false |
66 | 67 | matrix: |
@@ -135,6 +136,15 @@ jobs: |
135 | 136 | # Extract failure type and failed version |
136 | 137 | awk -F'[][]|:' '/^FAILED/ {print "failure_type="$2; print "failed_version="$4}' test_results.txt >> $GITHUB_OUTPUT |
137 | 138 |
|
| 139 | + # Extract runner log URL |
| 140 | + echo "runner_log_url=https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" >> $GITHUB_OUTPUT |
| 141 | +
|
| 142 | + # Extract log tail |
| 143 | + echo "log_tail<<EOF" >> $GITHUB_OUTPUT |
| 144 | + tail "-n${{ env.LOG_LINES }}" test_results.txt | head -c 900000 >> $GITHUB_OUTPUT |
| 145 | + echo "" >> $GITHUB_OUTPUT |
| 146 | + echo "EOF" >> $GITHUB_OUTPUT |
| 147 | +
|
138 | 148 | - name: "✔️ New library versions are supported (with locks, waiting and retries)" |
139 | 149 | if: steps.runtests.outputs.successful_versions != '' |
140 | 150 | env: |
@@ -188,21 +198,33 @@ jobs: |
188 | 198 | run: | |
189 | 199 | git config --local user.email "[email protected]" |
190 | 200 | git config --local user.name "Github Actions" |
191 | | - |
| 201 | +
|
192 | 202 | FAILED_VERSION="${{ steps.runtests.outputs.failed_version }}" |
193 | 203 | REPO="${{ github.repository }}" |
194 | 204 | TITLE="${{ env.ISSUE_TITLE_PREFIX }}${{ matrix.item.name }}:$FAILED_VERSION" |
195 | | - BODY="${{ env.ISSUE_BODY_PREFIX }}${{ steps.runtests.outputs.failure_type }}" |
| 205 | +
|
| 206 | + BODY_FILE=$(mktemp) |
| 207 | + # Use single-quoted here-doc to disable any shell expansion of log content |
| 208 | + cat > "$BODY_FILE" <<'EOF' |
| 209 | + ${{ env.ISSUE_BODY_PREFIX }}${{ steps.runtests.outputs.failure_type }} |
| 210 | + Runner log: ${{ steps.runtests.outputs.runner_log_url }} |
| 211 | + Last ${{ env.LOG_LINES }} lines of the log: |
| 212 | + ```console |
| 213 | + ${{ steps.runtests.outputs.log_tail }} |
| 214 | + ``` |
| 215 | + EOF |
196 | 216 |
|
197 | 217 | ISSUE_NUMBER=$(gh issue list --repo "$REPO" --state open --search "$TITLE" --json number,title --jq '.[] | select(.title == "'"$TITLE"'") | .number') |
198 | 218 | if [ -n "$ISSUE_NUMBER" ]; then |
199 | 219 | echo "Updating existing issue #$ISSUE_NUMBER" |
200 | | - gh issue edit "$ISSUE_NUMBER" --repo "$REPO" --body "$BODY" |
| 220 | + gh issue edit "$ISSUE_NUMBER" --repo "$REPO" --body-file "$BODY_FILE" |
201 | 221 | else |
202 | 222 | echo "Creating new issue" |
203 | | - gh issue create --repo "$REPO" --title "$TITLE" --body "$BODY" |
| 223 | + gh issue create --repo "$REPO" --title "$TITLE" --body-file "$BODY_FILE" |
204 | 224 | fi |
205 | 225 |
|
| 226 | + rm "$BODY_FILE" |
| 227 | +
|
206 | 228 | process-results: |
207 | 229 | name: "🧪 Process results" |
208 | 230 | runs-on: ubuntu-22.04 |
|
0 commit comments