From 102c0d2e5f9f4ec3afb6392f674a1ae9e970dea9 Mon Sep 17 00:00:00 2001 From: Jesse <7832163+GammaGames@users.noreply.github.com> Date: Tue, 3 Dec 2024 18:49:35 -0700 Subject: [PATCH] feat: capture stdout and store as output (#287) --- .github/workflows/main.yml | 45 ++++++++++++++++++++++++++++++++++++++ action.yml | 12 +++++++++- entrypoint.sh | 9 +++++++- 3 files changed, 64 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6b2df98..4d8a6a4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -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<> $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 }}" diff --git a/action.yml b/action.yml index ef72096..9aa8ce0 100644 --- a/action.yml +++ b/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" diff --git a/entrypoint.sh b/entrypoint.sh index abd5809..1c0edb8 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -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<> $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