name: Create ARM node (REUSABLE) on: workflow_call: outputs: id: description: "ARM ID" value: ${{ jobs.build.outputs.id }} ip: description: "ARM IP" value: ${{ jobs.build.outputs.ip }} secrets: SCW_ACCESS_KEY: required: true SCW_SECRET_KEY: required: true SCW_DEFAULT_PROJECT_ID: required: true SCW_DEFAULT_ORGANIZATION_ID: required: true ARM_SSH_KEY: required: true ARM_SSH_CONFIG: required: true jobs: build: runs-on: ubuntu-latest outputs: id: ${{ steps.getinfo.outputs.id }} ip: ${{ steps.getinfo.outputs.ip }} steps: # Prepare - name: Checkout source code uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Get ARM availabilities id: availabilities uses: scaleway/action-scw@c718eca1fcb9fec1fb1433752d61599c6a0ad2e9 with: args: instance server-type get zone=fr-par-2 export-config: true access-key: ${{ secrets.SCW_ACCESS_KEY }} secret-key: ${{ secrets.SCW_SECRET_KEY }} default-project-id: ${{ secrets.SCW_DEFAULT_PROJECT_ID }} default-organization-id: ${{ secrets.SCW_DEFAULT_ORGANIZATION_ID }} - name: Extract ARM type run: | TYPE=$(echo "$JSON" | jq '.servers | with_entries(select(.key | contains("AMP"))) | with_entries(select(.value.availability != "shortage")) | keys[] | select(. | test("^AMP2-C[0-9]+$")) | sub("AMP2-C"; "") | tonumber' | sort -n | tail -n 1 | xargs -I {} echo "AMP2-C{}") echo "Type is $TYPE" echo "TYPE=$TYPE" >> "$GITHUB_ENV" env: JSON: ${{ steps.availabilities.outputs.json }} - name: Create ARM VM id: scw uses: scaleway/action-scw@c718eca1fcb9fec1fb1433752d61599c6a0ad2e9 with: args: instance server create zone=fr-par-2 type=${{ env.TYPE }} root-volume=block:50GB - name: Get info id: getinfo run: | echo "id=${{ fromJson(steps.scw.outputs.json).id }}" >> "$GITHUB_OUTPUT" echo "ip=${{ fromJson(steps.scw.outputs.json).public_ip.address }}" >> "$GITHUB_OUTPUT" - name: Wait for VM uses: scaleway/action-scw@c718eca1fcb9fec1fb1433752d61599c6a0ad2e9 with: args: instance server wait ${{ fromJson(steps.scw.outputs.json).ID }} zone=fr-par-2 - name: Wait for SSH uses: iFaxity/wait-on-action@628831cec646e6dacca502f34a6c6b46e131e51d with: resource: tcp:${{ fromJson(steps.scw.outputs.json).public_ip.address }}:22 timeout: 300000 - name: Setup SSH for ARM node run: | mkdir -p ~/.ssh echo "$SSH_KEY" > ~/.ssh/id_rsa_arm chmod 600 ~/.ssh/id_rsa_arm echo "$SSH_CONFIG" | sed "s/SSH_IP/$SSH_IP/g" > ~/.ssh/config env: SSH_KEY: ${{ secrets.ARM_SSH_KEY }} SSH_IP: ${{ fromJson(steps.scw.outputs.json).public_ip.address }} SSH_CONFIG: ${{ secrets.ARM_SSH_CONFIG }} - name: Install Docker run: ssh root@$SSH_IP "curl -fsSL https://test.docker.com -o test-docker.sh ; sh test-docker.sh" env: SSH_IP: ${{ fromJson(steps.scw.outputs.json).public_ip.address }}