Skip to content

Commit

Permalink
chore(ci): test start-stop aws instance
Browse files Browse the repository at this point in the history
  • Loading branch information
soonum committed Nov 20, 2024
1 parent 801df0b commit 63666e5
Show file tree
Hide file tree
Showing 10 changed files with 276 additions and 84 deletions.
78 changes: 0 additions & 78 deletions .github/workflows/ci.yml

This file was deleted.

19 changes: 19 additions & 0 deletions .github/workflows/registered_runner.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# This simple workflow is used to test if a runner is registered on GitHub platform.
name: Test registered runner

on:
workflow_call:
inputs:
runner-name:
required: true
type: string

jobs:
test-runner:
name: Test Runner
runs-on: ${{ inputs.runner-name }}
timeout-minutes: 5 # Job should be picked very quickly
steps:
- name: Runner registered
run: |
echo "Runner name: $ {{ inputs.runner-name }}"
37 changes: 37 additions & 0 deletions .github/workflows/removed_runner.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# This simple workflow is used to test if a runner is removed from GitHub platform.
name: Test registered runner

on:
workflow_call:
inputs:
runner-name:
required: true
type: string
must-exist:
type: boolean
default: false
secrets:
READ_REPO_TOKEN:
required: true

jobs:
test-removed-runner:
name: Test Removed Runner
runs-on: ubuntu-latest

steps:
- name: List runners
run: |
echo "RUNNERS_FOUND=$(gh api "repos/zama-ai/slab-github-runner/actions/runners" --jq '.runners[].name')" >> "${GITHUB_ENV}"
env:
GH_TOKEN: ${{ secrets.READ_REPO_TOKEN }}

- name: Check runner removed
if: inputs.must-exist == false
run: |
( echo "${{ env.RUNNERS_FOUND }}" | grep --line-regexp -q "${{ inputs.runner-name }}" ) && { exit 1; } || exit 0
- name: Check runner persists
if: inputs.must-exist == true
run: |
( echo "${{ env.RUNNERS_FOUND }}" | grep --line-regexp -q "${{ inputs.runner-name }}" ) || exit 1
44 changes: 44 additions & 0 deletions .github/workflows/test_javascript.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Test Javascript

on:
workflow_dispatch:
pull_request:
push:
branches:
- main

permissions:
contents: read

jobs:
test-javascript:
name: JavaScript Tests
runs-on: ubuntu-latest

steps:
- name: Checkout
id: checkout
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871

- name: Setup Node.js
id: setup-node
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af
with:
node-version-file: .node-version
cache: npm

- name: Install Dependencies
id: npm-ci
run: npm ci

- name: Check Format
id: npm-format-check
run: npm run format:check

- name: Lint
id: npm-lint
run: npm run lint

- name: Test
id: npm-ci-test
run: npm run ci-test
83 changes: 83 additions & 0 deletions .github/workflows/test_spawn_terminate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# Test action to spawn/terminate backend instance
name: Test Spawn-Terminate

on:
workflow_dispatch:
pull_request:
push:
branches:
- main

permissions:
contents: read

jobs:
action-start:
name: GitHub Actions Test (spawn)
runs-on: ubuntu-latest
strategy:
matrix:
provider: [ aws, hyperstack ]
fail-fast: false
outputs:
runner-aws: ${{ steps.gen-output.outputs.runner_aws }}
runner-hyperstack: ${{ steps.gen-output.outputs.runner_hyperstack }}
steps:
- name: Checkout
id: checkout
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871

- name: Test start instance
id: test-start
uses: ./
with:
mode: start
github-token: ${{ secrets.SLAB_ACTION_TOKEN }}
slab-url: ${{ secrets.SLAB_BASE_URL_PRE_PROD }}
job-secret: ${{ secrets.JOB_SECRET }}
backend: ${{ matrix.provider }}
profile: ci-test

- name: Generate output
id: gen-output
run: |
echo "runner_${{ matrix.provider }}=${{ steps.test-start.outputs.label }}" >> "${GITHUB_OUTPUT}"
test-runner-alive-aws:
name: Test runner is alive (AWS)
needs: [ action-start ]
uses: ./.github/workflows/registered_runner.yml
with:
runner-name: ${{ needs.action-start.outputs.runner-aws }}

