mirror of
				https://github.com/appleboy/ssh-action.git
				synced 2025-10-31 16:23:52 +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 |             #!/usr/bin/env bash | ||||||
|             set -e |             set -e | ||||||
|             whoami |             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." |     description: "pass all environment variable to shell script." | ||||||
|   request_pty: |   request_pty: | ||||||
|     description: "Request a pseudo-terminal from the server." |     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: | runs: | ||||||
|   using: "composite" |   using: "composite" | ||||||
| @ -84,7 +92,8 @@ runs: | |||||||
|       shell: bash |       shell: bash | ||||||
|       env: |       env: | ||||||
|         GITHUB_ACTION_PATH: ${{ github.action_path }} |         GITHUB_ACTION_PATH: ${{ github.action_path }} | ||||||
|     - name: Run entrypoint.sh |     - id: entrypoint | ||||||
|  |       name: Run entrypoint.sh | ||||||
|       run: entrypoint.sh |       run: entrypoint.sh | ||||||
|       shell: bash |       shell: bash | ||||||
|       env: |       env: | ||||||
| @ -121,6 +130,7 @@ runs: | |||||||
|         INPUT_PROXY_USE_INSECURE_CIPHER: ${{ inputs.proxy_use_insecure_cipher }} |         INPUT_PROXY_USE_INSECURE_CIPHER: ${{ inputs.proxy_use_insecure_cipher }} | ||||||
|         INPUT_PROXY_CIPHER: ${{ inputs.proxy_cipher }} |         INPUT_PROXY_CIPHER: ${{ inputs.proxy_cipher }} | ||||||
|         INPUT_SYNC: ${{ inputs.sync }} |         INPUT_SYNC: ${{ inputs.sync }} | ||||||
|  |         INPUT_CAPTURE_STDOUT: ${{ inputs.capture_stdout }} | ||||||
| 
 | 
 | ||||||
| branding: | branding: | ||||||
|   icon: "terminal" |   icon: "terminal" | ||||||
|  | |||||||
| @ -64,7 +64,14 @@ TARGET="${GITHUB_ACTION_PATH}/${CLIENT_BINARY}" | |||||||
| echo "Will download ${CLIENT_BINARY} from ${DOWNLOAD_URL_PREFIX}" | echo "Will download ${CLIENT_BINARY} from ${DOWNLOAD_URL_PREFIX}" | ||||||
| curl -fsSL --retry 5 --keepalive-time 2 "${DOWNLOAD_URL_PREFIX}/${CLIENT_BINARY}" -o ${TARGET} | curl -fsSL --retry 5 --keepalive-time 2 "${DOWNLOAD_URL_PREFIX}/${CLIENT_BINARY}" -o ${TARGET} | ||||||
| chmod +x ${TARGET} | chmod +x ${TARGET} | ||||||
|  | 
 | ||||||
| echo "======= CLI Version =======" | echo "======= CLI Version =======" | ||||||
| sh -c "${TARGET} --version" # print version | sh -c "${TARGET} --version" # print version | ||||||
| echo "===========================" | 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