Skip to content

Commit

Permalink
test: Add smoke test suite and GHA workflow (#629)
Browse files Browse the repository at this point in the history
* gha test

* gha test 2

* gha test 3

* gha test 4

* gha test 4

* add smoke test suite

* add smoke test suite

---------

Co-authored-by: Ye Chen <[email protected]>
  • Loading branch information
ykim-akamai and yec-akamai authored Dec 9, 2024
1 parent 4fca8a6 commit 6adb83f
Show file tree
Hide file tree
Showing 3 changed files with 121 additions and 1 deletion.
88 changes: 88 additions & 0 deletions .github/workflows/nightly-smoke-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
name: Nightly Smoke Tests

on:
schedule:
- cron: "0 0 * * *"
workflow_dispatch:
inputs:
sha:
description: 'Commit SHA to test'
required: false
default: ''
type: string

jobs:
smoke_tests:
if: github.repository == 'linode/ansible_linode' || github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
env:
EXIT_STATUS: 0
defaults:
run:
working-directory: .ansible/collections/ansible_collections/linode/cloud
steps:
- name: Checkout repo
uses: actions/checkout@v4
with:
path: .ansible/collections/ansible_collections/linode/cloud
fetch-depth: 0
submodules: 'recursive'

- name: Update packages
run: sudo apt-get update -y

- name: Setup Python 3
uses: actions/setup-python@v5
with:
python-version: ${{ inputs.run-eol-python-version == 'true' && env.EOL_PYTHON_VERSION || inputs.python-version || env.DEFAULT_PYTHON_VERSION }}

- name: Install dependencies
run: make deps

- name: Install ansible dependencies
run: ansible-galaxy collection install amazon.aws:==6.0.1

- name: Install Collection
run: make install

- name: Replace Existing Keys
run: rm -rf ~/.ansible/test && mkdir -p ~/.ansible/test && ssh-keygen -m PEM -q -t rsa -N '' -f ~/.ansible/test/id_rsa

- name: Run smoke tests
id: smoke_tests
run: |
make smoketest
env:
LINODE_API_TOKEN: ${{ secrets.DX_LINODE_TOKEN }}

- name: Notify Slack
if: (success() || failure()) && github.repository == 'linode/ansible_linode'
uses: slackapi/[email protected]
with:
method: chat.postMessage
token: ${{ secrets.SLACK_BOT_TOKEN }}
payload: |
channel: ${{ secrets.SLACK_CHANNEL_ID }}
blocks:
- type: section
text:
type: mrkdwn
text: ":rocket: *${{ github.workflow }} Completed in: ${{ github.repository }}* :white_check_mark:"
- type: divider
- type: section
fields:
- type: mrkdwn
text: "*Build Result:*\n${{ steps.smoke_tests.outcome == 'success' && ':large_green_circle: Build Passed' || ':red_circle: Build Failed' }}"
- type: mrkdwn
text: "*Branch:*\n`${{ github.ref_name }}`"
- type: section
fields:
- type: mrkdwn
text: "*Commit Hash:*\n<${{ github.server_url }}/${{ github.repository }}/commit/${{ github.sha }}|${{ github.sha }}>"
- type: mrkdwn
text: "*Run URL:*\n<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|View Run Details>"
- type: divider
- type: context
elements:
- type: mrkdwn
text: "Triggered by: :bust_in_silhouette: `${{ github.actor }}`"
5 changes: 4 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ delete-e2e-firewall: update-test-submodules
echo "$$OUTPUT"; \
exit 1; \
else \
echo "E2E Cloud firewall created successfully."; \
echo "E2E Cloud firewall deleted successfully."; \
fi

update-test-submodules:
Expand All @@ -102,6 +102,9 @@ test: integration-test
testall:
./scripts/test_all.sh

smoketest:
./scripts/test_basic_smoke.sh

unittest:
ansible-test units --target-python default

Expand Down
29 changes: 29 additions & 0 deletions scripts/test_basic_smoke.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/bin/bash

PARALLEL_JOBS="${PARALLEL_JOBS:=3}"

run_test() {
ansible-test integration $1
}

cleanup() {
if [[ -z "$CLEANUP_DONE" ]]; then
make delete-e2e-firewall
CLEANUP_DONE=1
fi
}

trap cleanup EXIT

CLEANUP_DONE=0

make create-integration-config || exit 1
make create-e2e-firewall || exit 1

export -f run_test

parallel -j $PARALLEL_JOBS --group --keep-order --retries 3 run_test ::: $(ls tests/integration/targets | grep _basic)
TEST_EXIT_CODE=$?


exit $TEST_EXIT_CODE

0 comments on commit 6adb83f

Please sign in to comment.