test-runner-alive-hyperstack:
name: Test runner is alive (Hyperstack)
needs: [ action-start ]
uses: ./.github/workflows/registered_runner.yml
with:
runner-name: ${{ needs.action-start.outputs.runner-hyperstack }}

action-stop:
name: GitHub Actions Test (terminate)
runs-on: ubuntu-latest
needs: [ action-start, test-runner-alive-aws, test-runner-alive-hyperstack ]
if: ${{ always() && needs.action-start.result != 'skipped' }}
strategy:
matrix:
runner: [ "${{ needs.action-start.outputs.runner-aws }}",
"${{ needs.action-start.outputs.runner-hyperstack }}" ]
fail-fast: false
steps:
- name: Checkout
id: checkout
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871

- name: Test stop instance
id: test-stop
uses: ./
with:
mode: stop
github-token: ${{ secrets.SLAB_ACTION_TOKEN }}
slab-url: ${{ secrets.SLAB_BASE_URL_PRE_PROD }}
job-secret: ${{ secrets.JOB_SECRET }}
label: ${{ matrix.runner }}
79 changes: 79 additions & 0 deletions .github/workflows/test_start_stop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# Test action to start/stop already provisioned backend instance.
name: Test Start-Stop

on:
workflow_dispatch:
pull_request:
push:
branches:
- main

permissions:
contents: read

jobs:
test-runner-exist:
name: Test runner is registered
uses: ./.github/workflows/removed_runner.yml
with:
runner-name: ci-persistent-runner
must-exist: true
secrets:
READ_REPO_TOKEN: ${{ secrets.SLAB_ACTION_TOKEN }}

action-start:
name: GitHub Actions Test (start)
runs-on: ubuntu-latest
needs: [ test-runner-exist ]
steps:
- name: Checkout
id: checkout
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871

- name: Test start instance
id: test-start
uses: ./
with:
mode: start
github-token: ${{ secrets.SLAB_ACTION_TOKEN }}
slab-url: ${{ secrets.SLAB_BASE_URL_PRE_PROD }}
job-secret: ${{ secrets.JOB_SECRET }}
backend: aws
profile: ci-test-start-stop

test-runner-alive:
name: Test runner is alive
needs: [ action-start ]
uses: ./.github/workflows/registered_runner.yml
with:
runner-name: ci-persistent-runner

action-stop:
name: GitHub Actions Test (stop)
runs-on: ubuntu-latest
needs: [ action-start, test-runner-alive ]
if: ${{ always() && needs.action-start.result != 'skipped' }}
steps:
- name: Checkout
id: checkout
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871

- name: Test stop instance
id: test-stop
uses: ./
with:
mode: stop
github-token: ${{ secrets.SLAB_ACTION_TOKEN }}
slab-url: ${{ secrets.SLAB_BASE_URL_PRE_PROD }}
job-secret: ${{ secrets.JOB_SECRET }}
label: ci-persistent-runner

test-runner-persist:
name: Test runner is still registered
needs: [ action-stop ]
uses: ./.github/workflows/removed_runner.yml
with:
runner-name: ci-persistent-runner
must-exist: true
secrets:
READ_REPO_TOKEN: ${{ secrets.SLAB_ACTION_TOKEN }}
8 changes: 8 additions & 0 deletions ci/slab.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,14 @@ image_id = "ami-01d21b7be69801c2f" # Ubuntu 22.04
instance_type = "t3.2xlarge"
user = "ubuntu"

# This instance is a persistent one with a runner already registered
[backend.aws.ci-test-start-stop]
region = "eu-west-3"
image_id = "ami-01d21b7be69801c2f" # Ubuntu 22.04
instance_type = "t3.2xlarge"
instance_id = "i-042a592f53f5ab592"
runner_name = "ci-persistent-runner"

[backend.hyperstack.ci-test]
environment_name = "canada"
image_name = "Ubuntu Server 22.04 LTS R535 CUDA 12.2"
Expand Down
6 changes: 3 additions & 3 deletions dist/index.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 63666e5

Please sign in to comment.