diff --git a/.github/workflows/debug-artifacts-failure.yml b/.github/workflows/debug-artifacts-failure.yml new file mode 100644 index 000000000..7cacccb2d --- /dev/null +++ b/.github/workflows/debug-artifacts-failure.yml @@ -0,0 +1,82 @@ +# Checks logs, SARIF, and database bundle debug artifacts exist +# when the analyze step fails. +name: PR Check - Debug artifact upload after failure +env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +on: + push: + branches: + - main + - releases/v1 + - releases/v2 + pull_request: + types: + - opened + - synchronize + - reopened + - ready_for_review + workflow_dispatch: {} +jobs: + upload-artifacts: + strategy: + matrix: + os: [ubuntu-latest, macos-latest] + name: Upload debug artifacts + timeout-minutes: 45 + runs-on: ${{ matrix.os }} + steps: + - name: Check out repository + uses: actions/checkout@v3 + - name: Prepare test + id: prepare-test + uses: ./.github/prepare-test + with: + version: latest + - uses: ./../action/init + with: + tools: ${{ steps.prepare-test.outputs.tools-url }} + debug: true + debug-artifact-name: my-debug-artifacts + debug-database-name: my-db + - name: Build code + shell: bash + run: ./build.sh + - uses: ./../action/analyze + id: analysis + with: + ram: 1 + download-and-check-artifacts: + name: Download and check debug artifacts after failure in analyze + needs: upload-artifacts + timeout-minutes: 45 + runs-on: ubuntu-latest + steps: + - name: Download all artifacts + uses: actions/download-artifact@v3 + - name: Check expected artifacts exist + shell: bash + run: | + OPERATING_SYSTEMS="ubuntu-latest macos-latest" + LANGUAGES="cpp csharp go java javascript python" + for os in $OPERATING_SYSTEMS; do + pushd "./my-debug-artifacts-$os-latest" + echo "Artifacts from version latest on $os:" + for language in $LANGUAGES; do + echo "- Checking $language" + if [[ ! -f "my-db-$language-partial.zip" ]] ; then + echo "Missing a partial database bundle for $language" + exit 1 + fi + if [[ ! -d "log" ]] ; then + echo "Missing database initialization logs" + exit 1 + fi + if [[ ! -d "$language/log" ]] ; then + echo "Missing logs for $language" + exit 1 + fi + done + popd + done + env: + INTERNAL_CODEQL_ACTION_DEBUG_LOC: true diff --git a/.github/workflows/debug-artifacts.yml b/.github/workflows/debug-artifacts.yml index e10aad0a7..50c7fac55 100644 --- a/.github/workflows/debug-artifacts.yml +++ b/.github/workflows/debug-artifacts.yml @@ -71,6 +71,10 @@ jobs: echo "Missing a database bundle for $language" exit 1 fi + if [[ ! -d "log" ]] ; then + echo "Missing database initialization logs" + exit 1 + fi if [[ ! -d "$language/log" ]] ; then echo "Missing logs for $language" exit 1