@@ -344,6 +344,7 @@ jobs:
344344 ui : ${{ steps.testset.outputs.ui }}
345345 modinput_functional : ${{ steps.testset.outputs.modinput_functional }}
346346 requirement_test : ${{ steps.testset.outputs.requirement_test }}
347+ scripted_inputs : ${{ steps.testset.outputs.scripted_inputs }}
347348 steps :
348349 - uses : actions/checkout@v3
349350 - id : testset
@@ -665,7 +666,7 @@ jobs:
665666 id : run-tests
666667 env :
667668 ARGO_TOKEN : ${{ steps.get-argo-token.outputs.argo-token }}
668- uses : splunk/wfe-test-runner-action@v1.6
669+ uses : splunk/wfe-test-runner-action@v1.6.1
669670 with :
670671 splunk : ${{ matrix.splunk.version }}${{ secrets.OTHER_TA_REQUIRED_CONFIGS }}
671672 test-type : ${{ env.TEST_TYPE }}
@@ -835,7 +836,7 @@ jobs:
835836 id : run-tests
836837 env :
837838 ARGO_TOKEN : ${{ steps.get-argo-token.outputs.argo-token }}
838- uses : splunk/wfe-test-runner-action@v1.6
839+ uses : splunk/wfe-test-runner-action@v1.6.1
839840 with :
840841 splunk : ${{ matrix.splunk.version }}
841842 test-type : ${{ env.TEST_TYPE }}
@@ -992,7 +993,7 @@ jobs:
992993 id : run-tests
993994 env :
994995 ARGO_TOKEN : ${{ steps.get-argo-token.outputs.argo-token }}
995- uses : splunk/wfe-test-runner-action@v1.6
996+ uses : splunk/wfe-test-runner-action@v1.6.1
996997 with :
997998 splunk : ${{ matrix.splunk.version }}${{ secrets.OTHER_TA_REQUIRED_CONFIGS }}
998999 test-type : ${{ env.TEST_TYPE }}
@@ -1162,7 +1163,7 @@ jobs:
11621163 id : run-tests
11631164 env :
11641165 ARGO_TOKEN : ${{ steps.get-argo-token.outputs.argo-token }}
1165- uses : splunk/wfe-test-runner-action@v1.6
1166+ uses : splunk/wfe-test-runner-action@v1.6.1
11661167 with :
11671168 splunk : ${{ matrix.splunk.version }}${{ secrets.OTHER_TA_REQUIRED_CONFIGS }}
11681169 test-type : ${{ env.TEST_TYPE }}
@@ -1265,6 +1266,341 @@ jobs:
12651266 path : " ${{ needs.setup.outputs.directory-path }}/test-results/*.xml"
12661267 reporter : java-junit
12671268
1269+ run-scripted-input-tests-full-matrix :
1270+ if : ${{ needs.test-inventory.outputs.scripted_inputs == 'true' && ( github.base_ref == 'main' || github.ref_name == 'main' ) }}
1271+ needs :
1272+ - build
1273+ - test-inventory
1274+ - setup
1275+ - meta
1276+ runs-on : ubuntu-18.04
1277+ strategy :
1278+ fail-fast : false
1279+ matrix :
1280+ splunk : ${{ fromJson(needs.meta.outputs.matrix_supportedSplunk) }}
1281+ os : ["ubuntu:14.04", "ubuntu:16.04","ubuntu:18.04","ubuntu:22.04", "centos:7", "redhat:8.0", "redhat:8.2", "redhat:8.3", "redhat:8.4", "redhat:8.5"]
1282+ container :
1283+ image : ghcr.io/splunk/workflow-engine-base:2.0.3
1284+ env :
1285+ ARGO_SERVER : ${{ needs.setup.outputs.argo-server }}
1286+ ARGO_HTTP1 : ${{ needs.setup.outputs.argo-http1 }}
1287+ ARGO_SECURE : ${{ needs.setup.outputs.argo-secure }}
1288+ ARGO_BASE_HREF : ${{ needs.setup.outputs.argo-href }}
1289+ ARGO_NAMESPACE : ${{ needs.setup.outputs.argo-namespace }}
1290+ SPLUNK_VERSION_BASE : ${{ matrix.splunk.version }}${{ secrets.OTHER_TA_REQUIRED_CONFIGS }}
1291+ TEST_TYPE : " scripted_inputs"
1292+ steps :
1293+ - uses : actions/checkout@v3
1294+ with :
1295+ submodules : recursive
1296+ - name : Configure AWS credentials
1297+ uses : aws-actions/configure-aws-credentials@v1
1298+ with :
1299+ aws-access-key-id : ${{ secrets.AWS_ACCESS_KEY_ID }}
1300+ aws-secret-access-key : ${{ secrets.AWS_SECRET_ACCESS_KEY }}
1301+ aws-region : ${{ secrets.AWS_DEFAULT_REGION }}
1302+ - name : Read secrets from AWS Secrets Manager into environment variables
1303+ id : get-argo-token
1304+ run : |
1305+ ARGO_TOKEN=$(aws secretsmanager get-secret-value --secret-id ta-github-workflow-automation-token | jq -r '.SecretString')
1306+ echo "::set-output name=argo-token::$ARGO_TOKEN"
1307+ - name : create job name
1308+ id : create-job-name
1309+ shell : bash
1310+ run : |
1311+ RANDOM_STRING=$(head -3 /dev/urandom | tr -cd '[:lower:]' | cut -c -4)
1312+ JOB_NAME=${{ needs.setup.outputs.job-name }}-${RANDOM_STRING}
1313+ JOB_NAME=${JOB_NAME//TEST-TYPE/${{ env.TEST_TYPE }}}
1314+ JOB_NAME=${JOB_NAME//[_.]/-}
1315+ JOB_NAME=$(echo "$JOB_NAME" | tr '[:upper:]' '[:lower:]')
1316+ echo "::set-output name=job-name::$JOB_NAME"
1317+ - name : get os name and version
1318+ id : os-name-version
1319+ shell : bash
1320+ run : |
1321+ OS_NAME_VERSION=${{ matrix.os }}
1322+ # shellcheck disable=SC2206
1323+ OS_NAME_VERSION=(${OS_NAME_VERSION//:/ })
1324+ OS_NAME=${OS_NAME_VERSION[0]}
1325+ OS_VERSION=${OS_NAME_VERSION[1]}
1326+ echo "::set-output name=os-name::$OS_NAME"
1327+ echo "::set-output name=os-version::$OS_VERSION"
1328+ - name : run-tests
1329+ id : run-tests
1330+ env :
1331+ ARGO_TOKEN : ${{ steps.get-argo-token.outputs.argo-token }}
1332+ uses : splunk/wfe-test-runner-action@v1.6.1
1333+ with :
1334+ splunk : ${{ matrix.splunk.version }}${{ secrets.OTHER_TA_REQUIRED_CONFIGS }}
1335+ test-type : ${{ env.TEST_TYPE }}
1336+ test-args : " --hostname=spl --os-name=${{ steps.os-name-version.outputs.os-name }} --os-version=${{ steps.os-name-version.outputs.os-version }} -m script_input"
1337+ job-name : ${{ steps.create-job-name.outputs.job-name }}
1338+ labels : ${{ needs.setup.outputs.labels }}
1339+ workflow-tmpl-name : ${{ needs.setup.outputs.argo-workflow-tmpl-name }}
1340+ workflow-template-ns : ${{ needs.setup.outputs.argo-namespace }}
1341+ delay-destroy : " No"
1342+ addon-url : ${{ needs.setup.outputs.addon-upload-path }}
1343+ addon-name : ${{ needs.setup.outputs.addon-name }}
1344+ vendor-version : ${{ matrix.vendor-version.image }}
1345+ sc4s-version : " No"
1346+ os-name : ${{ steps.os-name-version.outputs.os-name }}
1347+ os-version : ${{ steps.os-name-version.outputs.os-version }}
1348+ - name : Check if pod was deleted
1349+ id : is-pod-deleted
1350+ if : always()
1351+ shell : bash
1352+ env :
1353+ ARGO_TOKEN : ${{ steps.get-argo-token.outputs.argo-token }}
1354+ run : |
1355+ set -o xtrace
1356+ if argo watch ${{ steps.run-tests.outputs.workflow-name }} -n workflows | grep "pod deleted"; then
1357+ echo "::set-output name=retry-workflow::true"
1358+ fi
1359+ - name : Retrying workflow
1360+ id : retry-wf
1361+ shell : bash
1362+ env :
1363+ ARGO_TOKEN : ${{ steps.get-argo-token.outputs.argo-token }}
1364+ if : always()
1365+ run : |
1366+ set -o xtrace
1367+ set +e
1368+ if [[ "${{ steps.is-pod-deleted.outputs.retry-workflow }}" == "true" ]]
1369+ then
1370+ WORKFLOW_NAME=$(argo resubmit -v -o json -n workflows "${{ steps.run-tests.outputs.workflow-name }}" | jq -r .metadata.name)
1371+ echo "::set-output name=workflow-name::$WORKFLOW_NAME"
1372+ argo logs --follow "${WORKFLOW_NAME}" -n workflows || echo "... there was an error fetching logs, the workflow is still in progress. please wait for the workflow to complete ..."
1373+ else
1374+ echo "No retry required"
1375+ argo wait "${{ steps.run-tests.outputs.workflow-name }}" -n workflows
1376+ argo watch "${{ steps.run-tests.outputs.workflow-name }}" -n workflows | grep "test-addon"
1377+ fi
1378+ - name : check if workflow completed
1379+ env :
1380+ ARGO_TOKEN : ${{ steps.get-argo-token.outputs.argo-token }}
1381+ if : always()
1382+ shell : bash
1383+ run : |
1384+ set +e
1385+ # shellcheck disable=SC2157
1386+ if [ -z "${{ steps.retry-wf.outputs.workflow-name }}" ]; then
1387+ WORKFLOW_NAME=${{ steps.run-tests.outputs.workflow-name }}
1388+ else
1389+ WORKFLOW_NAME="${{ steps.retry-wf.outputs.workflow-name }}"
1390+ fi
1391+ ARGO_STATUS=$(argo get "${WORKFLOW_NAME}" -n workflows -o json | jq -r '.status.phase')
1392+ echo "Status of workflow:" "$ARGO_STATUS"
1393+ while [ "$ARGO_STATUS" == "Running" ] || [ "$ARGO_STATUS" == "Pending" ]
1394+ do
1395+ echo "... argo Workflow ${WORKFLOW_NAME} is running, waiting for it to complete."
1396+ argo wait "${WORKFLOW_NAME}" -n workflows || true
1397+ ARGO_STATUS=$(argo get "${WORKFLOW_NAME}" -n workflows -o json | jq -r '.status.phase')
1398+ done
1399+ - name : pull artifacts from s3 bucket
1400+ if : always()
1401+ run : |
1402+ echo "pulling artifacts"
1403+ aws s3 cp s3://${{ needs.setup.outputs.s3-bucket }}/artifacts-${{ steps.create-job-name.outputs.job-name }}/${{ steps.create-job-name.outputs.job-name }}.tgz ${{ needs.setup.outputs.directory-path }}/
1404+ tar -xf ${{ needs.setup.outputs.directory-path }}/${{ steps.create-job-name.outputs.job-name }}.tgz -C ${{ needs.setup.outputs.directory-path }}
1405+ - name : pull logs from s3 bucket
1406+ if : always()
1407+ run : |
1408+ # shellcheck disable=SC2157
1409+ if [ -z "${{ steps.retry-wf.outputs.workflow-name }}" ]; then
1410+ WORKFLOW_NAME=${{ steps.run-tests.outputs.workflow-name }}
1411+ else
1412+ WORKFLOW_NAME="${{ steps.retry-wf.outputs.workflow-name }}"
1413+ fi
1414+ echo "pulling logs"
1415+ mkdir -p ${{ needs.setup.outputs.directory-path }}/argo-logs
1416+ aws s3 cp s3://${{ needs.setup.outputs.s3-bucket }}/${WORKFLOW_NAME}/ ${{ needs.setup.outputs.directory-path }}/argo-logs/ --recursive
1417+ - uses : actions/upload-artifact@v3
1418+ if : always()
1419+ with :
1420+ name : archive splunk ${{ matrix.splunk.version }}${{ secrets.OTHER_TA_REQUIRED_CONFIGS }} ${{ env.TEST_TYPE }} ${{ matrix.vendor-version.image }} ${{ steps.os-name-version.outputs.os-name }} ${{ steps.os-name-version.outputs.os-version }} tests artifacts
1421+ path : |
1422+ ${{ needs.setup.outputs.directory-path }}/test-results
1423+ - uses : actions/upload-artifact@v3
1424+ if : always()
1425+ with :
1426+ name : archive splunk ${{ matrix.splunk.version }}${{ secrets.OTHER_TA_REQUIRED_CONFIGS }} ${{ env.TEST_TYPE }} ${{ matrix.vendor-version.image }} ${{ steps.os-name-version.outputs.os-name }} ${{ steps.os-name-version.outputs.os-version }} tests logs
1427+ path : |
1428+ ${{ needs.setup.outputs.directory-path }}/argo-logs
1429+ - name : Test Report
1430+ uses : dorny/test-reporter@v1
1431+ if : always()
1432+ with :
1433+ name : splunk ${{ matrix.splunk.version }}${{ secrets.OTHER_TA_REQUIRED_CONFIGS }} ${{ env.TEST_TYPE }} ${{ matrix.vendor-version.image }} ${{ steps.os-name-version.outputs.os-name }} ${{ steps.os-name-version.outputs.os-version }} test report
1434+ path : " ${{ needs.setup.outputs.directory-path }}/test-results/*.xml"
1435+ reporter : java-junit
1436+
1437+ run-scripted-input-tests-canary :
1438+ if : ${{ needs.test-inventory.outputs.scripted_inputs == 'true' && ( github.base_ref == 'develop' || github.ref_name == 'develop' ) }}
1439+ needs :
1440+ - build
1441+ - test-inventory
1442+ - setup
1443+ - meta
1444+ runs-on : ubuntu-18.04
1445+ strategy :
1446+ fail-fast : false
1447+ matrix :
1448+ splunk : ${{ fromJson(needs.meta.outputs.matrix_supportedSplunk) }}
1449+ os : ["ubuntu:22.04", "centos:7","redhat:8.5"]
1450+ container :
1451+ image : ghcr.io/splunk/workflow-engine-base:2.0.3
1452+ env :
1453+ ARGO_SERVER : ${{ needs.setup.outputs.argo-server }}
1454+ ARGO_HTTP1 : ${{ needs.setup.outputs.argo-http1 }}
1455+ ARGO_SECURE : ${{ needs.setup.outputs.argo-secure }}
1456+ ARGO_BASE_HREF : ${{ needs.setup.outputs.argo-href }}
1457+ ARGO_NAMESPACE : ${{ needs.setup.outputs.argo-namespace }}
1458+ SPLUNK_VERSION_BASE : ${{ matrix.splunk.version }}${{ secrets.OTHER_TA_REQUIRED_CONFIGS }}
1459+ TEST_TYPE : " scripted_inputs"
1460+ steps :
1461+ - uses : actions/checkout@v3
1462+ with :
1463+ submodules : recursive
1464+ - name : Configure AWS credentials
1465+ uses : aws-actions/configure-aws-credentials@v1
1466+ with :
1467+ aws-access-key-id : ${{ secrets.AWS_ACCESS_KEY_ID }}
1468+ aws-secret-access-key : ${{ secrets.AWS_SECRET_ACCESS_KEY }}
1469+ aws-region : ${{ secrets.AWS_DEFAULT_REGION }}
1470+ - name : Read secrets from AWS Secrets Manager into environment variables
1471+ id : get-argo-token
1472+ run : |
1473+ ARGO_TOKEN=$(aws secretsmanager get-secret-value --secret-id ta-github-workflow-automation-token | jq -r '.SecretString')
1474+ echo "::set-output name=argo-token::$ARGO_TOKEN"
1475+ - name : create job name
1476+ id : create-job-name
1477+ shell : bash
1478+ run : |
1479+ RANDOM_STRING=$(head -3 /dev/urandom | tr -cd '[:lower:]' | cut -c -4)
1480+ JOB_NAME=${{ needs.setup.outputs.job-name }}-${RANDOM_STRING}
1481+ JOB_NAME=${JOB_NAME//TEST-TYPE/${{ env.TEST_TYPE }}}
1482+ JOB_NAME=${JOB_NAME//[_.]/-}
1483+ JOB_NAME=$(echo "$JOB_NAME" | tr '[:upper:]' '[:lower:]')
1484+ echo "::set-output name=job-name::$JOB_NAME"
1485+ - name : get os name and version
1486+ id : os-name-version
1487+ shell : bash
1488+ run : |
1489+ OS_NAME_VERSION=${{ matrix.os }}
1490+ OS_NAME_VERSION=("${OS_NAME_VERSION//:/ }")
1491+ OS_NAME=${OS_NAME_VERSION[0]}
1492+ OS_VERSION=${OS_NAME_VERSION[1]}
1493+ echo "::set-output name=os-name::$OS_NAME"
1494+ echo "::set-output name=os-version::$OS_VERSION"
1495+ - name : run-tests
1496+ id : run-tests
1497+ env :
1498+ ARGO_TOKEN : ${{ steps.get-argo-token.outputs.argo-token }}
1499+ uses : splunk/wfe-test-runner-action@v1.6.1
1500+ with :
1501+ splunk : ${{ matrix.splunk.version }}${{ secrets.OTHER_TA_REQUIRED_CONFIGS }}
1502+ test-type : ${{ env.TEST_TYPE }}
1503+ test-args : " --hostname=spl --os-name=${{ steps.os-name-version.outputs.os-name }} --os-version=${{ steps.os-name-version.outputs.os-version }} -m script_input"
1504+ job-name : ${{ steps.create-job-name.outputs.job-name }}
1505+ labels : ${{ needs.setup.outputs.labels }}
1506+ workflow-tmpl-name : ${{ needs.setup.outputs.argo-workflow-tmpl-name }}
1507+ workflow-template-ns : ${{ needs.setup.outputs.argo-namespace }}
1508+ delay-destroy : " No"
1509+ addon-url : ${{ needs.setup.outputs.addon-upload-path }}
1510+ addon-name : ${{ needs.setup.outputs.addon-name }}
1511+ vendor-version : ${{ matrix.vendor-version.image }}
1512+ sc4s-version : " No"
1513+ os-name : ${{ steps.os-name-version.outputs.os-name }}
1514+ os-version : ${{ steps.os-name-version.outputs.os-version }}
1515+ - name : Check if pod was deleted
1516+ id : is-pod-deleted
1517+ if : always()
1518+ shell : bash
1519+ env :
1520+ ARGO_TOKEN : ${{ steps.get-argo-token.outputs.argo-token }}
1521+ run : |
1522+ set -o xtrace
1523+ if argo watch ${{ steps.run-tests.outputs.workflow-name }} -n workflows | grep "pod deleted"; then
1524+ echo "::set-output name=retry-workflow::true"
1525+ fi
1526+ - name : Retrying workflow
1527+ id : retry-wf
1528+ shell : bash
1529+ env :
1530+ ARGO_TOKEN : ${{ steps.get-argo-token.outputs.argo-token }}
1531+ if : always()
1532+ run : |
1533+ set -o xtrace
1534+ set +e
1535+ if [[ "${{ steps.is-pod-deleted.outputs.retry-workflow }}" == "true" ]]
1536+ then
1537+ WORKFLOW_NAME=$(argo resubmit -v -o json -n workflows "${{ steps.run-tests.outputs.workflow-name }}" | jq -r .metadata.name)
1538+ echo "::set-output name=workflow-name::$WORKFLOW_NAME"
1539+ argo logs --follow "${WORKFLOW_NAME}" -n workflows || echo "... there was an error fetching logs, the workflow is still in progress. please wait for the workflow to complete ..."
1540+ else
1541+ echo "No retry required"
1542+ argo wait "${{ steps.run-tests.outputs.workflow-name }}" -n workflows
1543+ argo watch "${{ steps.run-tests.outputs.workflow-name }}" -n workflows | grep "test-addon"
1544+ fi
1545+ - name : check if workflow completed
1546+ env :
1547+ ARGO_TOKEN : ${{ steps.get-argo-token.outputs.argo-token }}
1548+ if : always()
1549+ shell : bash
1550+ run : |
1551+ set +e
1552+ # shellcheck disable=SC2157
1553+ if [ -z "${{ steps.retry-wf.outputs.workflow-name }}" ]; then
1554+ WORKFLOW_NAME=${{ steps.run-tests.outputs.workflow-name }}
1555+ else
1556+ WORKFLOW_NAME="${{ steps.retry-wf.outputs.workflow-name }}"
1557+ fi
1558+ ARGO_STATUS=$(argo get "${WORKFLOW_NAME}" -n workflows -o json | jq -r '.status.phase')
1559+ echo "Status of workflow:" "$ARGO_STATUS"
1560+ while [ "$ARGO_STATUS" == "Running" ] || [ "$ARGO_STATUS" == "Pending" ]
1561+ do
1562+ echo "... argo Workflow ${WORKFLOW_NAME} is running, waiting for it to complete."
1563+ argo wait "${WORKFLOW_NAME}" -n workflows || true
1564+ ARGO_STATUS=$(argo get "${WORKFLOW_NAME}" -n workflows -o json | jq -r '.status.phase')
1565+ done
1566+ - name : pull artifacts from s3 bucket
1567+ if : always()
1568+ run : |
1569+ echo "pulling artifacts"
1570+ aws s3 cp s3://${{ needs.setup.outputs.s3-bucket }}/artifacts-${{ steps.create-job-name.outputs.job-name }}/${{ steps.create-job-name.outputs.job-name }}.tgz ${{ needs.setup.outputs.directory-path }}/
1571+ tar -xf ${{ needs.setup.outputs.directory-path }}/${{ steps.create-job-name.outputs.job-name }}.tgz -C ${{ needs.setup.outputs.directory-path }}
1572+ - name : pull logs from s3 bucket
1573+ if : always()
1574+ run : |
1575+ # shellcheck disable=SC2157
1576+ if [ -z "${{ steps.retry-wf.outputs.workflow-name }}" ]; then
1577+ WORKFLOW_NAME=${{ steps.run-tests.outputs.workflow-name }}
1578+ else
1579+ WORKFLOW_NAME="${{ steps.retry-wf.outputs.workflow-name }}"
1580+ fi
1581+ echo "pulling logs"
1582+ mkdir -p ${{ needs.setup.outputs.directory-path }}/argo-logs
1583+ aws s3 cp s3://${{ needs.setup.outputs.s3-bucket }}/${WORKFLOW_NAME}/ ${{ needs.setup.outputs.directory-path }}/argo-logs/ --recursive
1584+ - uses : actions/upload-artifact@v3
1585+ if : always()
1586+ with :
1587+ name : archive splunk ${{ matrix.splunk.version }}${{ secrets.OTHER_TA_REQUIRED_CONFIGS }} ${{ env.TEST_TYPE }} ${{ matrix.vendor-version.image }} ${{ steps.os-name-version.outputs.os-name }} ${{ steps.os-name-version.outputs.os-version }} tests artifacts
1588+ path : |
1589+ ${{ needs.setup.outputs.directory-path }}/test-results
1590+ - uses : actions/upload-artifact@v3
1591+ if : always()
1592+ with :
1593+ name : archive splunk ${{ matrix.splunk.version }}${{ secrets.OTHER_TA_REQUIRED_CONFIGS }} ${{ env.TEST_TYPE }} ${{ matrix.vendor-version.image }} ${{ steps.os-name-version.outputs.os-name }} ${{ steps.os-name-version.outputs.os-version }} tests logs
1594+ path : |
1595+ ${{ needs.setup.outputs.directory-path }}/argo-logs
1596+ - name : Test Report
1597+ uses : dorny/test-reporter@v1
1598+ if : always()
1599+ with :
1600+ name : splunk ${{ matrix.splunk.version }}${{ secrets.OTHER_TA_REQUIRED_CONFIGS }} ${{ env.TEST_TYPE }} ${{ matrix.vendor-version.image }} ${{ steps.os-name-version.outputs.os-name }} ${{ steps.os-name-version.outputs.os-version }} test report
1601+ path : " ${{ needs.setup.outputs.directory-path }}/test-results/*.xml"
1602+ reporter : java-junit
1603+
12681604 validate-pr-title :
12691605 name : Validate PR title
12701606 if : github.event_name == 'pull_request'
0 commit comments