mirror of
				https://github.com/appleboy/ssh-action.git
				synced 2025-10-31 20:13:53 +00:00 
			
		
		
		
	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