Skip to content

⬆️ Azure DevOps should support pr-mode flag #614

⬆️ Azure DevOps should support pr-mode flag

⬆️ Azure DevOps should support pr-mode flag #614

Workflow file for this run

name: 'node'
on:
workflow_dispatch:
pull_request:
paths-ignore:
- 'orb/**'
- 'gradle/**'
- 'src/**'
- 'build.gradle.kts'
- 'settings.gradle.kts'
- 'gradle.properties'
- 'gradlew'
- 'gradlew.bat'
- '.github/workflows/gradle.yml'
push:
branches:
- main
- 'releases/*'
paths-ignore:
- 'orb/**'
- 'gradle/**'
- 'src/**'
- 'build.gradle.kts'
- 'settings.gradle.kts'
- 'gradle.properties'
- 'gradlew'
- 'gradlew.bat'
- '.github/workflows/gradle.yml'
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.ref }}
- name: Setup Node.js
id: setup-node
uses: actions/setup-node@v4
with:
node-version-file: .node-version
cache: npm
- name: Install dependencies
run: npm ci && npm run build
- name: Rebuild scan/dist/
run: cd scan && npm run package
- name: Compare the expected and actual dist/ directories
run: |
if [ "$(git diff --ignore-space-at-eol scan/dist/ | wc -l)" -gt "0" ]; then
echo "Detected uncommitted changes after build. See status below:"
git diff
git config user.name github-actions
git config user.email [email protected]
git add .
git commit -m ":bricks: Update \`scan/dist/index.js\`"
git push
exit 1
fi
id: diffscan
# If index.js was different from expected, upload the expected version as an artifact
- uses: actions/upload-artifact@v4
if: ${{ failure() && steps.diffscan.conclusion == 'failure' }}
with:
name: dist
path: scan/dist/
- name: Rebuild vsts/QodanaScan/
run: cd vsts && npm run package
- name: Compare the expected and actual QodanaScan/ directories
run: |
if [ "$(git diff --ignore-space-at-eol vsts/QodanaScan/ | wc -l)" -gt "0" ]; then
echo "Detected uncommitted changes after build. See status below:"
git diff
git config user.name github-actions
git config user.email [email protected]
git add .
git commit -m ":bricks: Update \`vsts/QodanaScan/index.js\`"
git push
exit 1
fi
id: diffvsts
- uses: actions/upload-artifact@v4
if: ${{ failure() && steps.diffvsts.conclusion == 'failure' }}
with:
name: dist
path: vsts/QodanaScan/
- name: Lint the code
run: npm run lint && npm run test
test-action:
runs-on: ${{ matrix.os }}
needs: [lint]
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
directory: [
'tests/dotnet', 'tests/duplicates', 'tests/go', 'tests/java', 'tests/js', 'tests/py_error' # 'tests/cpp',
]
arguments: ['']
pr: [ 'true', 'false' ]
include:
- directory: 'tests/dotnet'
os: 'ubuntu-latest'
arguments: '-l,jetbrains/qodana-cdnet:2024.3-eap'
pr: 'false' # TODO: add true when pr-mode is available for dotnet-community
# - directory: 'tests/cpp'
# arguments: '-l,jetbrains/qodana-clang:2024.3-eap'
# os: 'ubuntu-latest'
# pr: 'false'
- directory: 'tests/java'
arguments: '-l,jetbrains/qodana-jvm-community:2024.3'
os: 'ubuntu-latest'
pr: 'true'
- directory: 'tests/java'
arguments: '-l,jetbrains/qodana-jvm-community:2024.3'
os: 'ubuntu-latest'
pr: 'false'
- directory: 'tests/java'
arguments: '-l,jetbrains/qodana-jvm-android:2024.3'
os: 'ubuntu-latest'
pr: 'true'
- directory: 'tests/java'
arguments: '-l,jetbrains/qodana-jvm-android:2024.3'
os: 'ubuntu-latest'
pr: 'false'
- directory: 'tests/py_error'
arguments: '-l,jetbrains/qodana-python-community:2024.3'
os: 'ubuntu-latest'
pr: 'true'
- directory: 'tests/py_error'
arguments: '-l,jetbrains/qodana-python-community:2024.3'
os: 'ubuntu-latest'
pr: 'false'
- directory: 'tests/dotnet'
arguments: '--ide,QDNET'
os: 'windows-latest'
pr: 'false'
- directory: 'tests/dotnet'
arguments: '--ide,QDNET'
os: 'windows-latest'
pr: 'true'
- directory: 'tests/dotnet'
arguments: '--ide,QDNET'
os: 'ubuntu-latest'
pr: 'false'
- directory: 'tests/dotnet'
arguments: '--ide,QDNET'
os: 'ubuntu-latest'
pr: 'true'
- directory: 'tests/dotnet'
arguments: '--ide,QDNET'
os: 'macos-latest'
pr: 'false'
- directory: 'tests/dotnet'
arguments: '--ide,QDNET'
os: 'macos-latest'
pr: 'true'
- directory: 'tests/duplicates'
arguments: '--ide,QDPHP'
os: 'windows-latest'
pr: 'false'
- directory: 'tests/duplicates'
arguments: '--ide,QDPHP'
os: 'windows-latest'
pr: 'true'
- directory: 'tests/duplicates'
arguments: '--ide,QDPHP'
os: 'ubuntu-latest'
pr: 'false'
- directory: 'tests/duplicates'
arguments: '--ide,QDPHP'
os: 'ubuntu-latest'
pr: 'true'
- directory: 'tests/duplicates'
arguments: '--ide,QDPHP'
os: 'macos-latest'
pr: 'false'
- directory: 'tests/duplicates'
arguments: '--ide,QDPHP'
os: 'macos-latest'
pr: 'true'
- directory: 'tests/go'
arguments: '--ide,QDGO'
os: 'windows-latest'
pr: 'false'
- directory: 'tests/go'
arguments: '--ide,QDGO'
os: 'windows-latest'
pr: 'true'
- directory: 'tests/go'
arguments: '--ide,QDGO'
os: 'ubuntu-latest'
pr: 'false'
- directory: 'tests/go'
arguments: '--ide,QDGO'
os: 'ubuntu-latest'
pr: 'true'
- directory: 'tests/go'
arguments: '--ide,QDGO'
os: 'macos-latest'
pr: 'false'
- directory: 'tests/go'
arguments: '--ide,QDGO'
os: 'macos-latest'
pr: 'true'
- directory: 'tests/js'
arguments: '--ide,QDJS'
os: 'windows-latest'
pr: 'false'
- directory: 'tests/js'
arguments: '--ide,QDJS'
os: 'windows-latest'
pr: 'true'
- directory: 'tests/js'
arguments: '--ide,QDJS'
os: 'ubuntu-latest'
pr: 'false'
- directory: 'tests/js'
arguments: '--ide,QDJS'
os: 'ubuntu-latest'
pr: 'true'
- directory: 'tests/js'
arguments: '--ide,QDJS'
os: 'macos-latest'
pr: 'false'
- directory: 'tests/js'
arguments: '--ide,QDJS'
os: 'macos-latest'
pr: 'true'
- directory: 'tests/py_error'
arguments: '--ide,QDPY'
os: 'windows-latest'
pr: 'false'
- directory: 'tests/py_error'
arguments: '--ide,QDPY'
os: 'windows-latest'
pr: 'true'
- directory: 'tests/py_error'
arguments: '--ide,QDPY'
os: 'ubuntu-latest'
pr: 'false'
- directory: 'tests/py_error'
arguments: '--ide,QDPY'
os: 'ubuntu-latest'
pr: 'true'
- directory: 'tests/py_error'
arguments: '--ide,QDPY'
os: 'macos-latest'
pr: 'false'
- directory: 'tests/py_error'
arguments: '--ide,QDPY'
os: 'macos-latest'
pr: 'true'
- directory: 'tests/py_error'
arguments: '--ide,QDPYC'
os: 'windows-latest'
pr: 'false'
- directory: 'tests/py_error'
arguments: '--ide,QDPYC'
os: 'windows-latest'
pr: 'true'
- directory: 'tests/py_error'
arguments: '--ide,QDPYC'
os: 'ubuntu-latest'
pr: 'false'
- directory: 'tests/py_error'
arguments: '--ide,QDPYC'
os: 'ubuntu-latest'
pr: 'true'
- directory: 'tests/py_error'
arguments: '--ide,QDPYC'
os: 'macos-latest'
pr: 'false'
- directory: 'tests/py_error'
arguments: '--ide,QDPYC'
os: 'macos-latest'
pr: 'true'
- directory: 'tests/java'
arguments: '--ide,QDJVM'
os: 'windows-latest'
pr: 'false'
- directory: 'tests/java'
arguments: '--ide,QDJVM'
os: 'windows-latest'
pr: 'true'
- directory: 'tests/java'
arguments: '--ide,QDJVM'
os: 'ubuntu-latest'
pr: 'false'
- directory: 'tests/java'
arguments: '--ide,QDJVM'
os: 'ubuntu-latest'
pr: 'true'
- directory: 'tests/java'
arguments: '--ide,QDJVM'
os: 'macos-latest'
pr: 'false'
- directory: 'tests/java'
arguments: '--ide,QDJVM'
os: 'macos-latest'
pr: 'true'
- directory: 'tests/java'
arguments: '--ide,QDJVMC'
os: 'windows-latest'
pr: 'false'
- directory: 'tests/java'
arguments: '--ide,QDJVMC'
os: 'windows-latest'
pr: 'true'
- directory: 'tests/java'
arguments: '--ide,QDJVMC'
os: 'ubuntu-latest'
pr: 'false'
- directory: 'tests/java'
arguments: '--ide,QDJVMC'
os: 'ubuntu-latest'
pr: 'true'
- directory: 'tests/java'
arguments: '--ide,QDJVMC'
os: 'macos-latest'
pr: 'false'
- directory: 'tests/java'
arguments: '--ide,QDJVMC'
os: 'macos-latest'
pr: 'true'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/checkout@v4
with:
repository: 'JetBrains/code-analytics-examples'
fetch-depth: 0
path: 'tests'
- name: Remove unwanted files
run:
rm build.gradle.kts settings.gradle.kts
shell: bash
- name: Emulate pull request
run: |
git config --global user.name qodana-bot
git config --global user.email [email protected]
git init
git remote add origin https://github.com/JetBrains/code-analytics-examples.git
echo "test" > README.md
git add README.md
if [ -f ".keep" ]; then
while IFS= read -r file; do
clean_file=$(echo "$file" | tr -d '\r' | sed 's/[[:space:]]*$//')
git add "$clean_file"
done < ".keep"
else
echo ".keep file not found, doing nothing."
fi
git commit -m "Initial commit"
QODANA_PR_SHA=$(git rev-parse HEAD)
echo "QODANA_PR_SHA=$QODANA_PR_SHA" >> $GITHUB_ENV
git checkout -b new-feature
git add .
git commit -m "Add new feature"
working-directory: '${{ matrix.directory }}'
shell: bash
- name: Qodana
uses: ./
with:
args: ${{ format('-i,{0},{1}', matrix.directory, matrix.arguments) }}
pr-mode: ${{ matrix.pr }}
post-pr-comment: false
use-annotations: false
use-caches: false
env:
QODANA_TOKEN: ${{ secrets.QODANA_PROJECT_TESTS_TOKEN }}
QODANA_PR_SHA: ${{ env.QODANA_PR_SHA }}
- name: Show logs
continue-on-error: true
run: cat ${{ runner.temp }}/qodana/results/log/idea.log
azure-dev-release:
runs-on: ubuntu-latest
needs: [ lint ]
steps:
- uses: actions/checkout@v4
- uses: dorny/paths-filter@v3
id: filter
with:
filters: |
azure-dev:
- "vsts/vss-extension.dev.json"
- name: Set Node.js
if: steps.filter.outputs.azure-dev == 'true'
uses: actions/setup-node@v4
with:
node-version-file: .node-version
cache: npm
- name: Install dependencies
if: steps.filter.outputs.azure-dev == 'true'
run: cd vsts && npm install && cd QodanaScan && npm install && npm i -g tfx-cli
- name: Package and publish
id: publisher-run
if: steps.filter.outputs.azure-dev == 'true'
continue-on-error: true
run: |
cd vsts && npm run azure-dev
mv JetBrains.qodana-dev-*.vsix qodana-dev.vsix
tfx extension publish --publisher JetBrains --vsix qodana-dev.vsix --share-with qodana-demo -t $AZURE_TOKEN
env:
AZURE_TOKEN: ${{ secrets.AZURE_TOKEN }}
- name: Upload vsix
if: steps.filter.outputs.azure-dev == 'true'
uses: actions/upload-artifact@v4
with:
name: qodana-dev.vsix
path: vsts/qodana-dev.vsix