232/merge is being tested #890
This file contains 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: | |
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] | |
env: | |
ENABLE_ATG_FEATURE: TRUE | |
LM_LICENSE_FILE: /vcast/vector-license.lic | |
VECTOR_LICENSE_FILE: /vcast/vector-license.lic | |
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: | |
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 | |
# Run tests | |
- 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: Package with VSCE | |
run: npm run package | |
- 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 Test Results | |
uses: EnricoMi/publish-unit-test-result-action/linux@v2 | |
if: always() | |
env: | |
CHECK_NAME: Unit Test results - Vcast ${{ matrix.vcast }} | |
with: | |
check_name: ${{ env.CHECK_NAME }} | |
files: | | |
./test-output.xml | |
- name: Show coverage summary | |
if: ${{ always() && strategy.job-index == '0' }} | |
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 == '0' }} | |
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)" | |
# Upload artifacts | |
- name: Find VSIX File | |
if: always() | |
run: | | |
VSIX_FILE=$(ls /__w/vector-vscode-vcast/vector-vscode-vcast/*.vsix) | |
echo "VSIX_FILE=$VSIX_FILE" >> $GITHUB_ENV | |
- name: Upload vectorcasttestexplorer artifact | |
uses: actions/upload-artifact@v4 | |
if: ${{ always() && strategy.job-index == '0' }} | |
with: | |
name: vectorcasttestexplorer | |
path: ${{ env.VSIX_FILE }} | |
- name: Upload coverage artifact | |
uses: actions/upload-artifact@v4 | |
if: ${{ always() && strategy.job-index == '0' }} | |
with: | |
name: coverage | |
path: ./coverage | |
# 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 }}.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.VSIX_FILE }}" | |
generate-e2e-matrix: | |
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 | |
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 }} | |
run: | | |
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 | |
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 --mount type=bind,source=${{ vars.VCAST_RELEASES_PATH }},target=/vcast | |
strategy: | |
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 | |
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: Package with VSCE | |
run: npm run package | |
- 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=$(if [[ $(cat $RELEASE_DIR/DATA/tool_version.txt) == 24* ]]; then echo "True"; else echo "False"; fi) | |
echo "USE_VCAST_24=$USE_VCAST_24" >> $GITHUB_ENV | |
shell: bash | |
- name: Run tests | |
run: | | |
./tests/internal/e2e/run_e2e_tests.sh | |
- name: Publish e2e tests results | |
uses: EnricoMi/publish-unit-test-result-action/linux@v2 | |
if: always() | |
env: | |
CHECK_NAME: E2e Test results - Vcast ${{ matrix.version }} - Group ${{ matrix.group }} | |
with: | |
check_name: ${{ env.CHECK_NAME }} | |
large_files: true | |
files: | | |
./tests/internal/e2e/test_results/*.xml | |
- 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/tests-results/${{ github.ref_name }}/$COMMIT_DATE-${{ github.sha }}" | |
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] | |
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 |