From 61d813134fd35aa8f0b22890c2f0a3db52b79392 Mon Sep 17 00:00:00 2001 From: RafaelGSS Date: Wed, 29 May 2024 18:12:48 -0300 Subject: [PATCH] workflows: use nodesource/aws-eco-runner --- .github/workflows/bench.yml | 4 +- .github/workflows/run_all.yml | 6 +- .github/workflows/runner-starter/action.yml | 22 ---- .../runner-starter/instance_start_stop.bash | 103 ------------------ .github/workflows/runner_warmer.yml | 4 +- scripts/generate-run-all.mjs | 4 +- 6 files changed, 9 insertions(+), 134 deletions(-) delete mode 100644 .github/workflows/runner-starter/action.yml delete mode 100755 .github/workflows/runner-starter/instance_start_stop.bash diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml index 5845aa72..309ece0e 100644 --- a/.github/workflows/bench.yml +++ b/.github/workflows/bench.yml @@ -59,7 +59,7 @@ jobs: uses: actions/checkout@v4 - name: Start Runner - uses: ./.github/workflows/runner-starter + uses: nodesource/aws-eco-runner@v1 with: instance_id: 'i-065f0f848eb1615ae' action: 'start' @@ -220,7 +220,7 @@ jobs: uses: actions/checkout@v4 - name: Stop Runner - uses: ./.github/workflows/runner-starter + uses: nodesource/aws-eco-runner@v1 with: instance_id: 'i-065f0f848eb1615ae' action: 'stop' diff --git a/.github/workflows/run_all.yml b/.github/workflows/run_all.yml index 66bfd590..e84a72cf 100644 --- a/.github/workflows/run_all.yml +++ b/.github/workflows/run_all.yml @@ -8,7 +8,7 @@ on: node-versions: required: true type: string - default: '["18.0.0","18.20.1","18.20.2","20.0.0","20.13.0","20.13.1","21.0.0","21.7.2","21.7.3","22.0.0","22.1.0"]' + default: '["18.0.0","18.20.2","18.20.3","20.0.0","20.13.1","20.14.0","21.0.0","21.7.2","21.7.3","22.0.0","22.1.0","22.2.0"]' description: 'The Node.js Versions (should be a JSON array)' permissions: @@ -29,7 +29,7 @@ jobs: uses: actions/checkout@v4 - name: Start Runner - uses: ./.github/workflows/runner-starter + uses: nodesource/aws-eco-runner@v1 with: instance_id: 'i-065f0f848eb1615ae' action: 'start' @@ -364,7 +364,7 @@ jobs: uses: actions/checkout@v4 - name: Stop Runner - uses: ./.github/workflows/runner-starter + uses: nodesource/aws-eco-runner@v1 with: instance_id: 'i-065f0f848eb1615ae' action: 'stop' diff --git a/.github/workflows/runner-starter/action.yml b/.github/workflows/runner-starter/action.yml deleted file mode 100644 index 121d4bca..00000000 --- a/.github/workflows/runner-starter/action.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: 'Runner Starter' -description: 'Turn on a self-hosted runner' -inputs: - instance_id: - description: 'ID of the EC2 instance to start OR the name of the scaling group to scale down' - required: true - action: - description: 'Define if I want to start or stop the runner' - required: true - aws_default_region: - description: 'AWS region to use' - required: false - default: 'us-west-2' - -runs: - using: "composite" - steps: - - id: start_instance - name: Start/Stop Runner Instance - shell: bash - run: | - ${GITHUB_ACTION_PATH}/instance_start_stop.bash --instance-id=${{ inputs.instance_id }} --action=${{ inputs.action }} diff --git a/.github/workflows/runner-starter/instance_start_stop.bash b/.github/workflows/runner-starter/instance_start_stop.bash deleted file mode 100755 index 76741a34..00000000 --- a/.github/workflows/runner-starter/instance_start_stop.bash +++ /dev/null @@ -1,103 +0,0 @@ -#!/bin/bash - -# Function to print messages in a fancy way -function printMessage { - local message="$1" - local type="$2" - local length=${#message} - local line=$(printf "%-${length}s" | tr ' ' '-') - echo "" - case "$type" in - "info") - echo -e "\033[1;34m$line\033[0m" - echo -e "\033[1;34m$message\033[0m" - echo -e "\033[1;34m$line\033[0m" - ;; - "success") - echo -e "\033[1;32m$line\033[0m" - echo -e "\033[1;32m$message\033[0m" - echo -e "\033[1;32m$line\033[0m" - ;; - "error") - echo -e "\033[1;31m$line\033[0m" - echo -e "\033[1;31m$message\033[0m" - echo -e "\033[1;31m$line\033[0m" - ;; - *) - echo -e "\033[1;34m$line\033[0m" - echo -e "\033[1;34m$message\033[0m" - echo -e "\033[1;34m$line\033[0m" - ;; - esac - echo "" -} - -# Parse command line arguments -while [ $# -gt 0 ]; do - case "$1" in - --instance-id=*) - INSTANCE_ID="${1#*=}" - ;; - --action=*) - ACTION="${1#*=}" - ;; - *) - printMessage "Invalid argument: $1" "error" - exit 1 - ;; - esac - shift -done - -# Check if instance ID is null -if [ -z "$INSTANCE_ID" ]; then - printMessage "--instance-id=XX-XXX is required" "error" - exit 1 -fi - -# Check if action is null -if [ -z "$ACTION" ]; then - printMessage "--action=start|stop is required" "error" - exit 1 -fi - -# Check if action is valid -if [ "$ACTION" != "start" ] && [ "$ACTION" != "stop" ]; then - printMessage "Invalid action: $ACTION" "error" - exit 1 -fi - -# Check if instance is stopped or started -INSTANCE_STATE=$(aws ec2 describe-instances --instance-ids "$INSTANCE_ID" --query "Reservations[].Instances[].State.Name" --output text) - -if [ "$ACTION" = "start" ]; then - if [ "$INSTANCE_STATE" = "stopped" ]; then - INSTANCE_NAME=$(aws ec2 describe-instances --instance-ids "$INSTANCE_ID" --query "Reservations[].Instances[].Tags[?Key=='Name'].Value" --output text) - printMessage "Starting instance $INSTANCE_NAME ($INSTANCE_ID)..." "info" - aws ec2 start-instances --instance-ids "$INSTANCE_ID" >/dev/null - printMessage "Waiting for instance $INSTANCE_ID to start..." "info" - aws ec2 wait instance-running --instance-ids "$INSTANCE_ID" - printMessage "Instance $INSTANCE_ID is now running" "success" - elif [ "$INSTANCE_STATE" = "running" ]; then - INSTANCE_NAME=$(aws ec2 describe-instances --instance-ids "$INSTANCE_ID" --query "Reservations[].Instances[].Tags[?Key=='Name'].Value" --output text) - printMessage "Instance $INSTANCE_NAME ($INSTANCE_ID) is already running" "success" - else - printMessage "Instance $INSTANCE_ID is in an unknown state: $INSTANCE_STATE" "error" - exit 1 - fi -elif [ "$ACTION" = "stop" ]; then - if [ "$INSTANCE_STATE" = "running" ]; then - INSTANCE_NAME=$(aws ec2 describe-instances --instance-ids "$INSTANCE_ID" --query "Reservations[].Instances[].Tags[?Key=='Name'].Value" --output text) - printMessage "Stopping instance $INSTANCE_NAME ($INSTANCE_ID)..." "info" - aws ec2 stop-instances --instance-ids "$INSTANCE_ID" >/dev/null - printMessage "Waiting for instance $INSTANCE_ID to stop..." "info" - aws ec2 wait instance-stopped --instance-ids "$INSTANCE_ID" - printMessage "Instance $INSTANCE_ID is now stopped" "success" - elif [ "$INSTANCE_STATE" = "stopped" ]; then - INSTANCE_NAME=$(aws ec2 describe-instances --instance-ids "$INSTANCE_ID" --query "Reservations[].Instances[].Tags[?Key=='Name'].Value" --output text) - printMessage "Instance $INSTANCE_NAME ($INSTANCE_ID) is already stopped" "success" - else - printMessage "Instance $INSTANCE_ID is in an unknown state: $INSTANCE_STATE" "error" - exit 1 - fi -fi \ No newline at end of file diff --git a/.github/workflows/runner_warmer.yml b/.github/workflows/runner_warmer.yml index 13aa0228..6680d4a9 100644 --- a/.github/workflows/runner_warmer.yml +++ b/.github/workflows/runner_warmer.yml @@ -22,7 +22,7 @@ jobs: role-to-assume: arn:aws:iam::800406105498:role/RafaelGSS-nodejs-bench-operations - name: Start Runner - uses: ./.github/workflows/runner-starter + uses: nodesource/aws-eco-runner@v1 with: instance_id: 'i-065f0f848eb1615ae' action: 'start' @@ -35,7 +35,7 @@ jobs: run: echo "Keep the runner active" - name: Stop Runner - uses: ./.github/workflows/runner-starter + uses: nodesource/aws-eco-runner@v1 with: instance_id: 'i-065f0f848eb1615ae' action: 'stop' diff --git a/scripts/generate-run-all.mjs b/scripts/generate-run-all.mjs index bb144c9a..39412a18 100644 --- a/scripts/generate-run-all.mjs +++ b/scripts/generate-run-all.mjs @@ -72,7 +72,7 @@ jobs: uses: actions/checkout@v4 - name: Start Runner - uses: ./.github/workflows/runner-starter + uses: nodesource/aws-eco-runner@v1 with: instance_id: 'i-065f0f848eb1615ae' action: 'start' @@ -92,7 +92,7 @@ jobs: uses: actions/checkout@v4 - name: Stop Runner - uses: ./.github/workflows/runner-starter + uses: nodesource/aws-eco-runner@v1 with: instance_id: 'i-065f0f848eb1615ae' action: 'stop'