Loading includes/build-jobs.yml +3 −1 Original line number Diff line number Diff line Loading @@ -131,7 +131,9 @@ build-codec-windows-msbuild: rules: - if: $MANUAL_PIPELINE_TYPE == 'long-term-logs' || $MANUAL_PIPELINE_TYPE == 'backup-long-term-logs' || $MANUAL_PIPELINE_TYPE == 'ivas-conformance-linux' || $UPDATE_PAGES || $MANUAL_PIPELINE_TYPE == 'complexity' || $MEASURE_COMPLEXITY_LINUX when: never - if: $CI_PIPELINE_SOURCE == 'web' - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE != 'loudness' && $MANUAL_PIPELINE_TYPE != 'loudness-measurement-only' && $MANUAL_PIPELINE_TYPE != 'loudness-analysis-only' - if: $CI_PIPELINE_SOURCE == 'push' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - if: $CI_PIPELINE_SOURCE == 'schedule' Loading includes/loudness-jobs.yml 0 → 100644 +127 −0 Original line number Diff line number Diff line loudness-measurement: tags: - processing-scripts-linux extends: - .test-job-linux-needs-testv-dir stage: test timeout: 24 hours rules: - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'loudness' - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'loudness-measurement-only' variables: FORMAT_LIST: $LOUDNESS_FORMATS CONFIG_JSON: $LOUDNESS_CONFIG OUT_CONFIGS: $LOUDNESS_OUT_FORMATS FLT_SUFFIX: $LOUDNESS_FILTER_SUFFIX DEC_OPTS: $LOUDNESS_DEC_OPTS allow_failure: exit_codes: - 123 script: - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - set -x - echo "Using formats ${FORMAT_LIST}" - echo "Using config ${CONFIG_JSON}" - echo "Using output configs ${OUT_CONFIGS}" - git clone --single-branch --branch main https://gitlab-ci-token:${CI_JOB_TOKEN}@forge.3gpp.org/rep/ivas-codec-pc/ivas-processing-scripts.git - | if [[ "$CONFIG_JSON" == "scripts/config/ci_linux_ltv.json" ]]; then TEMP_LTV_DIR=$(mktemp -d) cp -r /usr/local/ltv "${TEMP_LTV_DIR}/" sed -i "s|/usr/local/ltv|${TEMP_LTV_DIR}/ltv|g" "${CONFIG_JSON}" export LTV_DIR="${TEMP_LTV_DIR}/ltv" ./scripts/copy-ltv-metadata.sh fi - make -j - | OC_ARG="" [ -n "${OUT_CONFIGS}" ] && OC_ARG="--oc ${OUT_CONFIGS}" DEC_ARG="" [ -n "${DEC_OPTS}" ] && DEC_ARG="-D=${DEC_OPTS}" for fmt in ${FORMAT_LIST}; do ./scripts/runIvasCodec.py -z console -p "${CONFIG_JSON}" -x "${fmt}_b${FLT_SUFFIX}" ${OC_ARG:+${OC_ARG}} ${DEC_ARG:+"${DEC_ARG}"} | tee -a smoke_test_output.txt done - ./scripts/get_loudness_data.py ${CONFIG_JSON} --formats ${FORMAT_LIST} artifacts: name: "loudness-measurements--sha-$CI_COMMIT_SHORT_SHA--results" when: always expire_in: 2 weeks paths: - loudness.csv - smoke_test_output.txt expose_as: "loudness measurements" loudness-analysis: tags: - processing-scripts-linux extends: - .test-job-linux-needs-testv-dir stage: compare rules: - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'loudness' - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'loudness-analysis-only' needs: - job: loudness-measurement artifacts: true optional: true before_script: - !reference [ .test-job-linux-needs-testv-dir, before_script ] - | if [ ! -f "loudness.csv" ]; then echo "No loudness.csv found in current pipeline, fetching from last successful measurement job..." job_id=$(python3 ci/get_id_of_last_job_occurence.py $CI_COMMIT_REF_NAME "loudness-measurement" $CI_PROJECT_ID --success_only) echo "Found job ID: $job_id" if [ "$JOB_ID_INJECT" != "" ]; then job_id=$JOB_ID_INJECT echo "Using injected job ID: $job_id" fi if [ "$job_id" == "-1" ]; then echo "ERROR: No successful loudness-measurement job found on branch $CI_COMMIT_REF_NAME" exit 1 fi # Download and extract artifacts curl --silent --show-error --request GET "$CI_API_V4_URL/projects/$CI_PROJECT_ID/jobs/$job_id/artifacts" --output artifacts.zip unzip -qq artifacts.zip || true if [ ! -f "loudness.csv" ]; then echo "ERROR: loudness.csv not found in artifacts from job $job_id" exit 1 fi echo "Successfully fetched loudness.csv from job $job_id" else echo "loudness.csv found in current pipeline artifacts" fi script: - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - set -x - git clone --single-branch --branch main https://gitlab-ci-token:${CI_JOB_TOKEN}@forge.3gpp.org/rep/ivas-codec-pc/ivas-processing-scripts.git - ./scripts/parse_loudness_data.py artifacts: name: "loudness-analysis--sha-$CI_COMMIT_SHORT_SHA--results" when: always expire_in: 2 weeks paths: - plots/ expose_as: "loudness analysis results" main-float.yml +55 −1 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ include: - local: includes/default-variables.yml - local: includes/job-templates.yml - local: includes/complexity-jobs.yml - local: includes/loudness-jobs.yml - local: includes/smoke-test.yml - local: includes/build-jobs.yml - local: includes/rules.yml Loading Loading @@ -53,6 +54,50 @@ variables: COVERAGE_OUTPUT_FILE_MERGED: "coverage-merged.info" MAKE_BUILD_LOG_FILE_REFERENCE: "make-build-log-ref" LOUDNESS_CONFIG: description: "Config JSON file path (needs MANUAL_PIPELINE_TYPE loudness*)" value: "scripts/config/ci_loudness_linux.json" options: - "scripts/config/ci_linux_ltv.json" - "scripts/config/ci_linux.json" - "scripts/config/ci_loudness_linux.json" LOUDNESS_FORMATS: description: "Space-separated list of formats to test (needs MANUAL_PIPELINE_TYPE loudness*)" value: > mono stereo MC_5_1 MC_5_1_2 MC_5_1_4 MC_7_1 MC_7_1_4 ISM1 ISM2 ISM3 ISM4 FOA HOA2 HOA3 MASA_1TC MASA_2TC OMASA_ISM1_1TC OMASA_ISM2_1TC OMASA_ISM3_1TC OMASA_ISM4_1TC OMASA_ISM1_2TC OMASA_ISM2_2TC OMASA_ISM3_2TC OMASA_ISM4_2TC OSBA_ISM1_FOA OSBA_ISM2_FOA OSBA_ISM3_FOA OSBA_ISM4_FOA OSBA_ISM1_HOA2 OSBA_ISM2_HOA2 OSBA_ISM3_HOA2 OSBA_ISM4_HOA2 OSBA_ISM1_HOA3 OSBA_ISM2_HOA3 OSBA_ISM3_HOA3 OSBA_ISM4_HOA3 LOUDNESS_OUT_FORMATS: description: "Space-separated lists of output formats to run (needs MANUAL_PIPELINE_TYPE loudness*). Available options: mono stereo 5_1 5_1_2 5_1_4 7_1 7_1_4 FOA HOA2 HOA3 BINAURAL BINAURAL_ROOM_IR BINAURAL_ROOM_REVERB EXT" value: "" LOUDNESS_DEC_OPTS: description: "Decoder options for runIvasCodec.py; will be added with -D='LOUDNESS_DEC_OPTS' (needs MANUAL_PIPELINE_TYPE loudness*)" value: "" LOUDNESS_FILTER_SUFFIX: description: "Additional regex to append to -x argument of runIvasCodec.py (needs MANUAL_PIPELINE_TYPE loudness*)" value: '.*' options: - '.*' - '.*_fb_cbr' - '.*_swb_cbr' - '.*_wb_cbr' - '[\d_]*_fb_cbr' - '[\d_]*_swb_cbr' - '[\d_]*_wb_cbr' - '[\d_]*_dtx_fb_cbr' - '[\d_]*_dtx_swb_cbr' - '[\d_]*_dtx_wb_cbr' - '.*_fb_rs' - '.*_swb_rs' - '.*_wb_rs' # This sets when pipelines are created. Jobs have more specific rules to restrict them. workflow: name: "$IVAS_PIPELINE_NAME" Loading Loading @@ -98,7 +143,16 @@ workflow: IVAS_PIPELINE_NAME: "Coverage measurement" - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'complexity' variables: IVAS_PIPELINE_NAME: 'Complexity Measurement on $CI_COMMIT_BRANCH' IVAS_PIPELINE_NAME: "Complexity Measurement on $CI_COMMIT_BRANCH" - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'loudness' variables: IVAS_PIPELINE_NAME: "Loudness measurement and analysis on $CI_COMMIT_BRANCH for $LOUDNESS_CONFIG $LOUDNESS_FILTER_SUFFIX" - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'loudness-measurement-only' variables: IVAS_PIPELINE_NAME: "Loudness measurement on $CI_COMMIT_BRANCH for $LOUDNESS_CONFIG $LOUDNESS_FILTER_SUFFIX" - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'loudness-analysis-only' variables: IVAS_PIPELINE_NAME: "Loudness analysis on $CI_COMMIT_BRANCH for $LOUDNESS_CONFIG $LOUDNESS_FILTER_SUFFIX" # --------------------------------------------------------------- # Rules templates Loading Loading
includes/build-jobs.yml +3 −1 Original line number Diff line number Diff line Loading @@ -131,7 +131,9 @@ build-codec-windows-msbuild: rules: - if: $MANUAL_PIPELINE_TYPE == 'long-term-logs' || $MANUAL_PIPELINE_TYPE == 'backup-long-term-logs' || $MANUAL_PIPELINE_TYPE == 'ivas-conformance-linux' || $UPDATE_PAGES || $MANUAL_PIPELINE_TYPE == 'complexity' || $MEASURE_COMPLEXITY_LINUX when: never - if: $CI_PIPELINE_SOURCE == 'web' - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE != 'loudness' && $MANUAL_PIPELINE_TYPE != 'loudness-measurement-only' && $MANUAL_PIPELINE_TYPE != 'loudness-analysis-only' - if: $CI_PIPELINE_SOURCE == 'push' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - if: $CI_PIPELINE_SOURCE == 'schedule' Loading
includes/loudness-jobs.yml 0 → 100644 +127 −0 Original line number Diff line number Diff line loudness-measurement: tags: - processing-scripts-linux extends: - .test-job-linux-needs-testv-dir stage: test timeout: 24 hours rules: - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'loudness' - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'loudness-measurement-only' variables: FORMAT_LIST: $LOUDNESS_FORMATS CONFIG_JSON: $LOUDNESS_CONFIG OUT_CONFIGS: $LOUDNESS_OUT_FORMATS FLT_SUFFIX: $LOUDNESS_FILTER_SUFFIX DEC_OPTS: $LOUDNESS_DEC_OPTS allow_failure: exit_codes: - 123 script: - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - set -x - echo "Using formats ${FORMAT_LIST}" - echo "Using config ${CONFIG_JSON}" - echo "Using output configs ${OUT_CONFIGS}" - git clone --single-branch --branch main https://gitlab-ci-token:${CI_JOB_TOKEN}@forge.3gpp.org/rep/ivas-codec-pc/ivas-processing-scripts.git - | if [[ "$CONFIG_JSON" == "scripts/config/ci_linux_ltv.json" ]]; then TEMP_LTV_DIR=$(mktemp -d) cp -r /usr/local/ltv "${TEMP_LTV_DIR}/" sed -i "s|/usr/local/ltv|${TEMP_LTV_DIR}/ltv|g" "${CONFIG_JSON}" export LTV_DIR="${TEMP_LTV_DIR}/ltv" ./scripts/copy-ltv-metadata.sh fi - make -j - | OC_ARG="" [ -n "${OUT_CONFIGS}" ] && OC_ARG="--oc ${OUT_CONFIGS}" DEC_ARG="" [ -n "${DEC_OPTS}" ] && DEC_ARG="-D=${DEC_OPTS}" for fmt in ${FORMAT_LIST}; do ./scripts/runIvasCodec.py -z console -p "${CONFIG_JSON}" -x "${fmt}_b${FLT_SUFFIX}" ${OC_ARG:+${OC_ARG}} ${DEC_ARG:+"${DEC_ARG}"} | tee -a smoke_test_output.txt done - ./scripts/get_loudness_data.py ${CONFIG_JSON} --formats ${FORMAT_LIST} artifacts: name: "loudness-measurements--sha-$CI_COMMIT_SHORT_SHA--results" when: always expire_in: 2 weeks paths: - loudness.csv - smoke_test_output.txt expose_as: "loudness measurements" loudness-analysis: tags: - processing-scripts-linux extends: - .test-job-linux-needs-testv-dir stage: compare rules: - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'loudness' - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'loudness-analysis-only' needs: - job: loudness-measurement artifacts: true optional: true before_script: - !reference [ .test-job-linux-needs-testv-dir, before_script ] - | if [ ! -f "loudness.csv" ]; then echo "No loudness.csv found in current pipeline, fetching from last successful measurement job..." job_id=$(python3 ci/get_id_of_last_job_occurence.py $CI_COMMIT_REF_NAME "loudness-measurement" $CI_PROJECT_ID --success_only) echo "Found job ID: $job_id" if [ "$JOB_ID_INJECT" != "" ]; then job_id=$JOB_ID_INJECT echo "Using injected job ID: $job_id" fi if [ "$job_id" == "-1" ]; then echo "ERROR: No successful loudness-measurement job found on branch $CI_COMMIT_REF_NAME" exit 1 fi # Download and extract artifacts curl --silent --show-error --request GET "$CI_API_V4_URL/projects/$CI_PROJECT_ID/jobs/$job_id/artifacts" --output artifacts.zip unzip -qq artifacts.zip || true if [ ! -f "loudness.csv" ]; then echo "ERROR: loudness.csv not found in artifacts from job $job_id" exit 1 fi echo "Successfully fetched loudness.csv from job $job_id" else echo "loudness.csv found in current pipeline artifacts" fi script: - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - set -x - git clone --single-branch --branch main https://gitlab-ci-token:${CI_JOB_TOKEN}@forge.3gpp.org/rep/ivas-codec-pc/ivas-processing-scripts.git - ./scripts/parse_loudness_data.py artifacts: name: "loudness-analysis--sha-$CI_COMMIT_SHORT_SHA--results" when: always expire_in: 2 weeks paths: - plots/ expose_as: "loudness analysis results"
main-float.yml +55 −1 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ include: - local: includes/default-variables.yml - local: includes/job-templates.yml - local: includes/complexity-jobs.yml - local: includes/loudness-jobs.yml - local: includes/smoke-test.yml - local: includes/build-jobs.yml - local: includes/rules.yml Loading Loading @@ -53,6 +54,50 @@ variables: COVERAGE_OUTPUT_FILE_MERGED: "coverage-merged.info" MAKE_BUILD_LOG_FILE_REFERENCE: "make-build-log-ref" LOUDNESS_CONFIG: description: "Config JSON file path (needs MANUAL_PIPELINE_TYPE loudness*)" value: "scripts/config/ci_loudness_linux.json" options: - "scripts/config/ci_linux_ltv.json" - "scripts/config/ci_linux.json" - "scripts/config/ci_loudness_linux.json" LOUDNESS_FORMATS: description: "Space-separated list of formats to test (needs MANUAL_PIPELINE_TYPE loudness*)" value: > mono stereo MC_5_1 MC_5_1_2 MC_5_1_4 MC_7_1 MC_7_1_4 ISM1 ISM2 ISM3 ISM4 FOA HOA2 HOA3 MASA_1TC MASA_2TC OMASA_ISM1_1TC OMASA_ISM2_1TC OMASA_ISM3_1TC OMASA_ISM4_1TC OMASA_ISM1_2TC OMASA_ISM2_2TC OMASA_ISM3_2TC OMASA_ISM4_2TC OSBA_ISM1_FOA OSBA_ISM2_FOA OSBA_ISM3_FOA OSBA_ISM4_FOA OSBA_ISM1_HOA2 OSBA_ISM2_HOA2 OSBA_ISM3_HOA2 OSBA_ISM4_HOA2 OSBA_ISM1_HOA3 OSBA_ISM2_HOA3 OSBA_ISM3_HOA3 OSBA_ISM4_HOA3 LOUDNESS_OUT_FORMATS: description: "Space-separated lists of output formats to run (needs MANUAL_PIPELINE_TYPE loudness*). Available options: mono stereo 5_1 5_1_2 5_1_4 7_1 7_1_4 FOA HOA2 HOA3 BINAURAL BINAURAL_ROOM_IR BINAURAL_ROOM_REVERB EXT" value: "" LOUDNESS_DEC_OPTS: description: "Decoder options for runIvasCodec.py; will be added with -D='LOUDNESS_DEC_OPTS' (needs MANUAL_PIPELINE_TYPE loudness*)" value: "" LOUDNESS_FILTER_SUFFIX: description: "Additional regex to append to -x argument of runIvasCodec.py (needs MANUAL_PIPELINE_TYPE loudness*)" value: '.*' options: - '.*' - '.*_fb_cbr' - '.*_swb_cbr' - '.*_wb_cbr' - '[\d_]*_fb_cbr' - '[\d_]*_swb_cbr' - '[\d_]*_wb_cbr' - '[\d_]*_dtx_fb_cbr' - '[\d_]*_dtx_swb_cbr' - '[\d_]*_dtx_wb_cbr' - '.*_fb_rs' - '.*_swb_rs' - '.*_wb_rs' # This sets when pipelines are created. Jobs have more specific rules to restrict them. workflow: name: "$IVAS_PIPELINE_NAME" Loading Loading @@ -98,7 +143,16 @@ workflow: IVAS_PIPELINE_NAME: "Coverage measurement" - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'complexity' variables: IVAS_PIPELINE_NAME: 'Complexity Measurement on $CI_COMMIT_BRANCH' IVAS_PIPELINE_NAME: "Complexity Measurement on $CI_COMMIT_BRANCH" - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'loudness' variables: IVAS_PIPELINE_NAME: "Loudness measurement and analysis on $CI_COMMIT_BRANCH for $LOUDNESS_CONFIG $LOUDNESS_FILTER_SUFFIX" - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'loudness-measurement-only' variables: IVAS_PIPELINE_NAME: "Loudness measurement on $CI_COMMIT_BRANCH for $LOUDNESS_CONFIG $LOUDNESS_FILTER_SUFFIX" - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'loudness-analysis-only' variables: IVAS_PIPELINE_NAME: "Loudness analysis on $CI_COMMIT_BRANCH for $LOUDNESS_CONFIG $LOUDNESS_FILTER_SUFFIX" # --------------------------------------------------------------- # Rules templates Loading