Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(ci): test start-stop aws instance #41

Merged
merged 1 commit into from
Nov 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 }}"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this does not echo the runner name as $ is not next to {{ you have $ {{ vs ${{

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
Loading