307/merge is being tested #1971
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Vector Vscode Vcast Tests | |
| run-name: ${{ github.ref_name }} is being tested | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| types: [opened, reopened, synchronize, ready_for_review] | |
| branches: | |
| - main | |
| release: | |
| workflow_dispatch: | |
| inputs: | |
| prioritize-spec-group: | |
| description: 'Comma-separated list of E2E test groups to run (e.g. groupName1, groupName2, ...)' | |
| required: false | |
| r2t-release-url-linux: | |
| description: 'Linux release URL to be used for the bundle' | |
| required: false | |
| r2t-release-url-win: | |
| description: 'Windows release URL to be used for the bundle' | |
| required: false | |
| r2t-release-branch: | |
| description: 'Release branch to be used for the bundle' | |
| required: false | |
| default: "demo_release" | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| unit-tests: | |
| if: github.event.pull_request.draft == false | |
| permissions: write-all | |
| runs-on: [self-hosted, vscode-vcast, Linux] | |
| env: | |
| ENABLE_ATG_FEATURE: TRUE | |
| LM_LICENSE_FILE: /vcast/vector-license.lic | |
| VECTOR_LICENSE_FILE: /vcast/vector-license.lic | |
| R2T_RELEASE_BRANCH: ${{ github.event.inputs.r2t-release-branch }} | |
| R2T_RELEASE_URL_LIN: ${{ github.event.inputs.r2t-release-url-linux || '' }} | |
| R2T_RELEASE_URL_WIN: ${{ github.event.inputs.r2t-release-url-win || '' }} | |
| container: | |
| image: rds-vtc-docker-dev-local.vegistry.vg.vector.int/vcast/vscode_ubuntu24_ci:node_18_dynamic_mounting | |
| options: --user vcast_user --mount type=bind,source=${{ vars.VCAST_RELEASES_PATH }},target=/vcast | |
| strategy: | |
| fail-fast: false # ⬅ allow all matrix versions to run even if one fails | |
| matrix: | |
| vcast: ${{ fromJSON(vars.VCAST_VERSIONS) }} | |
| steps: | |
| - name: Check out repository | |
| id: checkout | |
| uses: actions/checkout@v4 | |
| continue-on-error: true | |
| - name: Wait before retry | |
| id: should-retry-checkout | |
| if: failure() | |
| continue-on-error: true | |
| run: | | |
| sleep 10 | |
| exit 1 | |
| - name: Check out repository (retry) | |
| if: failure() | |
| uses: actions/checkout@v4 | |
| - name: Restore cached dependencies | |
| id: cache-dependencies-restore | |
| uses: actions/cache/restore@v4 | |
| with: | |
| path: | | |
| node_modules | |
| key: ${{ runner.os }}-dependencies-${{ hashFiles('package.json') }} | |
| - name: Install dependencies | |
| if: steps.cache-dependencies-restore.outputs.cache-hit != 'true' | |
| run: npm install | |
| - name: Save dependencies | |
| if: steps.cache-dependencies-restore.outputs.cache-hit != 'true' | |
| uses: actions/cache/save@v4 | |
| with: | |
| path: node_modules | |
| key: ${{ runner.os }}-dependencies-${{ hashFiles('package.json') }} | |
| - name: Pull latest reqs2tests release | |
| shell: bash | |
| run: | | |
| python3 ./ci/get_most_recent_reqs2tests_distribution.py | |
| if [ ! -f "autoreq-linux.tar.gz" ]; then | |
| echo "Error: autoreq-linux.tar.gz not found." | |
| exit 1 | |
| fi | |
| if [ ! -f "autoreq-win.tar.gz" ]; then | |
| echo "Error: autoreq-win.tar.gz not found." | |
| exit 1 | |
| fi | |
| tar -xf autoreq-linux.tar.gz > /dev/null && rm autoreq-linux.tar.gz | |
| mv distribution /tmp/linux_distribution | |
| tar -xf autoreq-win.tar.gz > /dev/null && rm autoreq-win.tar.gz | |
| mv distribution /tmp/win_distribution | |
| - name: Vcast activation | |
| run: | | |
| RELEASE_DIR=/vcast/${{ matrix.vcast }} | |
| if [ ! -d "$RELEASE_DIR" ]; then | |
| echo "Error: $RELEASE_DIR does not exist." | |
| exit 1 | |
| fi | |
| echo 'Activating Vcast ${{ matrix.vcast }}' | |
| echo "VECTORCAST_DIR=$RELEASE_DIR" >> $GITHUB_ENV | |
| echo "PATH=$RELEASE_DIR:$PATH" >> $GITHUB_ENV | |
| shell: bash | |
| - name: Clicast server tests | |
| run: ./tests/clicast-server/run_clicast_server_tests.sh | |
| shell: bash | |
| - name: Run unit tests | |
| run: npm run gh-test | tee output.txt | |
| shell: bash | |
| - name: Publish unit tests results | |
| uses: dorny/test-reporter@v2 | |
| if: always() | |
| env: | |
| CHECK_NAME: Unit Test results - Vcast ${{ matrix.vcast }} | |
| with: | |
| path: ./test-output.xml | |
| name: ${{ env.CHECK_NAME }} | |
| reporter: java-junit | |
| - name: Show coverage summary | |
| if: ${{ always() && strategy.job-index == '3' }} | |
| run: | | |
| echo "### Coverage summary - Unit tests" >> $GITHUB_STEP_SUMMARY | |
| { | |
| echo '```' | |
| sed -n '/Coverage report from/,$p' output.txt | |
| echo '```' | |
| } >> $GITHUB_STEP_SUMMARY | |
| - name: Upload coverage artifacts | |
| if: ${{ always() && strategy.job-index == '3' }} | |
| run: | | |
| curl -Os https://uploader.codecov.io/v0.7.1/linux/codecov | |
| chmod +x codecov | |
| ./codecov -f ./coverage/coverage-final.json -F Unit -n vscode-vcast-unittests -t ${{ secrets.CODECOV_TOKEN }} -C ${{ github.sha }} -r ${{ github.repository }} -U ${http_proxy} >> out.txt | |
| cat out.txt | tail -n 1 | awk -F "'info'] " '{print $2}' | python3 -c 'import json,sys;obj=json.load(sys.stdin);print(obj.get("resultURL", ""))' > url.txt | |
| title="Coverage report URL" && \ | |
| [ -z $(cat url.txt) ] && echo "::notice title=$title::URL not found" || echo "::notice title=$title::$(cat url.txt)" | |
| - name: Upload vectorcasttestexplorer artifact | |
| if: ${{ always() && strategy.job-index == '0' }} | |
| shell: bash | |
| run: | | |
| COMMIT_DATE=$(git log -1 --format=%cd --date=format:%Y-%m-%dT%H:%M:%S) | |
| ARTIFACTORY_URL="https://artifactory.vi.vector.int:443/artifactory/rds-build-packages-generic-dev/vscode-gh1/${{ github.ref_name }}/$COMMIT_DATE-${{ github.sha }}/artifacts" | |
| README_URL="https://rds-vtc-docker-dev-local.vegistry.vg.vector.int/artifactory/rds-build-packages-generic-dev-local/code2reqs2tests/demo-data/Readme.pdf" | |
| ENV_SAMPLES=( | |
| "https://rds-vtc-docker-dev-local.vegistry.vg.vector.int/artifactory/rds-build-packages-generic-dev-local/code2reqs2tests/demo-data/TUTORIAL_C.zip" | |
| ) | |
| mkdir distribution | |
| cd distribution | |
| wget $README_URL -O Readme.pdf | |
| for url in "${ENV_SAMPLES[@]}"; do | |
| wget $url -O $(basename $url) | |
| unzip $(basename $url) | |
| rm $(basename $url) | |
| done | |
| cd .. | |
| # Prepare and upload Linux reqs2tests distribution (artifact still uploaded but NO summary download links are added) | |
| mkdir -p distribution/bin | |
| cp -r /tmp/linux_distribution/* distribution/bin | |
| tar -cvzf VectorCAST-Reqs2Tests-Linux.tar.gz distribution > /dev/null | |
| URL="$ARTIFACTORY_URL/VectorCAST-Reqs2Tests-Linux.tar.gz" | |
| curl -H "X-JFrog-Art-Api:${{ secrets.ARTIFACTORY_TOKEN }}" -X PUT $URL -T VectorCAST-Reqs2Tests-Linux.tar.gz | |
| rm -rf distribution/bin | |
| # Prepare and upload Windows reqs2tests distribution (artifact still uploaded but NO summary download links are added) | |
| mkdir -p distribution/bin | |
| cp -r /tmp/win_distribution/* distribution/bin | |
| tar -cvzf VectorCAST-Reqs2Tests-Windows.tar.gz distribution > /dev/null | |
| URL="$ARTIFACTORY_URL/VectorCAST-Reqs2Tests-Windows.tar.gz" | |
| curl -H "X-JFrog-Art-Api:${{ secrets.ARTIFACTORY_TOKEN }}" -X PUT $URL -T VectorCAST-Reqs2Tests-Windows.tar.gz | |
| rm -rf distribution/bin | |
| rm -rf distribution VectorCAST-Reqs2Tests-*.tar.gz | |
| - name: Upload coverage artifact | |
| if: ${{ always() && strategy.job-index == '0' }} | |
| shell: bash | |
| run: | | |
| COMMIT_DATE=$(git log -1 --format=%cd --date=format:%Y-%m-%dT%H:%M:%S) | |
| ARTIFACTORY_URL="https://artifactory.vi.vector.int:443/artifactory/rds-build-packages-generic-dev/vscode-gh1/${{ github.ref_name }}/$COMMIT_DATE-${{ github.sha }}/artifacts" | |
| echo "## Coverage" >> $GITHUB_STEP_SUMMARY | |
| if [[ -d ./coverage ]] ; then | |
| cd coverage && tar -cvzf ../coverage.tar.gz * > /dev/null && cd .. | |
| URL="$ARTIFACTORY_URL/coverage/" | |
| curl -H "X-Explode-Archive: true" -H "X-JFrog-Art-Api:${{ secrets.ARTIFACTORY_TOKEN }}" -X PUT $URL -T coverage.tar.gz | |
| echo "[Download coverage artifacts]($URL)" >> $GITHUB_STEP_SUMMARY | |
| else | |
| echo "No coverage artifacts found" >> $GITHUB_STEP_SUMMARY | |
| fi | |
| # Upload release asset | |
| - name: Upload release asset | |
| if: ${{ github.event_name == 'release' && strategy.job-index == '0' }} | |
| run: | | |
| url="${{ github.event.release.upload_url }}" && \ | |
| export upload_url=${url%%\{*}?name=vectorcasttestexplorer-${{ github.event.release.tag_name }}.linux.vsix && \ | |
| curl -L \ | |
| -X POST \ | |
| -H "Accept: application/vnd.github+json" \ | |
| -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \ | |
| -H "X-GitHub-Api-Version: 2022-11-28" \ | |
| -H "Content-Type: application/octet-stream" \ | |
| $upload_url \ | |
| --data-binary "@${{ env.LINUX_VSIX_FILE }}" | |
| export upload_url=${url%%\{*}?name=vectorcasttestexplorer-${{ github.event.release.tag_name }}.win.vsix && \ | |
| curl -L \ | |
| -X POST \ | |
| -H "Accept: application/vnd.github+json" \ | |
| -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \ | |
| -H "X-GitHub-Api-Version: 2022-11-28" \ | |
| -H "Content-Type: application/octet-stream" \ | |
| $upload_url \ | |
| --data-binary "@${{ env.WIN_VSIX_FILE }}" | |
| build-downloadable-vsix: | |
| permissions: write-all | |
| runs-on: [self-hosted, vscode-vcast, Linux] | |
| container: | |
| image: rds-vtc-docker-dev-local.vegistry.vg.vector.int/vcast/vscode_ubuntu24_ci:node_18_dynamic_mounting | |
| options: --user vcast_user --mount type=bind,source=${{ vars.VCAST_RELEASES_PATH }},target=/vcast | |
| needs: unit-tests | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v4 | |
| - name: Restore cached dependencies | |
| uses: actions/cache/restore@v4 | |
| with: | |
| path: node_modules | |
| key: ${{ runner.os }}-dependencies-${{ hashFiles('package.json') }} | |
| - name: Install dependencies | |
| if: steps.cache-dependencies-restore.outputs.cache-hit != 'true' | |
| run: npm install | |
| - name: Package extension and list VSIX | |
| run: | | |
| npm run package | |
| echo "VSIX contents:" | |
| npx vsce ls | |
| VSIX_FILE=$(find . -maxdepth 2 -name "*.vsix" | head -n 1) | |
| if [ -z "$VSIX_FILE" ]; then | |
| echo "Error: vsix not found" | |
| exit 1 | |
| fi | |
| echo "VSIX_FILE=$VSIX_FILE" >> $GITHUB_ENV | |
| - name: Upload VSIX | |
| run: | | |
| if [ -z "${VSIX_FILE}" ]; then | |
| echo "VSIX_FILE environment variable not set" | |
| exit 1 | |
| fi | |
| COMMIT_DATE=$(git log -1 --format=%cd --date=format:%Y-%m-%dT%H:%M:%S) | |
| ARTIFACTORY_URL="https://artifactory.vi.vector.int:443/artifactory/rds-build-packages-generic-dev/vscode-gh1/${{ github.ref_name }}/$COMMIT_DATE-${{ github.sha }}/artifacts" | |
| BASENAME=$(basename "${VSIX_FILE}") | |
| URL="$ARTIFACTORY_URL/$BASENAME" | |
| curl -H "X-JFrog-Art-Api:${{ secrets.ARTIFACTORY_TOKEN }}" -X PUT $URL -T "${VSIX_FILE}" | |
| echo "### VSIX Extension" >> $GITHUB_STEP_SUMMARY | |
| echo "[Download extension (.vsix)]($URL)" >> $GITHUB_STEP_SUMMARY | |
| generate-e2e-matrix: | |
| if: github.event.pull_request.draft == false | |
| permissions: write-all | |
| runs-on: [self-hosted, vscode-vcast, Linux] | |
| container: | |
| image: rds-vtc-docker-dev-local.vegistry.vg.vector.int/vcast/vscode_ubuntu24_ci:node_18_dynamic_mounting | |
| options: --user vcast_user | |
| outputs: | |
| version_group_matrix: ${{ steps.set-matrix.outputs.matrix }} | |
| steps: | |
| - name: Check out repository | |
| id: checkout | |
| uses: actions/checkout@v4 | |
| continue-on-error: true | |
| - name: Wait before retry | |
| id: should-retry-checkout | |
| if: failure() | |
| continue-on-error: true | |
| run: | | |
| sleep 10 | |
| exit 1 | |
| - name: Check out repository (retry) | |
| if: failure() | |
| uses: actions/checkout@v4 | |
| - name: Set jobs matrix | |
| id: set-matrix | |
| env: | |
| VCAST_VERSIONS: ${{ vars.VCAST_VERSIONS }} | |
| # Pass through the SPEC_GROUP to our matrix generator so it can prioritize matching tests | |
| PRIORITIZE_SPEC_GROUP: ${{ github.event.inputs.prioritize-spec-group || '' }} | |
| run: | | |
| echo "PRIORITIZE_SPEC_GROUP=${PRIORITIZE_SPEC_GROUP}" >> $GITHUB_ENV | |
| cd tests/internal/e2e/test | |
| npx tsx get_gha_matrix.ts | |
| echo "matrix=$(cat gha_matrix.json)" >> "$GITHUB_OUTPUT" | |
| e2e-tests: | |
| needs: [generate-e2e-matrix, build-downloadable-vsix] | |
| if: github.event.pull_request.draft == false | |
| permissions: write-all | |
| runs-on: [self-hosted, vscode-vcast, Linux] | |
| container: | |
| image: rds-vtc-docker-dev-local.vegistry.vg.vector.int/vcast/vscode_ubuntu24_ci:node_18_dynamic_mounting | |
| options: --user vcast_user --mount type=bind,source=${{ vars.VCAST_RELEASES_PATH }},target=/vcast | |
| strategy: | |
| # ⬅ let all groups run even if one fails | |
| fail-fast: false | |
| matrix: | |
| include: ${{ fromJSON(needs.generate-e2e-matrix.outputs.version_group_matrix) }} | |
| env: | |
| BRANCH_REF: ${{ github.ref }} | |
| GITHUB_REPOSITORY: ${{ github.repository }} | |
| GITHUB_SHA: ${{ github.sha }} | |
| RUN_BY_GROUP: "True" | |
| RUN_GROUP_NAME: ${{ matrix.group }} | |
| ENABLE_ATG_FEATURE: TRUE | |
| LM_LICENSE_FILE: /vcast/vector-license.lic | |
| VECTOR_LICENSE_FILE: /vcast/vector-license.lic | |
| PRIORITIZE_SPEC_GROUP: ${{ github.event.inputs.prioritize-spec-group || '' }} | |
| OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
| AZURE_BASE_URL: ${{ secrets.AZURE_BASE_URL }} | |
| steps: | |
| - name: Check out repository | |
| id: checkout | |
| uses: actions/checkout@v4 | |
| continue-on-error: true | |
| - name: Wait before retry | |
| id: should-retry-checkout | |
| if: failure() | |
| continue-on-error: true | |
| run: | | |
| sleep 10 | |
| exit 1 | |
| - name: Check out repository (retry) | |
| if: failure() | |
| uses: actions/checkout@v4 | |
| - name: Restore cached dependencies | |
| id: cache-dependencies-restore | |
| uses: actions/cache/restore@v4 | |
| with: | |
| path: | | |
| node_modules | |
| key: ${{ runner.os }}-dependencies-${{ hashFiles('package.json') }} | |
| - name: Install dependencies | |
| if: steps.cache-dependencies-restore.outputs.cache-hit != 'true' | |
| run: npm install | |
| - name: Save dependencies | |
| if: steps.cache-dependencies-restore.outputs.cache-hit != 'true' | |
| uses: actions/cache/save@v4 | |
| with: | |
| path: | | |
| node_modules | |
| key: ${{ runner.os }}-dependencies-${{ hashFiles('package.json') }} | |
| - name: Pull latest reqs2tests release | |
| shell: bash | |
| run: | | |
| python3 ./ci/get_most_recent_reqs2tests_distribution.py | |
| if [ ! -f "autoreq-linux.tar.gz" ]; then | |
| echo "Error: autoreq-linux.tar.gz not found." | |
| exit 1 | |
| fi | |
| if [ ! -f "autoreq-win.tar.gz" ]; then | |
| echo "Error: autoreq-win.tar.gz not found." | |
| exit 1 | |
| fi | |
| # extract linux distribution | |
| tar -xf autoreq-linux.tar.gz > /dev/null && rm autoreq-linux.tar.gz | |
| mv distribution /tmp/linux_distribution | |
| # Preferred location: $HOME/reqs2tests/resources/distribution | |
| HOME_TARGET="$HOME/reqs2tests/resources/distribution" | |
| WORKSPACE_TARGET="$GITHUB_WORKSPACE/resources/distribution" | |
| # Try to create and copy into $HOME target; if that fails, fallback to workspace | |
| if mkdir -p "$HOME_TARGET" 2>/dev/null && cp -r /tmp/linux_distribution/* "$HOME_TARGET/"; then | |
| REQS_PATH="$HOME_TARGET" | |
| echo "Copied reqs2tests distribution to HOME target: $REQS_PATH" | |
| else | |
| echo "Could not use HOME target ($HOME_TARGET). Falling back to GITHUB_WORKSPACE." | |
| mkdir -p "$WORKSPACE_TARGET" | |
| cp -r /tmp/linux_distribution/* "$WORKSPACE_TARGET/" | |
| REQS_PATH="$WORKSPACE_TARGET" | |
| echo "Copied reqs2tests distribution to workspace target: $REQS_PATH" | |
| fi | |
| # Export the distribution folder path (this will be available to subsequent steps) | |
| echo "REQS2TESTS_RESOURCES=$REQS_PATH/bin" >> $GITHUB_ENV | |
| echo "REQS2TESTS_RESOURCES set to: $REQS_PATH/bin" | |
| # Debug listing of the distribution folder | |
| echo "Listing REQS2TESTS_RESOURCES contents: $REQS_PATH" | |
| if command -v tree >/dev/null 2>&1; then | |
| tree -a "$REQS_PATH" || ls -laR "$REQS_PATH" | |
| else | |
| ls -laR "$REQS_PATH" | |
| fi | |
| # extract windows distribution for other uses (kept in /tmp) | |
| tar -xf autoreq-win.tar.gz > /dev/null && rm autoreq-win.tar.gz | |
| mv distribution /tmp/win_distribution | |
| TARGET_DIR="$GITHUB_WORKSPACE/tests/internal/e2e/test" | |
| echo "Listing all files and directories under: $TARGET_DIR" | |
| if [ -d "$TARGET_DIR" ]; then | |
| echo "----------------------------------------" | |
| # Show a tree-like listing if available (nicer output) | |
| if command -v tree >/dev/null 2>&1; then | |
| tree -a "$TARGET_DIR" | |
| else | |
| ls -laR "$TARGET_DIR" | |
| fi | |
| echo "----------------------------------------" | |
| else | |
| echo "Directory not found: $TARGET_DIR" | |
| echo "Listing parent directories for context:" | |
| ls -la "$(dirname "$TARGET_DIR")" || true | |
| fi | |
| - name: Package with VSCE | |
| run: | | |
| # Build a normal .vsix WITHOUT including the reqs2tests resources (we copied them to $GITHUB_WORKSPACE/resources) | |
| npm run package | |
| # find the produced .vsix and expose its path to later steps | |
| VSIX_FILE=$(find $GITHUB_WORKSPACE -maxdepth 2 -name "*.vsix" | head -n 1) | |
| if [ -z "$VSIX_FILE" ]; then | |
| echo "Error: vsix not found" | |
| exit 1 | |
| fi | |
| echo "VSIX_FILE=$VSIX_FILE" >> $GITHUB_ENV | |
| - name: Restore cached dependencies - node | |
| id: cache-dependencies-restore-node | |
| uses: actions/cache/restore@v4 | |
| with: | |
| path: | | |
| tests/internal/e2e/node_modules | |
| key: ${{ runner.os }}-dependencies-${{ hashFiles('tests/internal/e2e/package.json') }} | |
| - name: Restore cached dependencies - vscode | |
| id: cache-dependencies-restore-vscode | |
| uses: actions/cache/restore@v4 | |
| with: | |
| path: | | |
| tests/internal/e2e/.wdio-vscode-service | |
| key: ${{ runner.os }}-dependencies-webdriver-vscode | |
| - name: Vcast activation | |
| run: | | |
| RELEASE_DIR=/vcast/${{ matrix.version }} | |
| if [ ! -d "$RELEASE_DIR" ]; then | |
| echo "Error: $RELEASE_DIR does not exist." | |
| exit 1 | |
| fi | |
| echo 'Activating Vcast ${{ matrix.version }}' | |
| echo "VECTORCAST_DIR=$RELEASE_DIR" >> $GITHUB_ENV | |
| echo "PATH=$RELEASE_DIR:$PATH" >> $GITHUB_ENV | |
| USE_VCAST_24=$([ "$(head -n1 "$RELEASE_DIR/DATA/tool_version.txt" | grep -oE '^[0-9]+')" -ge 24 ] && echo "True" || echo "False") | |
| echo "USE_VCAST_24=$USE_VCAST_24" >> $GITHUB_ENV | |
| shell: bash | |
| - name: Load hidden env vars | |
| run: | | |
| echo "${{ secrets.E2E_ENV_BLOCK }}" >> $GITHUB_ENV | |
| - name: Run tests | |
| run: | | |
| ./tests/internal/e2e/run_e2e_tests.sh | |
| - name: Publish e2e tests results | |
| uses: dorny/test-reporter@v2 | |
| if: always() | |
| env: | |
| CHECK_NAME: E2e Test results - Vcast ${{ matrix.version }} - Group ${{ matrix.group }} | |
| with: | |
| path: ./tests/internal/e2e/test_results/*.xml | |
| name: ${{ env.CHECK_NAME }} | |
| reporter: java-junit | |
| - name: Show run summary | |
| if: always() | |
| run: | | |
| echo "### Run summary - Vcast ${{ matrix.version }} - Group ${{ matrix.group }}" >> $GITHUB_STEP_SUMMARY | |
| content=$([ -s ./tests/internal/e2e/gh_e2e_summary.md ] && cat ./tests/internal/e2e/gh_e2e_summary.md || echo 'Not available') | |
| echo "${content}" >> $GITHUB_STEP_SUMMARY | |
| COMMIT_DATE=$(git log -1 --format=%cd --date=format:%Y-%m-%dT%H:%M:%S) | |
| ARTIFACTORY_URL="https://artifactory.vi.vector.int:443/artifactory/rds-build-packages-generic-dev/vscode-gh1/${{ github.ref_name }}/$COMMIT_DATE-${{ github.sha }}/tests-results" | |
| count=`ls -1 tests/internal/e2e/*.png 2>/dev/null | wc -l` | |
| if [ $count != 0 ] ; then | |
| cd tests/internal/e2e | |
| tar -cvzf e2e_vcast${{ matrix.version }}_${{ matrix.group }}_screenshots.tar.gz *.png > /dev/null | |
| URL="$ARTIFACTORY_URL/e2e_vcast${{ matrix.version }}_${{ matrix.group }}_screenshots/" | |
| curl -H "X-Explode-Archive: true" -H "X-JFrog-Art-Api:${{ secrets.ARTIFACTORY_TOKEN }}" -X PUT $URL -T e2e_vcast${{ matrix.version }}_${{ matrix.group }}_screenshots.tar.gz | |
| cd ../../.. | |
| echo "[Screenshots]($URL)" >> $GITHUB_STEP_SUMMARY | |
| fi | |
| - name: Save dependencies - node | |
| if: steps.cache-dependencies-restore-node.outputs.cache-hit != 'true' | |
| uses: actions/cache/save@v4 | |
| with: | |
| path: | | |
| tests/internal/e2e/node_modules | |
| key: ${{ runner.os }}-dependencies-${{ hashFiles('tests/internal/e2e/package.json') }} | |
| - name: Save dependencies - vscode | |
| if: always() && steps.cache-dependencies-restore-vscode.outputs.cache-hit != 'true' | |
| uses: actions/cache/save@v4 | |
| with: | |
| path: | | |
| tests/internal/e2e/.wdio-vscode-service | |
| key: ${{ runner.os }}-dependencies-webdriver-vscode | |
| black: | |
| if: github.event.pull_request.draft == false | |
| permissions: write-all | |
| runs-on: [self-hosted, vscode-vcast, Linux] | |
| container: | |
| image: rds-vtc-docker-dev-local.vegistry.vg.vector.int/vcast/vscode_ubuntu24_ci:node_18_dynamic_mounting | |
| options: --user vcast_user | |
| steps: | |
| - name: Check out repository | |
| id: checkout | |
| uses: actions/checkout@v4 | |
| continue-on-error: true | |
| - name: Wait before retry | |
| id: should-retry-checkout | |
| if: failure() | |
| continue-on-error: true | |
| run: | | |
| sleep 10 | |
| exit 1 | |
| - name: Check out repository (retry) | |
| if: failure() | |
| uses: actions/checkout@v4 | |
| - name: Run black | |
| shell: bash | |
| run: | | |
| /home/vcast_user/.venv/bin/python -m black . --check --extend-exclude '/(.*venv.*)/' > output.log 2>&1; echo $? > exitcode.txt | |
| - name: Summary | |
| shell: bash | |
| if: always() | |
| run: | | |
| echo "### Black output" >> $GITHUB_STEP_SUMMARY | |
| { | |
| echo '```' | |
| cat output.log | |
| echo '```' | |
| } >> $GITHUB_STEP_SUMMARY | |
| - name: Exit with code | |
| shell: bash | |
| if: always() | |
| run: | | |
| if [ -f exitcode.txt ]; then | |
| exit $(cat exitcode.txt) | |
| fi | |
| prettier: | |
| if: github.event.pull_request.draft == false | |
| permissions: write-all | |
| runs-on: [ self-hosted, vscode-vcast] | |
| container: | |
| image: rds-vtc-docker-dev-local.vegistry.vg.vector.int/vcast/vscode_ubuntu24_ci:node_18_dynamic_mounting | |
| options: --user vcast_user | |
| steps: | |
| - name: Check out repository | |
| id: checkout | |
| uses: actions/checkout@v4 | |
| continue-on-error: true | |
| - name: Wait before retry | |
| id: should-retry-checkout | |
| if: failure() | |
| continue-on-error: true | |
| run: | | |
| sleep 10 | |
| exit 1 | |
| - name: Check out repository (retry) | |
| if: failure() | |
| uses: actions/checkout@v4 | |
| - name: Run prettier | |
| shell: bash | |
| run: | | |
| npm install prettier@$(node -pe "require('./package').devDependencies.prettier") | |
| npx prettier -c . > output.log 2>&1; echo $? > exitcode.txt | |
| - name: Summary | |
| shell: bash | |
| if: always() | |
| run: | | |
| echo "### Prettier output" >> $GITHUB_STEP_SUMMARY | |
| { | |
| echo '```' | |
| cat output.log | |
| echo '```' | |
| } >> $GITHUB_STEP_SUMMARY | |
| - name: Exit with code | |
| shell: bash | |
| if: always() | |
| run: | | |
| if [ -f exitcode.txt ]; then | |
| exit $(cat exitcode.txt) | |
| fi | |
| xo: | |
| if: github.event.pull_request.draft == false | |
| permissions: write-all | |
| runs-on: [ self-hosted, vscode-vcast] | |
| container: | |
| image: rds-vtc-docker-dev-local.vegistry.vg.vector.int/vcast/vscode_ubuntu24_ci:node_18_dynamic_mounting | |
| options: --user vcast_user | |
| steps: | |
| - name: Check out repository | |
| id: checkout | |
| uses: actions/checkout@v4 | |
| continue-on-error: true | |
| - name: Wait before retry | |
| id: should-retry-checkout | |
| if: failure() | |
| continue-on-error: true | |
| run: | | |
| sleep 10 | |
| exit 1 | |
| - name: Check out repository (retry) | |
| if: failure() | |
| uses: actions/checkout@v4 | |
| - name: Run xo | |
| shell: bash | |
| run: | | |
| npm install xo@$(node -pe "require('./package').dependencies.xo") | |
| npx xo tests/unit > output.log 2>&1; echo $? > exitcode.txt | |
| - name: Summary | |
| shell: bash | |
| if: always() | |
| run: | | |
| echo "### Xo output" >> $GITHUB_STEP_SUMMARY | |
| { | |
| echo '```' | |
| cat output.log | |
| echo '```' | |
| } >> $GITHUB_STEP_SUMMARY | |
| - name: Exit with code | |
| shell: bash | |
| if: always() | |
| run: | | |
| if [ -f exitcode.txt ]; then | |
| exit $(cat exitcode.txt) | |
| fi |