Server E2E Workflow #2686
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: Server E2E Workflow | |
on: | |
workflow_dispatch: | |
push: | |
schedule: | |
- cron: "*/30 * * * *" | |
jobs: | |
setup-matrix: | |
runs-on: ubuntu-latest | |
outputs: | |
matrix: ${{ steps.set-matrix.outputs.matrix }} | |
steps: | |
- id: set-matrix | |
env: | |
MAIN_BRANCH: "refs/heads/master" | |
run: | | |
if [[ "${{ github.ref }}" == "${{ env.MAIN_BRANCH }}" ]]; then | |
echo "matrix={\"include\":[{ \"server-url\":\"https://sqs.osmosis.zone\", \"env\": \"production\", \"timeseries-url\":\"https://stage-proxy-data-api.osmosis-labs.workers.dev\"}]}" >> "$GITHUB_OUTPUT" | |
else | |
echo "matrix={\"include\":[{ \"server-url\":\"https://sqs.osmosis.zone\", \"env\": \"production\", \"timeseries-url\":\"https://stage-proxy-data-api.osmosis-labs.workers.dev\"}, { \"server-url\":\"https://sqs.stage.osmosis.zone\", \"env\": \"staging\", \"timeseries-url\":\"https://stage-proxy-data-api.osmosis-labs.workers.dev\"}]}" >> "$GITHUB_OUTPUT" | |
fi | |
test: | |
name: ${{ matrix.env }} | |
needs: setup-matrix | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: ${{fromJson(needs.setup-matrix.outputs.matrix)}} | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@v4 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20.x | |
- name: Cache dependencies | |
uses: actions/cache@v4 | |
with: | |
path: "**/node_modules" | |
key: ${{ runner.OS }}-20.x-${{ hashFiles('**/yarn.lock') }} | |
restore-keys: | | |
${{ runner.OS }}-20.x- | |
- name: Install Dependencies | |
run: yarn install --frozen-lockfile | |
- name: Echo Current Server URL | |
run: echo "SQS Server URL:${{ matrix.server-url }}" | |
- name: Run Tests | |
id: tests | |
run: yarn test:e2e --filter=server | |
continue-on-error: ${{ matrix.env == 'staging' }} | |
env: | |
NEXT_PUBLIC_SIDECAR_BASE_URL: ${{ matrix.server-url }} | |
NEXT_PUBLIC_TIMESERIES_DATA_URL: ${{ matrix.timeseries-url }} | |
# Send Slack alert if 'tests' job fails | |
# Here we include the 'steps.tests.outcome != 'success'' function to check if the job failed | |
# even after the 'continue-on-error' flag is set to true. | |
- name: Send Slack alert if test fails | |
id: slack | |
if: ${{ steps.tests.outcome != 'success' || failure() }} | |
uses: slackapi/[email protected] | |
with: | |
payload: | | |
{ | |
"text": "🚨 Server to SQS E2E Tests Failure Alert 🚨", | |
"blocks": [ | |
{ | |
"type": "header", | |
"text": { | |
"type": "plain_text", | |
"text": "Server to SQS E2E Tests Failure" | |
} | |
}, | |
{ | |
"type": "section", | |
"text": { | |
"type": "mrkdwn", | |
"text": "*Environment:* ${{ matrix.env }}\n*Server URL:* ${{ matrix.server-url }}\n*Timeseries URL:* ${{ matrix.timeseries-url }}" | |
} | |
}, | |
{ | |
"type": "section", | |
"text": { | |
"type": "mrkdwn", | |
"text": "Click here to view the run: <${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|GitHub Actions Run>" | |
} | |
} | |
] | |
} | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SERVER_E2E_TESTS_SLACK_WEBHOOK_URL }} | |
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK |