tailscale / github-action

A GitHub Action to connect your workflow to your Tailscale network.
BSD 3-Clause "New" or "Revised" License
519 stars 78 forks source link

DNS not working #129

Open VictorioBerra opened 1 month ago

VictorioBerra commented 1 month ago
name: Deploy to VM

on:
  push:
    branches:
      - main
      - master
  pull_request:
    branches:
      - '*'

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:

      - uses: actions/checkout@master

      - uses: actions/setup-node@v4
        with: 
          node-version: 20

      - name: Build
        env:
        run: |
          npm ci
          npm run generate

      - name: Tailscale
        uses: tailscale/github-action@v2
        with:
          oauth-client-id: ${{ secrets.TS_OAUTH_CLIENT_ID }}
          oauth-secret: ${{ secrets.TS_OAUTH_SECRET }}
          tags: tag:ci
          version: 1.66.4

      - name: netmap
        run:
          tailscale status
          ping -c 4 ${{ secrets.HOST }}

      - name: copy file via ssh
        uses: appleboy/scp-action@master
        with:
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USERNAME }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          source: '.output/public/*'
          target: '/home/dockeruser/abc/pb_public/'
          overwrite: true
          strip_components: 2

The tailscale status and ping -c 4 ${{ secrets.HOST }} all work great. HOST is one of the node machine names.

appleboy/scp-action@master gives me:

2024/06/02 20:59:42 error copy file to dest: , error message: dial tcp: lookup on 1111.222.333.444:53: no such host

I have solved this with an action to get and set the IP to output variables:

      - name: netmap
        id: tailscale-netmap
        run: |
          ip=$(tailscale status | grep '${{ secrets.HOST }}' | awk '{print $1}')
          echo "LINODE_IP=$ip" >> "$GITHUB_OUTPUT"

      - name: copy file via ssh
        uses: appleboy/scp-action@0.1.7
        with:
          host: ${{ steps.tailscale-netmap.outputs.LINODE_IP }}
          username: ${{ secrets.USERNAME }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          source: '.output/public//${{ GITHUB_SHA }}'
          target: '/home/dockeruser/failreactor/'
          overwrite: true
          strip_components: 2

This is obviously super lame. What am I doing wrong?