Simulator Tests #42
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: Simulator Tests | |
concurrency: | |
group: ${{ github.workflow }} | |
on: | |
schedule: | |
- cron: '0 9 * * *' # UTC timing is every day at 1am PST | |
workflow_dispatch: | |
jobs: | |
simtest: | |
timeout-minutes: 120 | |
permissions: | |
# The "id-token: write" permission is required or Machine ID will not be | |
# able to authenticate with the cluster. | |
id-token: write | |
contents: read | |
runs-on: ubuntu-latest | |
steps: | |
- name: Install Teleport | |
uses: teleport-actions/setup@8d23169da0f80ce14d25ed791272faa1c07f4f1e # pin@v1 | |
with: | |
version: 11.3.1 | |
- name: Authorize against Teleport | |
id: auth | |
uses: teleport-actions/auth@9091dad16a564f3c5b9c2ec520b234a4872b6879 # pin@v1 | |
with: | |
# Specify the publically accessible address of your Teleport proxy. | |
proxy: proxy.mysten-int.com:443 | |
# Specify the name of the join token for your bot. | |
token: sui-simtest-token | |
# Specify the length of time that the generated credentials should be | |
# valid for. This is optional and defaults to "1h" | |
certificate-ttl: 2h | |
# Cargo clean and git restore on any left over files from git checkout | |
- name: Environment clean | |
run: | | |
tsh -i ${{ steps.auth.outputs.identity-file }} --ttl 5 ssh ubuntu@simtest-01 "source ~/.bashrc && source ~/.cargo/env && cd ~/sui && cargo clean && git restore ." | |
# Deleting files in tmpfs that usually fill up pretty quickly after each run | |
- name: Tmpfs clean | |
run: | | |
tsh -i ${{ steps.auth.outputs.identity-file }} --ttl 5 ssh ubuntu@simtest-01 "sudo rm -rfd /tmp/*" | |
# Checkout out the latest sui repo | |
- name: Checkout sui repo | |
run: | | |
tsh -i ${{ steps.auth.outputs.identity-file }} --ttl 10 ssh ubuntu@simtest-01 "source ~/.bashrc && source ~/.cargo/env && cd ~/sui && git fetch origin main && git rebase origin/main" | |
# Setting up cargo and simtest | |
- name: Install simtest | |
run: | | |
tsh -i ${{ steps.auth.outputs.identity-file }} --ttl 10 ssh ubuntu@simtest-01 "source ~/.bashrc && source ~/.cargo/env && cd ~/sui && ./scripts/simtest/install.sh" | |
# Build simtest | |
- name: Build simtest | |
run: | | |
tsh -i ${{ steps.auth.outputs.identity-file }} --ttl 30 ssh ubuntu@simtest-01 "source ~/.bashrc && source ~/.cargo/env && cd ~/sui && CARGO_TERM_COLOR=always CARGO_INCREMENTAL=0 CARGO_NET_RETRY=10 USE_MOCK_CRYPTO=1 ./scripts/simtest/cargo-simtest simtest build" | |
# Run simulator tests | |
- name: Run simtest | |
run: | | |
tsh -i ${{ steps.auth.outputs.identity-file }} --ttl 120 ssh ubuntu@simtest-01 "source ~/.bashrc && source ~/.cargo/env && cd ~/sui && RUSTUP_MAX_RETRIES=10 CARGO_TERM_COLOR=always CARGO_INCREMENTAL=0 CARGO_NET_RETRY=10 RUST_BACKTRACE=short RUST_LOG=off USE_MOCK_CRYPTO=1 NUM_CPUS=12 ./scripts/simtest/simtest-run.sh" | |
notify: | |
name: Notify | |
needs: [simtest] | |
runs-on: ubuntu-latest | |
if: always() # always notify | |
steps: | |
- uses: technote-space/workflow-conclusion-action@v3 | |
- name: Checkout sui repo main branch | |
uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # pin@v3 | |
- name: Get sui commit | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
export sui_sha=$(git rev-parse HEAD) | |
echo "sui_sha=${sui_sha}" >> $GITHUB_ENV | |
- name: Get link to logs | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
gh_job_link=$(gh api -X GET 'repos/MystenLabs/sui/actions/runs/${{ github.run_id }}/jobs' --jq '.jobs.[0].html_url') | |
echo "gh_job_link=${gh_job_link}" >> $GITHUB_ENV | |
- name: Post to slack | |
uses: slackapi/slack-github-action@v1.24.0 # pin@v1.21.0 | |
env: | |
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} | |
SUI_SHA: ${{ env.sui_sha }} | |
GH_JOB_LINK: ${{ env.gh_job_link }} | |
with: | |
channel-id: 'simtest-nightly' | |
payload: | | |
{ | |
"text": "*${{ github.workflow }}* workflow status: `${{ env.WORKFLOW_CONCLUSION }}`", | |
"blocks": [ | |
{ | |
"type": "section", | |
"text": { | |
"type": "mrkdwn", | |
"text": "*${{ github.workflow }}* workflow status: `${{ env.WORKFLOW_CONCLUSION }}`" | |
} | |
}, | |
{ | |
"type": "divider" | |
}, | |
{ | |
"type": "section", | |
"text": { | |
"type": "mrkdwn", | |
"text": "Sui commit: <https://github.com/MystenLabs/sui/commit/${{ env.SUI_SHA }}|${{ env.SUI_SHA }}> \nRun: <${{ env.GH_JOB_LINK }}|${{ github.run_id }}>" | |
} | |
}, | |
{ | |
"type": "divider" | |
}, | |
{ | |
"type": "section", | |
"text": { | |
"type": "mrkdwn", | |
"text": "To debug failures: `tsh ssh ubuntu@simtest-01` and look in the `/home/ubuntu/simtest_logs/{date}` folder for test results" | |
} | |
} | |
] | |
} |