feat: capture stdout and store as output (#287)
This commit is contained in:
		
							parent
							
								
									e13c387332
								
							
						
					
					
						commit
						102c0d2e5f
					
				
							
								
								
									
										45
									
								
								.github/workflows/main.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										45
									
								
								.github/workflows/main.yml
									
									
									
									
										vendored
									
									
								
							@ -549,3 +549,48 @@ jobs:
 | 
			
		||||
            #!/usr/bin/env bash
 | 
			
		||||
            set -e
 | 
			
		||||
            whoami
 | 
			
		||||
 | 
			
		||||
  testing-capturing-output:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout code
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      - name: create new ssh server
 | 
			
		||||
        run: |
 | 
			
		||||
          docker run -d \
 | 
			
		||||
          --name=openssh-server \
 | 
			
		||||
          --hostname=openssh-server \
 | 
			
		||||
          -p 2222:2222 \
 | 
			
		||||
          -e SUDO_ACCESS=false \
 | 
			
		||||
          -e PASSWORD_ACCESS=true  \
 | 
			
		||||
          -e USER_PASSWORD=password  \
 | 
			
		||||
          -e USER_NAME=linuxserver.io \
 | 
			
		||||
          --restart unless-stopped \
 | 
			
		||||
          lscr.io/linuxserver/openssh-server:latest
 | 
			
		||||
          docker exec openssh-server sh -c "hostname -i" > ip.txt
 | 
			
		||||
          echo "REMOTE_HOST<<EOF" >> $GITHUB_ENV
 | 
			
		||||
          cat ip.txt >> $GITHUB_ENV
 | 
			
		||||
          echo "EOF" >> $GITHUB_ENV
 | 
			
		||||
          echo "======= container ip address ========="
 | 
			
		||||
          cat ip.txt
 | 
			
		||||
          echo "======================================"
 | 
			
		||||
          sleep 2
 | 
			
		||||
 | 
			
		||||
      - id: stdout
 | 
			
		||||
        name: ssh command with stdout
 | 
			
		||||
        uses: ./
 | 
			
		||||
        with:
 | 
			
		||||
          host: ${{ env.REMOTE_HOST }}
 | 
			
		||||
          username: linuxserver.io
 | 
			
		||||
          password: password
 | 
			
		||||
          port: 2222
 | 
			
		||||
          capture_stdout: true
 | 
			
		||||
          script: |
 | 
			
		||||
            #!/usr/bin/env bash
 | 
			
		||||
            set -e
 | 
			
		||||
            whoami
 | 
			
		||||
 | 
			
		||||
      - name: check stdout
 | 
			
		||||
        run: |
 | 
			
		||||
          echo "stdout: ${{ steps.stdout.outputs.stdout }}"
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										12
									
								
								action.yml
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								action.yml
									
									
									
									
									
								
							@ -75,6 +75,14 @@ inputs:
 | 
			
		||||
    description: "pass all environment variable to shell script."
 | 
			
		||||
  request_pty:
 | 
			
		||||
    description: "Request a pseudo-terminal from the server."
 | 
			
		||||
  capture_stdout:
 | 
			
		||||
    description: "Capture the stdout of the commands."
 | 
			
		||||
    default: "false"
 | 
			
		||||
 | 
			
		||||
outputs:
 | 
			
		||||
  stdout:
 | 
			
		||||
    description: 'Standard output of the executed commands.'
 | 
			
		||||
    value: ${{ steps.entrypoint.outputs.stdout }}
 | 
			
		||||
 | 
			
		||||
runs:
 | 
			
		||||
  using: "composite"
 | 
			
		||||
@ -84,7 +92,8 @@ runs:
 | 
			
		||||
      shell: bash
 | 
			
		||||
      env:
 | 
			
		||||
        GITHUB_ACTION_PATH: ${{ github.action_path }}
 | 
			
		||||
    - name: Run entrypoint.sh
 | 
			
		||||
    - id: entrypoint
 | 
			
		||||
      name: Run entrypoint.sh
 | 
			
		||||
      run: entrypoint.sh
 | 
			
		||||
      shell: bash
 | 
			
		||||
      env:
 | 
			
		||||
@ -121,6 +130,7 @@ runs:
 | 
			
		||||
        INPUT_PROXY_USE_INSECURE_CIPHER: ${{ inputs.proxy_use_insecure_cipher }}
 | 
			
		||||
        INPUT_PROXY_CIPHER: ${{ inputs.proxy_cipher }}
 | 
			
		||||
        INPUT_SYNC: ${{ inputs.sync }}
 | 
			
		||||
        INPUT_CAPTURE_STDOUT: ${{ inputs.capture_stdout }}
 | 
			
		||||
 | 
			
		||||
branding:
 | 
			
		||||
  icon: "terminal"
 | 
			
		||||
 | 
			
		||||
@ -64,7 +64,14 @@ TARGET="${GITHUB_ACTION_PATH}/${CLIENT_BINARY}"
 | 
			
		||||
echo "Will download ${CLIENT_BINARY} from ${DOWNLOAD_URL_PREFIX}"
 | 
			
		||||
curl -fsSL --retry 5 --keepalive-time 2 "${DOWNLOAD_URL_PREFIX}/${CLIENT_BINARY}" -o ${TARGET}
 | 
			
		||||
chmod +x ${TARGET}
 | 
			
		||||
 | 
			
		||||
echo "======= CLI Version ======="
 | 
			
		||||
sh -c "${TARGET} --version" # print version
 | 
			
		||||
echo "==========================="
 | 
			
		||||
sh -c "${TARGET} $*" # run the command
 | 
			
		||||
if [[ "$INPUT_CAPTURE_STDOUT" == 'true' ]]; then
 | 
			
		||||
  echo 'stdout<<EOF' >> $GITHUB_OUTPUT # use heredoc for multiline output
 | 
			
		||||
  sh -c "${TARGET} $*" | tee -a $GITHUB_OUTPUT # run the command
 | 
			
		||||
  echo 'EOF' >> $GITHUB_OUTPUT
 | 
			
		||||
else
 | 
			
		||||
  sh -c "${TARGET} $*" # run the command
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user