Skip to content

Commit

Permalink
Release v2.5.2 (#6570)
Browse files Browse the repository at this point in the history
## \[2.5.2\] - 2023-07-27

### Added

- We've added support for multi-line text attributes
(<#6458>)
- You can now set a default attribute value for SELECT, RADIO types on
UI
  (<#6474>)
- \[SDK\] `cvat_sdk.datasets`, is now available, providing a
framework-agnostic alternative to `cvat_sdk.pytorch`
  (<#6428>)
- We've introduced analytics for Jobs, Tasks, and Project
(<#6371>)

### Changed

- \[Helm\] In Helm, we've added a configurable default storage option to
the chart (<#6137>)

### Removed

- \[Helm\] In Helm, we've eliminated the obligatory use of hardcoded
traefik ingress (<#6137>)

### Fixed

- Fixed an issue with calculating the number of objects on the
annotation view when frames are deleted
  (<#6493>)
- \[SDK\] In SDK, we've fixed the issue with creating attributes with
blank default values
  (<#6454>)
- \[SDK\] We've corrected a problem in SDK where it was altering input
data in models (<#6455>)
- Fixed exporting of hash for shapes and tags in a specific corner case
(<#6517>)
- Resolved the issue where 3D jobs couldn't be opened in validation mode
(<#6507>)
- Fixed SAM plugin (403 code for workers in organizations)
(<#6514>)
- Fixed the issue where initial frame from query parameter was not
opening specific frame in a job
  (<#6506>)
- Corrected the issue with the removal of the first keyframe
(<#6494>)
- Fixed the display of project previews on small screens and updated
stylelint & rules (<#6551>)
- Implemented server-side validation for attribute specifications
  (<#6447>)
- \[API\] Fixed API issue related to file downloading failures for
filenames with special characters
(<#6492>)
- \[Helm\] In Helm, we've resolved an issue with multiple caches
in the same RWX volume, which was preventing db migration from starting
(<#6137>)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Anastasia Yasakova <yasakova.an@gmail.com>
Co-authored-by: yasakova-anastasia <anastasia@cvat.ai>
Co-authored-by: Roman Donchenko <roman@cvat.ai>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Boris Sekachev <boris.sekachev@yandex.ru>
Co-authored-by: Maxim Zhiltsov <zhiltsov.max35@gmail.com>
Co-authored-by: Kirill Sizov <kirill.sizov@cvat.ai>
Co-authored-by: Nikita Manovich <nikita@cvat.ai>
Co-authored-by: Mariia Acoca <39969264+mdacoca@users.noreply.github.com>
Co-authored-by: Kirill Lakhov <kirill.9992@gmail.com>
Co-authored-by: Michael Kirpichev <mkirpic+github@gmail.com>
Co-authored-by: Michael Kirpichev <m.kirpichev@haut.ai>
Co-authored-by: Boris Sekachev <boris@cvat.ai>
  • Loading branch information
14 people authored Jul 27, 2023
1 parent 07b4456 commit 636dc6a
Show file tree
Hide file tree
Showing 231 changed files with 7,661 additions and 2,194 deletions.
4 changes: 2 additions & 2 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,10 @@
/components/ @azhavoro

# Component: Tests
/tests/ @yasakova-anastasia
/tests/ @kirill-sizov

# Component: Serverless functions
/serverless/ @yasakova-anastasia
/serverless/ @kirill-sizov

# Infrastructure
Dockerfile* @azhavoro
Expand Down
8 changes: 7 additions & 1 deletion .github/codecov.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,11 @@ codecov:
require_ci_to_pass: yes
notify:
wait_for_ci: yes
after_n_builds: 16

coverage:
status:
patch: false
project:
default:
target: auto
threshold: 5%
10 changes: 1 addition & 9 deletions .github/workflows/bandit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,11 @@ jobs:
. .env/bin/activate
pip install -U pip wheel setuptools
pip install bandit
mkdir -p bandit_report
echo "Bandit version: "$(bandit --version | head -1)
echo "The files will be checked: "$(echo $CHANGED_FILES)
bandit -a file --ini .bandit -f html -o ./bandit_report/bandit_checks.html $CHANGED_FILES
bandit -a file --ini .bandit $CHANGED_FILES
deactivate
else
echo "No files with the \"py\" extension found"
fi
- name: Upload artifacts
if: failure()
uses: actions/upload-artifact@v3.1.1
with:
name: bandit_report
path: bandit_report
11 changes: 2 additions & 9 deletions .github/workflows/black.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ jobs:
cvat-cli/**/*.py
tests/python/**/*.py
cvat/apps/quality_control/**/*.py
cvat/apps/analytics_report/**/*.py
dir_names: true

- name: Run checks
Expand All @@ -32,23 +33,15 @@ jobs:
. .env/bin/activate
pip install -U pip wheel setuptools
pip install $(egrep "black.*" ./cvat-cli/requirements/development.txt)
mkdir -p black_report
echo "Black version: "$(black --version)
echo "The dirs will be checked: $UPDATED_DIRS"
EXIT_CODE=0
for DIR in $UPDATED_DIRS; do
black --check --diff $DIR >> ./black_report/black_checks.txt || EXIT_CODE=$(($? | $EXIT_CODE)) || true
black --check --diff $DIR || EXIT_CODE=$(($? | $EXIT_CODE)) || true
done
deactivate
exit $EXIT_CODE
else
echo "No files with the \"py\" extension found"
fi
- name: Upload artifacts
if: failure()
uses: actions/upload-artifact@v3.1.1
with:
name: black_report
path: black_report
11 changes: 1 addition & 10 deletions .github/workflows/eslint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,8 @@ jobs:
run: |
yarn install --frozen-lockfile
(cd tests && yarn install --frozen-lockfile)
yarn add eslint-detailed-reporter -D -W
- name: Run checks
run: |
echo "ESLint version: "$(yarn run -s eslint --version)
mkdir -p eslint_report
yarn run eslint . -f node_modules/eslint-detailed-reporter/lib/detailed.js -o ./eslint_report/eslint_checks.html
- name: Upload artifacts
if: failure()
uses: actions/upload-artifact@v3.1.1
with:
name: eslint_report
path: eslint_report
yarn run eslint .
32 changes: 5 additions & 27 deletions .github/workflows/full.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,19 +52,12 @@ jobs:
- name: CVAT server. Build and push
uses: docker/build-push-action@v3
with:
build-args: |
"COVERAGE_PROCESS_START=.coveragerc"
cache-from: type=local,src=/tmp/cvat_cache_server
context: .
file: Dockerfile
tags: cvat/server
outputs: type=docker,dest=/tmp/cvat_server/image.tar

- name: Instrumentation of the code then rebuilding the CVAT UI
run: |
yarn --frozen-lockfile
yarn run coverage
- name: CVAT UI. Build and push
uses: docker/build-push-action@v3
with:
Expand Down Expand Up @@ -161,8 +154,6 @@ jobs:

- name: Running REST API and SDK tests
id: run_tests
env:
COVERAGE_PROCESS_START: ".coveragerc"
run: |
pip3 install -r cvat-sdk/gen/requirements.txt
./cvat-sdk/gen/generate.sh
Expand All @@ -171,12 +162,7 @@ jobs:
pip3 install -e ./cvat-sdk
pip3 install -e ./cvat-cli
pytest tests/python/ --cov --cov-report xml
- name: Upload coverage reports to Codecov with GitHub Action
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
pytest tests/python/
- name: Creating a log file from cvat containers
if: failure() && steps.run_tests.conclusion == 'failure'
Expand Down Expand Up @@ -236,15 +222,10 @@ jobs:
while [[ $(curl -s -o /dev/null -w "%{http_code}" localhost:8181/health?bundles) != "200" && max_tries -gt 0 ]]; do (( max_tries-- )); sleep 5; done
docker compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.ci.yml run cvat_ci /bin/bash \
-c 'coverage run -a manage.py test cvat/apps && coverage json && mv coverage.json ${CONTAINER_COVERAGE_DATA_DIR}'
-c 'python manage.py test cvat/apps -v 2'
docker compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.ci.yml run cvat_ci /bin/bash \
-c 'yarn --frozen-lockfile --ignore-scripts && yarn workspace cvat-core run test && mv cvat-core/reports/coverage/coverage-final.json ${CONTAINER_COVERAGE_DATA_DIR}'
- name: Upload coverage reports to Codecov with GitHub Action
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
-c 'yarn --frozen-lockfile --ignore-scripts && yarn workspace cvat-core run test'
- name: Creating a log file from cvat containers
if: failure()
Expand Down Expand Up @@ -340,19 +321,16 @@ jobs:
npx cypress run \
--headed \
--browser chrome \
--env coverage=false \
--config-file cypress_canvas3d.config.js \
--spec 'cypress/e2e/${{ matrix.specs }}/**/*.js,cypress/e2e/remove_users_tasks_projects_organizations.js'
else
npx cypress run \
--browser chrome \
--env coverage=false \
--spec 'cypress/e2e/${{ matrix.specs }}/**/*.js,cypress/e2e/remove_users_tasks_projects_organizations.js'
fi
- name: Upload coverage reports to Codecov with GitHub Action
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}

- name: Creating a log file from "cvat" container logs
if: failure()
run: |
Expand Down
22 changes: 2 additions & 20 deletions .github/workflows/hadolint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
- name: Run checks
env:
HADOLINT: "${{ github.workspace }}/hadolint"
HADOLINT_VER: "2.1.0"
HADOLINT_VER: "2.12.0"
VERIFICATION_LEVEL: "error"
run: |
CHANGED_FILES="${{steps.files.outputs.all_changed_files}}"
Expand All @@ -23,26 +23,8 @@ jobs:
curl -sL -o $HADOLINT "https://github.com/hadolint/hadolint/releases/download/v$HADOLINT_VER/hadolint-Linux-x86_64" && chmod 700 $HADOLINT
echo "HadoLint version: "$($HADOLINT --version)
echo "The files will be checked: "$(echo $CHANGED_FILES)
mkdir -p hadolint_report
$HADOLINT --no-fail --format json $CHANGED_FILES > ./hadolint_report/hadolint_report.json
GET_VERIFICATION_LEVEL=$(cat ./hadolint_report/hadolint_report.json | jq -r '.[] | .level')
for LINE in $GET_VERIFICATION_LEVEL; do
if [[ $LINE =~ $VERIFICATION_LEVEL ]]; then
pip install json2html
python ./tests/json_to_html.py ./hadolint_report/hadolint_report.json
exit 1
else
exit 0
fi
done
$HADOLINT -t $VERIFICATION_LEVEL $CHANGED_FILES
else
echo "No files with the \"Dockerfile*\" name found"
fi
- name: Upload artifacts
if: failure()
uses: actions/upload-artifact@v3.1.1
with:
name: hadolint_report
path: hadolint_report
6 changes: 3 additions & 3 deletions .github/workflows/helm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ on:
- 'master'
- 'develop'
pull_request:
types: [edited, ready_for_review, opened, synchronize, reopened]
types: [ready_for_review, opened, synchronize, reopened]
paths-ignore:
- 'site/**'
- '**/*.md'
Expand Down Expand Up @@ -44,11 +44,11 @@ jobs:

- name: Deploy to minikube
run: |
printf " service:\n externalIPs:\n - $(minikube ip)\n" >> tests/values.test.yaml
printf " service:\n externalIPs:\n - $(minikube ip)\n" >> helm-chart/test.values.yaml
cd helm-chart
helm dependency update
cd ..
helm upgrade -n default release-${{ github.run_id }}-${{ github.run_attempt }} -i --create-namespace helm-chart -f helm-chart/values.yaml -f tests/values.test.yaml
helm upgrade -n default release-${{ github.run_id }}-${{ github.run_attempt }} -i --create-namespace helm-chart -f helm-chart/values.yaml -f helm-chart/cvat.values.yaml -f helm-chart/test.values.yaml
- name: Update test config
run: |
Expand Down
11 changes: 2 additions & 9 deletions .github/workflows/isort.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ jobs:
cvat-cli/**/*.py
tests/python/**/*.py
cvat/apps/quality_control/**/*.py
cvat/apps/analytics_report/**/*.py
dir_names: true

- name: Run checks
Expand All @@ -29,23 +30,15 @@ jobs:
. .env/bin/activate
pip install -U pip wheel setuptools
pip install $(egrep "isort.*" ./cvat-cli/requirements/development.txt)
mkdir -p isort_report
echo "isort version: $(isort --version-number)"
echo "The dirs will be checked: $UPDATED_DIRS"
EXIT_CODE=0
for DIR in $UPDATED_DIRS; do
isort --check $DIR >> ./isort_report/isort_checks.txt || EXIT_CODE=$(($? | $EXIT_CODE)) || true
isort --check $DIR || EXIT_CODE=$(($? | $EXIT_CODE)) || true
done
deactivate
exit $EXIT_CODE
else
echo "No files with the \"py\" extension found"
fi
- name: Upload artifacts
if: failure()
uses: actions/upload-artifact@v3.1.1
with:
name: isort_report
path: isort_report
46 changes: 35 additions & 11 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -167,12 +167,14 @@ jobs:
env:
COVERAGE_PROCESS_START: ".coveragerc"
run: |
pytest tests/python/ --cov --cov-report xml
pytest tests/python/ --cov --cov-report=json
- name: Upload coverage reports to Codecov with GitHub Action
uses: codecov/codecov-action@v3
- name: Uploading code coverage results as an artifact
uses: actions/upload-artifact@v3.1.1
with:
token: ${{ secrets.CODECOV_TOKEN }}
name: coverage_results
path: |
coverage*.json
- name: Creating a log file from cvat containers
if: failure() && steps.run_tests.conclusion == 'failure'
Expand Down Expand Up @@ -230,15 +232,18 @@ jobs:
while [[ $(curl -s -o /dev/null -w "%{http_code}" localhost:8181/health?bundles) != "200" && max_tries -gt 0 ]]; do (( max_tries-- )); sleep 5; done
docker compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.ci.yml run cvat_ci /bin/bash \
-c 'coverage run -a manage.py test cvat/apps && coverage json && mv coverage.json ${CONTAINER_COVERAGE_DATA_DIR}'
-c 'coverage run -a manage.py test cvat/apps && coverage json && mv coverage.json ${CONTAINER_COVERAGE_DATA_DIR}/unit_tests_coverage.json'
docker compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.ci.yml run cvat_ci /bin/bash \
-c 'yarn --frozen-lockfile --ignore-scripts && yarn workspace cvat-core run test && mv cvat-core/reports/coverage/coverage-final.json ${CONTAINER_COVERAGE_DATA_DIR}'
- name: Upload coverage reports to Codecov with GitHub Action
uses: codecov/codecov-action@v3
- name: Uploading code coverage results as an artifact
uses: actions/upload-artifact@v3.1.1
with:
token: ${{ secrets.CODECOV_TOKEN }}
name: coverage_results
path: |
${{ github.workspace }}/coverage-final.json
${{ github.workspace }}/unit_tests_coverage.json
- name: Creating a log file from cvat containers
if: failure()
Expand Down Expand Up @@ -339,11 +344,14 @@ jobs:
--browser chrome \
--spec 'cypress/e2e/${{ matrix.specs }}/**/*.js,cypress/e2e/remove_users_tasks_projects_organizations.js'
fi
mv coverage/coverage-final.json coverage/${{ matrix.specs }}_coverage.json
- name: Upload coverage reports to Codecov with GitHub Action
uses: codecov/codecov-action@v3
- name: Uploading code coverage results as an artifact
uses: actions/upload-artifact@v3.1.1
with:
token: ${{ secrets.CODECOV_TOKEN }}
name: coverage_results
path: |
tests/coverage/${{ matrix.specs }}_coverage.json
- name: Creating a log file from "cvat" container logs
if: failure()
Expand Down Expand Up @@ -463,3 +471,19 @@ jobs:
docker tag cvat/ui:latest "${UI_IMAGE_REPO}:dev"
docker push "${UI_IMAGE_REPO}:dev"
codecov:
runs-on: ubuntu-latest
needs: [unit_testing, e2e_testing, rest_api_testing]
steps:
- uses: actions/checkout@v3

- name: Downloading coverage results
uses: actions/download-artifact@v3
with:
name: coverage_results

- name: Upload coverage reports to Codecov with GitHub Action
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
13 changes: 1 addition & 12 deletions .github/workflows/pylint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,24 +23,13 @@ jobs:
python3 -m venv .env
. .env/bin/activate
pip install -U pip wheel setuptools
pip install pylint-json2html
pip install $(egrep "pylint.*==.*" ./cvat/requirements/development.txt)
pip install $(egrep "django==.*" ./cvat/requirements/base.txt)
mkdir -p pylint_report
echo "Pylint version: "$(pylint --version | head -1)
echo "The files will be checked: "$(echo $CHANGED_FILES)
pylint $CHANGED_FILES --output-format=json > ./pylint_report/pylint_checks.json || EXIT_CODE=$(echo $?) || true
pylint-json2html -o ./pylint_report/pylint_checks.html ./pylint_report/pylint_checks.json
pylint $CHANGED_FILES
deactivate
exit $EXIT_CODE
else
echo "No files with the \"py\" extension found"
fi
- name: Upload artifacts
if: failure()
uses: actions/upload-artifact@v3.1.1
with:
name: pylint_report
path: pylint_report
Loading

0 comments on commit 636dc6a

Please sign in to comment.