diff --git a/.github/workflows/release-tests.yml b/.github/workflows/release-tests.yml new file mode 100644 index 0000000..6e802bf --- /dev/null +++ b/.github/workflows/release-tests.yml @@ -0,0 +1,460 @@ +name: Release +on: + pull_request: + paths: + - 'auto/**' + push: + paths: + - 'auto/**' + tags: + - 'v*' +jobs: + test-controller-api: + runs-on: ubuntu-latest + outputs: + envfiles: ${{ steps.params.outputs.envfiles }} + pump: ${{ steps.params.outputs.pump }} + sink: ${{ steps.params.outputs.sink }} + steps: + - name: set params + id: params + shell: bash + env: + # Cover pull_request_target too + BASE_REF: ${{startsWith(github.event_name, 'pull_request') && github.base_ref || github.ref_name}} + run: | + set -eo pipefail + endpoint="http://tui.internal.dev.tyk.technology/api/tyk-ci/$BASE_REF/${{ github.event_name}}/api" + curl="curl -s --retry 5 --retry-delay 10 --fail-with-body --retry-all-errors" + echo "pump<versions.env + echo '# alfa and beta have to come after the override + tyk_alfa_image=$tyk_image + tyk_beta_image=$tyk_image + ECR=${{steps.ecr.outputs.registry}} + tyk_pump_image=${{matrix.pump}} + tyk_sink_image=${{matrix.sink}} + confs_dir=./pro-ha + env_file=local-${{ matrix.envfiles.db }}.env' >> versions.env + echo "::group::versions" + cat versions.env + echo "::endgroup::" + # Add Tyk component config variations to $env_file + cat confs/${{ matrix.envfiles.config }}.env >> local-${{ matrix.envfiles.db }}.env + # bring up env, the project name is important + docker compose -p auto -f pro-ha.yml -f deps_pro-ha.yml -f ${{ matrix.envfiles.db }}.yml -f ${{ matrix.envfiles.cache }}.yml --env-file versions.env --profile master-datacenter up --quiet-pull -d + ./dash-bootstrap.sh http://localhost:3000 + docker compose -p auto -f pro-ha.yml -f deps_pro-ha.yml -f ${{ matrix.envfiles.db }}.yml -f ${{ matrix.envfiles.cache }}.yml --env-file versions.env --profile slave-datacenter up --quiet-pull -d + - name: Run tests + working-directory: auto + id: test_execution + env: + # Cover pull_request_target too + BASE_REF: ${{startsWith(github.event_name, 'pull_request') && github.base_ref || github.ref_name }} + run: | + # Generate report id + echo "id=$(date +%s%N)" >> $GITHUB_OUTPUT + # Run tests + set -o pipefail + echo "### API tests ${{ matrix.envfiles.db }} ${{ matrix.envfiles.conf }}" >> $GITHUB_STEP_SUMMARY + if docker run --rm --network auto_default --env-file pytest.env -v ${{ github.workspace }}/reports:/app/reports \ + ${{ steps.ecr.outputs.registry }}/tyk-automated-tests:$BASE_REF \ + pytest -c pytest_ci.ini --junitxml=./${XUNIT_REPORT_PATH#"${{ github.workspace }}"} --ci -m "not local and not dind ${{ matrix.markers }}" | tee tests.out; then + echo "All tests passed!" >> $GITHUB_STEP_SUMMARY + else + echo "::error title=API tests ${{ matrix.envfiles.db }} ${{ matrix.envfiles.conf }}::Test execution failed" + cat tests.out >> $GITHUB_STEP_SUMMARY + exit 1 + fi + - name: Generate metadata + if: always() && steps.test_execution.outcome != 'skipped' + id: metadata_report + env: + BASE_REF: ${{startsWith(github.event_name, 'pull_request') && github.base_ref || github.ref}} + REPORT_NAME: ${{ github.repository }}_${{ github.run_id }}_${{ github.run_attempt }}-${{steps.test_execution.outputs.id}} + run: | + # Generate metadata report + echo "[metadata] + repo = ${{ github.repository }} + branch = ${{ github.ref }} + commit = ${{ github.sha }} + test_suite_version = $BASE_REF + test_suite_name = ${{ github.job }} + test_suite_run = ${{ github.run_id }}-${{ github.run_attempt }} + db = ${{ matrix.envfiles.db }} + conf = ${{ matrix.envfiles.config }} + cache = ${{ matrix.envfiles.cache }} + pump_compatibility = ${{ matrix.pump }} + sink_compatibility = ${{ matrix.sink }} + " > ${METADATA_REPORT_PATH} + # Print metadata report + if [[ "${{ runner.debug }}" == "1" ]]; then + echo "::group::metadata report" + cat ${METADATA_REPORT_PATH} + echo "::endgroup::" + fi + #Upload xunit report + aws s3 cp ${XUNIT_REPORT_PATH} s3://assets.dev.tyk.technology/testreports/${REPORT_NAME#*/}.xml + #Upload metadata report + aws s3 cp ${METADATA_REPORT_PATH} s3://assets.dev.tyk.technology/testreports/${REPORT_NAME#*/}.metadata.toml + - name: Docker logs for all components + if: failure() && (steps.test_execution.outcome != 'success' || steps.env_up.outcome != 'success') + working-directory: auto + env: + pull_policy: 'if_not_present' + GH_TOKEN: ${{ secrets.ORG_GH_TOKEN }} + TYK_DB_LICENSEKEY: ${{ secrets.DASH_LICENSE }} + TYK_MDCB_LICENSE: ${{ secrets.MDCB_LICENSE }} + ECR: ${{ steps.ecr.outputs.registry }} + run: | + docker compose -p auto -f pro-ha.yml -f deps_pro-ha.yml -f ${{ matrix.envfiles.db }}.yml -f ${{ matrix.envfiles.cache }}.yml --env-file versions.env --profile all logs | sort > ${{ github.workspace }}/docker-compose.log + echo "::group::DockerLogs" + cat ${{ github.workspace }}/docker-compose.log + echo "::endgroup::" + - name: Upload Artifact + uses: actions/upload-artifact@v4 + if: failure() && (steps.test_execution.outcome != 'success' || steps.env_up.outcome != 'success') + with: + name: docker-compose-logs-${{ github.job }}-${{ matrix.envfiles.db }}-${{ matrix.envfiles.conf }}-${{ github.run_id }} + path: ${{ github.workspace }}/docker-compose.log + retention-days: 3 + overwrite: true + - name: Archive Integration tests report + if: always() + uses: actions/upload-artifact@v4 + with: + name: api-test-report-${{ matrix.envfiles.db }}-${{ matrix.envfiles.conf }}-${{ github.run_id }} + retention-days: 3 + path: ${{ github.workspace }}/reports + overwrite: true + test-controller-ui: + runs-on: ubuntu-latest + outputs: + envfiles: ${{ steps.params.outputs.envfiles }} + pump: ${{ steps.params.outputs.pump }} + sink: ${{ steps.params.outputs.sink }} + steps: + - name: set params + id: params + shell: bash + env: + # Cover pull_request_target too + BASE_REF: ${{startsWith(github.event_name, 'pull_request') && github.base_ref || github.ref_name}} + run: | + set -eo pipefail + endpoint="http://tui.internal.dev.tyk.technology/api/tyk-ci/$BASE_REF/${{ github.event_name}}/ui" + curl="curl -s --retry 5 --retry-delay 10 --fail-with-body --retry-all-errors" + echo "pump<versions.env + echo '# alfa and beta have to come after the override + tyk_alfa_image=$tyk_image + tyk_beta_image=$tyk_image + ECR=${{steps.ecr.outputs.registry}} + tyk_pump_image=${{matrix.pump}} + tyk_sink_image=${{matrix.sink}} + confs_dir=./pro-ha + env_file=local-${{ matrix.envfiles.db }}.env' >> versions.env + echo "::group::versions" + cat versions.env + echo "::endgroup::" + # Add Tyk component config variations to $env_file + cat confs/${{ matrix.envfiles.config }}.env >> local-${{ matrix.envfiles.db }}.env + # bring up env, the project name is important + docker compose -p auto -f pro-ha.yml -f deps_pro-ha.yml -f ${{ matrix.envfiles.db }}.yml -f ${{ matrix.envfiles.cache }}.yml --env-file versions.env --profile master-datacenter up --quiet-pull -d + ./dash-bootstrap.sh http://localhost:3000 + docker compose -p auto -f pro-ha.yml -f deps_pro-ha.yml -f ${{ matrix.envfiles.db }}.yml -f ${{ matrix.envfiles.cache }}.yml --env-file versions.env --profile slave-datacenter up --quiet-pull -d + - name: Install Node.js 18.16 + uses: actions/setup-node@v2.4.1 + with: + node-version: "18.16" + - name: Fix private module deps + env: + TOKEN: '${{ secrets.ORG_GH_TOKEN }}' + run: "git config --global url.\"https://${TOKEN}@github.com\".insteadOf \"https://github.com\" \n" + - name: Install test dependecies + run: | + npm ci + working-directory: tyk-analytics/tests/ui + - name: Install Playwright Browsers + run: npx playwright install --with-deps chromium + working-directory: tyk-analytics/tests/ui + - name: Execute UI tests + id: test_execution + run: | + # Generate report id + echo "id=$(date +%s%N)" >> $GITHUB_OUTPUT + npm run test -- --workers=3 + working-directory: tyk-analytics/tests/ui + env: + GW_URL: 'https://localhost:8080/' + NODE_TLS_REJECT_UNAUTHORIZED: 0 + SLACK_AUTH_TOKEN: ${{ secrets.UI_SLACK_AUTH_TOKEN }} + EVENT_TRIGGER: ${{ github.event_name }} (${{ github.actor }}) + JOB_RUN_ID: ${{ github.run_id }} + JOB_NAME: tyk-analytics - ${{ github.ref }} ${{ github.event.head_commit.message }} + RUN_ID: 'tyk-analytics/${{ github.run_id }}' + - name: Upload Playwright Test Report to S3 + if: failure() && steps.test_execution.outcome != 'success' && steps.env_up.outcome == 'success' + run: npm run upload_report_to_s3 + env: + AWS_ACCESS_KEY_ID: ${{ secrets.UI_AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.UI_AWS_SECRET_ACCESS_KEY }} + RUN_ID: 'tyk-analytics/${{ github.run_id }}' + working-directory: tyk-analytics/tests/ui + - name: Post message to automation team + if: failure() && steps.test_execution.outcome != 'success' && !github.event.pull_request.draft + id: slack + uses: slackapi/slack-github-action@v1.24.0 + with: + channel-id: '@konrad' + slack-message: "GitHub build result: ${{ job.status }}\n${{ github.event.pull_request.html_url || github.event.head_commit.url }}" + env: + SLACK_BOT_TOKEN: ${{ secrets.UI_SLACK_AUTH_TOKEN }} + - name: Share S3 report link into summary + if: always() && !github.event.pull_request.draft + run: | + echo "# :clipboard: S3 ui Test REPORT: ${{ matrix.envfiles.db }}-${{ matrix.envfiles.conf }}" >> $GITHUB_STEP_SUMMARY + echo "- Status: ${{ steps.test_execution.outcome == 'success' && ':white_check_mark:' || ':no_entry_sign:' }}" >> $GITHUB_STEP_SUMMARY + echo "- [Link to report](https://tyk-qa-reports.s3.eu-central-1.amazonaws.com/tyk-analytics/${{ github.run_id }}/index.html)" >> $GITHUB_STEP_SUMMARY + - name: Xray update + working-directory: tyk-analytics/bin + if: ${{ always() }} && github.event_name != 'pull_request' + run: | + ./update_xray.sh + env: + TEST: "QA-890" + STATUS: "${{ steps.test_execution.outcome }}" + CLIENT_ID: ${{secrets.XRAY_CLIENT_ID}} + CLIENT_SECRET: ${{secrets.XRAY_CLIENT_SECRET}} + BRANCH: ${{ github.ref }} + - name: Generate metadata + if: always() && steps.test_execution.outcome != 'skipped' + id: metadata_report + env: + BASE_REF: ${{startsWith(github.event_name, 'pull_request') && github.base_ref || github.ref}} + REPORT_NAME: ${{ github.repository }}_${{ github.run_id }}_${{ github.run_attempt }}-${{steps.test_execution.outputs.id}} + run: | + # Generate metadata report + echo "[metadata] + repo = ${{ github.repository }} + branch = ${{ github.ref }} + commit = ${{ github.sha }} + test_suite_version = $BASE_REF + test_suite_name = ${{ github.job }} + test_suite_run = ${{ github.run_id }}-${{ github.run_attempt }} + db = ${{ matrix.envfiles.db }} + conf = ${{ matrix.envfiles.config }} + cache = ${{ matrix.envfiles.cache }} + pump_compatibility = ${{ matrix.pump }} + sink_compatibility = ${{ matrix.sink }} + " > ${METADATA_REPORT_PATH} + # Print metadata report + if [[ "${{ runner.debug }}" == "1" ]]; then + echo "::group::metadata report" + cat ${METADATA_REPORT_PATH} + echo "::endgroup::" + fi + #Upload xunit report + aws s3 cp ${XUNIT_REPORT_PATH} s3://assets.dev.tyk.technology/testreports/${REPORT_NAME#*/}.xml + #Upload metadata report + aws s3 cp ${METADATA_REPORT_PATH} s3://assets.dev.tyk.technology/testreports/${REPORT_NAME#*/}.metadata.toml + - name: Docker logs for all components + if: failure() && (steps.test_execution.outcome != 'success' || steps.env_up.outcome != 'success') + working-directory: auto + env: + pull_policy: 'if_not_present' + GH_TOKEN: ${{ secrets.ORG_GH_TOKEN }} + TYK_DB_LICENSEKEY: ${{ secrets.DASH_LICENSE }} + TYK_MDCB_LICENSE: ${{ secrets.MDCB_LICENSE }} + ECR: ${{ steps.ecr.outputs.registry }} + run: | + docker compose -p auto -f pro-ha.yml -f deps_pro-ha.yml -f ${{ matrix.envfiles.db }}.yml -f ${{ matrix.envfiles.cache }}.yml --env-file versions.env --profile all logs | sort > ${{ github.workspace }}/docker-compose.log + echo "::group::DockerLogs" + cat ${{ github.workspace }}/docker-compose.log + echo "::endgroup::" + - name: Upload Artifact + uses: actions/upload-artifact@v4 + if: failure() && (steps.test_execution.outcome != 'success' || steps.env_up.outcome != 'success') + with: + name: docker-compose-logs-${{ github.job }}-${{ matrix.envfiles.db }}-${{ matrix.envfiles.conf }}-${{ github.run_id }} + path: ${{ github.workspace }}/docker-compose.log + retention-days: 3 + overwrite: true + - name: Archive Integration tests report + if: always() + uses: actions/upload-artifact@v4 + with: + name: api-test-report-${{ matrix.envfiles.db }}-${{ matrix.envfiles.conf }}-${{ github.run_id }} + retention-days: 3 + path: ${{ github.workspace }}/reports + overwrite: true + release: + if: github.event_name != 'pull_request' + runs-on: ubuntu-latest + needs: [api-tests, ui-tests] + permissions: + contents: write + steps: + - uses: actions/checkout@v3 + - name: CI env + run: tar czf ci-env.tgz auto/ + - uses: softprops/action-gh-release@v1 + with: + token: ${{ secrets.ORG_GH_TOKEN }} + name: ${{ github.ref_name }} + tag_name: ${{ github.ref_name }} + body_path: auto/release.md + files: ci-env.tgz diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 5dc891f..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,318 +0,0 @@ -name: Release - -on: - pull_request: - push: - tags: - - 'v*' - -jobs: - test-controller-api: - runs-on: ubuntu-latest - container: tykio/gromit:v1.8 - outputs: - conf: ${{ steps.params.outputs.api_conf }} - db: ${{ steps.params.outputs.api_db }} - cache_db: ${{ steps.params.outputs.api_cache_db }} - pump: ${{ steps.params.outputs.pump }} - sink: ${{ steps.params.outputs.sink }} - gd_tag: ${{ steps.params.outputs.gd_tag }} - versions: ${{ steps.params.outputs.versions }} - exclude: ${{ steps.params.outputs.exclude }} - steps: - - name: set params - id: params - env: - REPO: ${{ github.repository }} - # Cover pull_request_target too - BASE_REF: ${{startsWith(github.event_name, 'pull_request') && github.base_ref || github.ref}} - TAGS: "master" - IS_PR: ${{startsWith(github.event_name, 'pull_request') && 'yes' }} - IS_TAG: ${{startsWith(github.ref, 'refs/tags') && 'yes' }} - JOB: api - run: gromit policy controller --loglevel debug | tee -a "$GITHUB_OUTPUT" - api-tests: - needs: [test-controller-api] - runs-on: ubuntu-latest - env: - METADATA_REPORT_PATH: /tmp/metadata.toml - XUNIT_REPORT_PATH: ${{ github.workspace }}/reports/pytest-report.xml - permissions: - id-token: write # This is required for requesting the Github JWT - contents: read # This is required for actions/checkout - strategy: - fail-fast: false - matrix: - conf: ${{ fromJson(needs.test-controller-api.outputs.conf) }} - db: ${{ fromJson(needs.test-controller-api.outputs.db) }} - cache_db: ${{ fromJson(needs.test-controller-api.outputs.cache_db) }} - pump: ${{ fromJson(needs.test-controller-api.outputs.pump) }} - sink: ${{ fromJson(needs.test-controller-api.outputs.sink) }} - include: - - db: postgres15 - markers: "and not sql" - exclude: ${{ fromJson(needs.test-controller-api.outputs.exclude) }} - steps: - - uses: aws-actions/configure-aws-credentials@v4 - with: - role-to-assume: arn:aws:iam::754489498669:role/ecr_rw_tyk - role-session-name: cipush - aws-region: eu-central-1 - - id: ecr - uses: aws-actions/amazon-ecr-login@v2 - with: - mask-password: 'true' - # Only ${{ github.actor }} has access - # See https://github.com/mxschmitt/action-tmate#use-registered-public-ssh-keys - - name: Setup tmate session only in debug mode - uses: mxschmitt/action-tmate@v3 - if: runner.debug == '1' - with: - detached: true - limit-access-to-actor: true - - name: fetch env from tyk-ci - uses: actions/checkout@v3 - - name: env up - shell: bash - working-directory: auto - id: env_up - env: - pull_policy: 'if_not_present' - GH_TOKEN: ${{ secrets.ORG_GH_TOKEN }} - TYK_DB_LICENSEKEY: ${{ secrets.DASH_LICENSE }} - TYK_MDCB_LICENSE: ${{ secrets.MDCB_LICENSE }} - ECR: ${{ steps.ecr.outputs.registry }} - VERSIONS: ${{ needs.test-controller-api.outputs.versions }} - run: | - echo "ECR=${ECR} - $VERSIONS - tyk_pump_image=${{matrix.pump}} - tyk_sink_image=${{matrix.sink}} - confs_dir=./pro-ha - env_file=local-${{ matrix.db }}.env" > versions.env - echo "::group::versions" - cat versions.env - echo "::endgroup::" - # Add Tyk component config variations to $env_file - cat confs/${{ matrix.conf }}.env >> local-${{ matrix.db }}.env - # bring up env, the project name is important - docker compose -p auto -f pro-ha.yml -f deps_pro-ha.yml -f ${{ matrix.db }}.yml -f ${{ matrix.cache_db }}.yml --env-file versions.env --profile master-datacenter up --quiet-pull -d - ./dash-bootstrap.sh http://localhost:3000 - docker compose -p auto -f pro-ha.yml -f deps_pro-ha.yml -f ${{ matrix.db }}.yml -f ${{ matrix.cache_db }}.yml --env-file versions.env --profile slave-datacenter up --quiet-pull -d - - name: Run tests - working-directory: auto - id: test_execution - run: | - # Generate report id - echo "id=$(date +%s%N)" >> $GITHUB_OUTPUT - # Run tests - set -o pipefail - echo "### API tests ${{ matrix.db }} ${{ matrix.conf }}" >> $GITHUB_STEP_SUMMARY - if docker run --rm --network auto_default --env-file pytest.env -v ${{ github.workspace }}/reports:/app/reports \ - ${{ steps.ecr.outputs.registry }}/tyk-automated-tests:${{ needs.test-controller-api.outputs.gd_tag }} \ - pytest -c pytest_ci.ini --junitxml=./${XUNIT_REPORT_PATH#"${{ github.workspace }}"} --ci -m "not local and not dind ${{ matrix.markers }}" | tee tests.out; then - echo "All tests passed!" >> $GITHUB_STEP_SUMMARY - else - echo "::error title=API tests ${{ matrix.db }} ${{ matrix.conf }}::Test execution failed" - cat tests.out >> $GITHUB_STEP_SUMMARY - exit 1 - fi - - name: Docker logs for all components - if: failure() && (steps.test_execution.outcome != 'success' || steps.env_up.outcome != 'success') - working-directory: auto - env: - pull_policy: 'if_not_present' - GH_TOKEN: ${{ secrets.ORG_GH_TOKEN }} - TYK_DB_LICENSEKEY: ${{ secrets.DASH_LICENSE }} - TYK_MDCB_LICENSE: ${{ secrets.MDCB_LICENSE }} - ECR: ${{ steps.ecr.outputs.registry }} - VERSIONS: ${{ needs.test-controller-api.outputs.versions }} - run: | - docker compose -p auto -f pro-ha.yml -f deps_pro-ha.yml -f ${{ matrix.db }}.yml -f ${{ matrix.cache_db }}.yml --env-file versions.env --profile all logs | sort > ${{ github.workspace }}/docker-compose.log - echo "::group::DockerLogs" - cat ${{ github.workspace }}/docker-compose.log - echo "::endgroup::" - - name: Upload Artifact - uses: actions/upload-artifact@v4 - if: failure() && (steps.test_execution.outcome != 'success' || steps.env_up.outcome != 'success') - with: - name: docker-compose-logs-${{ github.job }}-${{ matrix.db }}-${{ matrix.conf }}-${{ github.run_id }} - path: ${{ github.workspace }}/docker-compose.log - retention-days: 3 - overwrite: true - test-controller-ui: - runs-on: ubuntu-latest - container: tykio/gromit:v1.8-alpha - outputs: - conf: ${{ steps.params.outputs.ui_conf }} - db: ${{ steps.params.outputs.ui_db }} - cache_db: ${{ steps.params.outputs.ui_cache_db }} - pump: ${{ steps.params.outputs.pump }} - sink: ${{ steps.params.outputs.sink }} - gd_tag: ${{ steps.params.outputs.gd_tag }} - versions: ${{ steps.params.outputs.versions }} - exclude: ${{ steps.params.outputs.exclude }} - steps: - - name: set params - id: params - env: - REPO: ${{ github.repository }} - # Cover pull_request_target too - BASE_REF: ${{startsWith(github.event_name, 'pull_request') && github.base_ref || github.ref}} - TAGS: "master" - IS_PR: ${{startsWith(github.event_name, 'pull_request') && 'yes' }} - IS_TAG: ${{startsWith(github.ref, 'refs/tags') && 'yes' }} - JOB: ui - run: gromit policy controller --loglevel debug | tee -a "$GITHUB_OUTPUT" - ui-tests: - needs: [test-controller-ui] - runs-on: ubuntu-latest - env: - METADATA_REPORT_PATH: /tmp/metadata.toml - XUNIT_REPORT_PATH: ${{ github.workspace }}/tests/ui/playwright-report/results.xml - permissions: - id-token: write # This is required for requesting the Github JWT - contents: read # This is required for actions/checkout - strategy: - fail-fast: false - matrix: - conf: ${{ fromJson(needs.test-controller-ui.outputs.conf) }} - db: ${{ fromJson(needs.test-controller-ui.outputs.db) }} - cache_db: ${{ fromJson(needs.test-controller-ui.outputs.cache_db) }} - pump: ${{ fromJson(needs.test-controller-ui.outputs.pump) }} - sink: ${{ fromJson(needs.test-controller-ui.outputs.sink) }} - node-version: [18.16] - include: - - db: postgres15 - markers: "and not sql" - exclude: ${{ fromJson(needs.test-controller-ui.outputs.exclude) }} - steps: - - uses: aws-actions/configure-aws-credentials@v4 - with: - role-to-assume: arn:aws:iam::754489498669:role/ecr_rw_tyk - role-session-name: cipush - aws-region: eu-central-1 - - id: ecr - uses: aws-actions/amazon-ecr-login@v2 - with: - mask-password: 'true' - # Only ${{ github.actor }} has access - # See https://github.com/mxschmitt/action-tmate#use-registered-public-ssh-keys - - name: Setup tmate session only in debug mode - uses: mxschmitt/action-tmate@v3 - if: runner.debug == '1' - with: - detached: true - limit-access-to-actor: true - - name: fetch env from tyk-ci - uses: actions/checkout@v3 - - name: env up - shell: bash - working-directory: auto - id: env_up - env: - pull_policy: 'if_not_present' - GH_TOKEN: ${{ secrets.ORG_GH_TOKEN }} - TYK_DB_LICENSEKEY: ${{ secrets.DASH_LICENSE }} - TYK_MDCB_LICENSE: ${{ secrets.MDCB_LICENSE }} - ECR: ${{ steps.ecr.outputs.registry }} - VERSIONS: ${{ needs.test-controller-ui.outputs.versions }} - run: | - echo "ECR=${ECR} - $VERSIONS - tyk_pump_image=${{matrix.pump}} - tyk_sink_image=${{matrix.sink}} - confs_dir=./pro-ha - env_file=local-${{ matrix.db }}.env" > versions.env - echo "::group::versions" - cat versions.env - echo "::endgroup::" - # Add Tyk component config variations to $env_file - cat confs/${{ matrix.conf }}.env >> local-${{ matrix.db }}.env - # bring up env, the project name is important - docker compose -p auto -f pro-ha.yml -f deps_pro-ha.yml -f ${{ matrix.db }}.yml -f ${{ matrix.cache_db }}.yml --env-file versions.env --profile master-datacenter up --quiet-pull -d - ./dash-bootstrap.sh http://localhost:3000 - docker compose -p auto -f pro-ha.yml -f deps_pro-ha.yml -f ${{ matrix.db }}.yml -f ${{ matrix.cache_db }}.yml --env-file versions.env --profile slave-datacenter up --quiet-pull -d - - name: Install Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v2.4.1 - with: - node-version: ${{ matrix.node-version }} - - name: Fix private module deps - env: - TOKEN: '${{ secrets.ORG_GH_TOKEN }}' - run: "git config --global url.\"https://${TOKEN}@github.com\".insteadOf \"https://github.com\" \n" - - name: Checkout of Dashboard - uses: actions/checkout@v4 - with: - repository: TykTechnologies/tyk-analytics - fetch-depth: 1 - token: ${{ secrets.ORG_GH_TOKEN }} - sparse-checkout: | - tests/ui - bin - submodules: false - - name: Install test dependecies - run: | - npm ci - working-directory: tests/ui - - name: Install Playwright Browsers - run: npx playwright install --with-deps - working-directory: tests/ui - - name: Execute UI tests - id: test_execution - run: | - # Generate report id - echo "id=$(date +%s%N)" >> $GITHUB_OUTPUT - npm run test -- --workers=3 - working-directory: tests/ui - env: - GW_URL: 'https://localhost:8080/' - NODE_TLS_REJECT_UNAUTHORIZED: 0 - SLACK_AUTH_TOKEN: ${{ secrets.UI_SLACK_AUTH_TOKEN }} - EVENT_TRIGGER: ${{ github.event_name }} (${{ github.actor }}) - JOB_RUN_ID: ${{ github.run_id }} - JOB_NAME: tyk-analytics - ${{ github.ref }} ${{ github.event.head_commit.message }} - RUN_ID: 'tyk-analytics/${{ github.run_id }}' - - name: Docker logs for all components - if: failure() && (steps.test_execution.outcome != 'success' || steps.env_up.outcome != 'success') - working-directory: auto - env: - pull_policy: 'if_not_present' - GH_TOKEN: ${{ secrets.ORG_GH_TOKEN }} - TYK_DB_LICENSEKEY: ${{ secrets.DASH_LICENSE }} - TYK_MDCB_LICENSE: ${{ secrets.MDCB_LICENSE }} - ECR: ${{ steps.ecr.outputs.registry }} - VERSIONS: ${{ needs.test-controller-ui.outputs.versions }} - run: | - docker compose -p auto -f pro-ha.yml -f deps_pro-ha.yml -f ${{ matrix.db }}.yml -f ${{ matrix.cache_db }}.yml --env-file versions.env --profile all logs | sort > ${{ github.workspace }}/docker-compose.log - echo "::group::DockerLogs" - cat ${{ github.workspace }}/docker-compose.log - echo "::endgroup::" - - name: Upload Artifact - uses: actions/upload-artifact@v4 - if: failure() && (steps.test_execution.outcome != 'success' || steps.env_up.outcome != 'success') - with: - name: docker-compose-logs-${{ github.job }}-${{ matrix.db }}-${{ matrix.conf }}-${{ github.run_id }} - path: ${{ github.workspace }}/docker-compose.log - retention-days: 3 - overwrite: true - release: - if: github.event_name != 'pull_request' - runs-on: ubuntu-latest - needs: [api-tests,ui-tests] - permissions: - contents: write - steps: - - uses: actions/checkout@v3 - - - name: CI env - run: - tar czf ci-env.tgz auto/ - - - uses: softprops/action-gh-release@v1 - with: - token: ${{ secrets.ORG_GH_TOKEN }} - name: ${{ github.ref_name }} - tag_name: ${{ github.ref_name }} - body_path: auto/release.md - files: ci-env.tgz \ No newline at end of file diff --git a/auto/README.md b/auto/README.md index dc479c3..feb2f4d 100644 --- a/auto/README.md +++ b/auto/README.md @@ -180,3 +180,4 @@ $ export USER_API_SECRET= $ pytest -c pytest_local.ini --ci -m "not local and not dind and not sql" ``` +test auto gates \ No newline at end of file