Skip to content

Commit

Permalink
WIP: try to handle cancellation
Browse files Browse the repository at this point in the history
  • Loading branch information
soonum committed Dec 4, 2024
1 parent 8896570 commit fdffb7b
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 37 deletions.
74 changes: 37 additions & 37 deletions .github/workflows/test_start_stop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,40 +40,40 @@ jobs:
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 }}
#
# 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 }}
20 changes: 20 additions & 0 deletions dist/index.js

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

20 changes: 20 additions & 0 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,27 @@ const slab = require('./slab')
const config = require('./config')
const core = require('@actions/core')
const { waitForRunnerRegistered } = require('./gh')
const utils = require('./utils')

function setOutput(label) {
core.setOutput('label', label)
}

// This variable should only be defined for cleanup purpose.
let runner_name

async function cleanup() {
if (runner_name) {
core.info('Stop instance after cancellation')
await slab.stopInstanceRequest(runner_name)
}
}

process.on('SIGINT', async function () {
await cleanup()
process.exit()
})

async function start() {
const provider = config.input.backend

Expand All @@ -15,6 +31,7 @@ async function start() {
for (let i = 1; i <= 3; i++) {
try {
start_instance_response = await slab.startInstanceRequest()
runner_name = start_instance_response.runner_name
break
} catch (error) {
core.info('Retrying request now...')
Expand All @@ -33,6 +50,9 @@ async function start() {
)}`
)

core.info('[DEBUG] About to wait 30 seconds for cancelation') // DEBUG
await utils.sleep(30) // DEBUG

try {
const wait_instance_response = await slab.waitForInstance(
start_instance_response.task_id,
Expand Down

0 comments on commit fdffb7b

Please sign in to comment.