Files
github-action/action.yml
T
Jakob Boghdady cb3d95d448 Update action.yml with missing application type header and verification loop (#8)
- Adding application type header for json typing
- Implementing while loop until authorization completes
2023-07-10 13:15:00 +02:00

77 lines
2.6 KiB
YAML

name: "ZeroTier"
description: "Connect your Github Action workflow to ZeroTier"
branding:
icon: 'globe'
color: 'gray-dark'
on:
workflow_call:
inputs:
network_id:
description: "The ZeroTier network ID to connect to"
required: true
auth_token:
description: "Your ZeroTier Central API Access Token"
required: true
api_url:
description: "ZeroTier Central API URL"
required: false
default: "https://my.zerotier.com/api/v1"
runs:
using: 'composite'
steps:
- name: zerotier
uses: zerotier/github-action/util/post@main
with:
main: |
set -euo pipefail
IFS=$'\n\t'
echo "⏁ Installing ZeroTier"
case $(uname -s) in
MINGW64_NT?*)
pwsh "${{ github.action_path }}/util/install.ps1"
ztcli="/c/Program Files (x86)/ZeroTier/One/zerotier-cli.bat"
member_id=$("${ztcli}" info | awk '{ print $3 }')
;;
*)
. ${{ github.action_path }}/util/install.sh &>/dev/null
member_id=$(sudo zerotier-cli info | awk '{ print $3 }')
;;
esac
echo "⏁ Authorizing Runner to ZeroTier network"
while ! curl -s -X POST -H "Authorization: token ${{ inputs.auth_token }}" -H "Content-Type: application/json" -d '{"config":{"authorized":true}}' "${{ inputs.api_url }}/network/${{ inputs.network_id }}/member/${member_id}" | grep '"authorized":true' ; do sleep 2 ; done
echo "⏁ Joining ZeroTier Network ID: ${{ inputs.network_id }}"
case $(uname -s) in
MINGW64_NT?*)
"${ztcli}" join ${{ inputs.network_id }}
while ! "${ztcli}" listnetworks | grep ${{ inputs.network_id }} | grep OK ; do sleep 0.5 ; done
;;
*)
sudo zerotier-cli join ${{ inputs.network_id }}
while ! sudo zerotier-cli listnetworks | grep ${{ inputs.network_id }} | grep OK ; do sleep 0.5 ; done
;;
esac
post: |
set -euo pipefail
IFS=$'\n\t'
case $(uname -s) in
MINGW64_NT?*)
ztcli="/c/Program Files (x86)/ZeroTier/One/zerotier-cli.bat"
member_id=$("${ztcli}" info | awk '{ print $3 }')
;;
*)
member_id=$(sudo zerotier-cli info | awk '{ print $3 }')
;;
esac
echo "⏁ Removing Runner from ZeroTier network"
curl -s -X DELETE -H "Authorization: token ${{ inputs.auth_token }}" "${{ inputs.api_url }}/network/${{ inputs.network_id }}/member/${member_id}"