Fix Public IP detection - Fix issue when seeip.org is unreachable #12… #224
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on: | |
push: | |
branches: | |
- master | |
- ci | |
workflow_dispatch: | |
name: Test | |
jobs: | |
install: | |
runs-on: ubuntu-latest | |
if: github.repository == 'angristan/openvpn-install' && github.actor == 'angristan' | |
strategy: | |
matrix: | |
os-image: | |
- debian-11-x64 | |
- debian-12-x64 | |
- ubuntu-22-04-x64 | |
- ubuntu-24-04-x64 | |
- fedora-39-x64 | |
- fedora-40-x64 | |
# - centos-stream-9-x64 # yum oomkill | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup doctl | |
uses: digitalocean/action-doctl@v2 | |
with: | |
token: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }} | |
- name: Create server | |
run: doctl compute droplet create openvpn-action-$GITHUB_RUN_ID-$GITHUB_RUN_NUMBER-${{ matrix.os-image }} --size s-1vcpu-1gb --image ${{ matrix.os-image }} --region lon1 --enable-ipv6 --ssh-keys be:66:76:61:a8:71:93:aa:e3:19:ba:d8:0d:d2:2d:d4 --wait | |
- name: Get server ID | |
run: echo ::set-output name=value::$(doctl compute droplet list -o json | jq -r '.[] | select(.name == "'openvpn-action-$GITHUB_RUN_ID-$GITHUB_RUN_NUMBER-${{ matrix.os-image }}'").id') | |
id: server_id | |
- name: Move server to dedicated project | |
run: doctl projects resources assign ${{ secrets.DIGITALOCEAN_PROJECT_ID }} --resource=do:droplet:${{ steps.server_id.outputs.value }} | |
- name: Wait for server to boot | |
run: sleep 90 | |
- name: Get server IP | |
run: echo ::set-output name=value::$(doctl compute droplet list -o json | jq -r '.[] | select(.name == "'openvpn-action-$GITHUB_RUN_ID-$GITHUB_RUN_NUMBER-${{ matrix.os-image }}'").networks.v4 | .[] | select(.type == "'public'").ip_address') | |
id: server_ip | |
- name: Get server OS | |
run: echo ::set-output name=value::$(echo ${{ matrix.os-image }} | cut -d '-' -f1) | |
id: server_os | |
- name: Setup remote server (Debian/Ubuntu) | |
if: steps.server_os.outputs.value == 'debian' || steps.server_os.outputs.value == 'ubuntu' | |
uses: appleboy/ssh-action@v0.1.6 | |
with: | |
host: ${{ steps.server_ip.outputs.value }} | |
username: root | |
key: ${{ secrets.SSH_KEY }} | |
script: set -x && apt-get update && apt-get -o DPkg::Lock::Timeout=120 install -y git | |
- name: Setup remote server (Fedora) | |
if: steps.server_os.outputs.value == 'fedora' | |
uses: appleboy/ssh-action@v0.1.6 | |
with: | |
host: ${{ steps.server_ip.outputs.value }} | |
username: root | |
key: ${{ secrets.SSH_KEY }} | |
script: set -x && dnf install -y git | |
- name: Setup remote server (CentOS) | |
if: steps.server_os.outputs.value == 'centos' | |
uses: appleboy/ssh-action@v0.1.6 | |
with: | |
host: ${{ steps.server_ip.outputs.value }} | |
username: root | |
key: ${{ secrets.SSH_KEY }} | |
script: set -x && yum install -y git | |
- name: Download repo and checkout current commit | |
uses: appleboy/ssh-action@v0.1.6 | |
with: | |
host: ${{ steps.server_ip.outputs.value }} | |
username: root | |
key: ${{ secrets.SSH_KEY }} | |
script: set -x && git clone https://github.com/angristan/openvpn-install.git && cd openvpn-install && git checkout ${{ github.sha }} | |
- name: Run openvpn-install.sh in headless mode | |
uses: appleboy/ssh-action@v0.1.6 | |
with: | |
host: ${{ steps.server_ip.outputs.value }} | |
username: root | |
key: ${{ secrets.SSH_KEY }} | |
script: 'set -x && AUTO_INSTALL=y bash -x ~/openvpn-install/openvpn-install.sh && ps aux | grep openvpn | grep -v grep > /dev/null 2>&1 && echo "Success: OpenVPN is running" && exit 0 || echo "Failure: OpenVPN is not running" && exit 1' | |
- name: Delete server | |
run: doctl compute droplet delete -f openvpn-action-$GITHUB_RUN_ID-$GITHUB_RUN_NUMBER-${{ matrix.os-image }} | |
if: always() |