Merge pull request #9 from ykim-akamai/ci/notify_slack_on_release #28
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: Integration Tests | |
on: | |
workflow_dispatch: | |
inputs: | |
use_minimal_test_account: | |
description: 'Use minimal test account' | |
required: false | |
default: 'false' | |
sha: | |
description: 'The hash value of the commit' | |
required: false | |
default: '' | |
push: | |
branches: | |
- main | |
- dev | |
jobs: | |
integration-tests: | |
runs-on: ubuntu-latest | |
env: | |
EXIT_STATUS: 0 | |
steps: | |
- name: Clone Repository with SHA | |
if: ${{ inputs.sha != '' }} | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
submodules: 'recursive' | |
ref: ${{ inputs.sha }} | |
- name: Clone Repository without SHA | |
if: ${{ inputs.sha == '' }} | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
submodules: 'recursive' | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.x' | |
- name: Install Python deps | |
run: pip install -U setuptools wheel boto3 certifi | |
- name: Install Python SDK | |
run: make dev-install | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Download kubectl and calicoctl for LKE clusters | |
run: | | |
curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl" | |
curl -LO "https://github.com/projectcalico/calico/releases/download/v3.25.0/calicoctl-linux-amd64" | |
chmod +x calicoctl-linux-amd64 kubectl | |
mv calicoctl-linux-amd64 /usr/local/bin/calicoctl | |
mv kubectl /usr/local/bin/kubectl | |
- name: Set LINODE_TOKEN | |
run: | | |
echo "LINODE_TOKEN=${{ secrets[inputs.use_minimal_test_account == 'true' && 'MINIMAL_LINODE_TOKEN' || 'LINODE_TOKEN'] }}" >> $GITHUB_ENV | |
- name: Run Integration tests | |
run: | | |
timestamp=$(date +'%Y%m%d%H%M') | |
report_filename="${timestamp}_sdk_test_report.xml" | |
make testint TEST_ARGS="--junitxml=${report_filename}" | |
env: | |
LINODE_TOKEN: ${{ env.LINODE_TOKEN }} | |
- name: Apply Calico Rules to LKE | |
if: always() | |
run: | | |
cd scripts && ./lke_calico_rules_e2e.sh | |
env: | |
LINODE_TOKEN: ${{ env.LINODE_TOKEN }} | |
- name: Upload test results | |
if: always() | |
run: | | |
filename=$(ls | grep -E '^[0-9]{12}_sdk_test_report\.xml$') | |
python3 e2e_scripts/tod_scripts/xml_to_obj_storage/scripts/add_gha_info_to_xml.py \ | |
--branch_name "${GITHUB_REF#refs/*/}" \ | |
--gha_run_id "$GITHUB_RUN_ID" \ | |
--gha_run_number "$GITHUB_RUN_NUMBER" \ | |
--xmlfile "${filename}" | |
sync | |
python3 e2e_scripts/tod_scripts/xml_to_obj_storage/scripts/xml_to_obj.py "${filename}" | |
env: | |
LINODE_CLI_OBJ_ACCESS_KEY: ${{ secrets.LINODE_CLI_OBJ_ACCESS_KEY }} | |
LINODE_CLI_OBJ_SECRET_KEY: ${{ secrets.LINODE_CLI_OBJ_SECRET_KEY }} | |
notify-slack: | |
runs-on: ubuntu-latest | |
needs: [integration-tests] | |
if: always() && github.repository == 'linode/linode_api4-python' # Run even if integration tests fail and only on main repository | |
steps: | |
- name: Notify Slack | |
uses: slackapi/[email protected] | |
with: | |
channel-id: ${{ secrets.SLACK_CHANNEL_ID }} | |
payload: | | |
{ | |
"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${{ needs.integration-tests.result == '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 }}`" | |
} | |
] | |
} | |
] | |
} | |
env: | |
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} |