diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8d27e1c..3dc2bd5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -68,6 +68,8 @@ jobs: setup-deterministic-zip: true setup-kubectl: true kubectl-version: 'v1.33.0' + setup-teleport: true + teleport-version: '18.4.0' - name: Verify Setup run: | @@ -137,6 +139,9 @@ jobs: echo "::group::Verify kubectl Installation" kubectl version --client echo "::endgroup::" + echo "::group::Verify Teleport Client Installation" + tsh version + echo "::endgroup::" test-egress-policy: name: Test Egress Policy Input @@ -670,3 +675,55 @@ jobs: echo "Expected kubectl version ${EXPECTED_VERSION}, got: ${ACTUAL}" exit 1 fi + + test-setup-teleport: + name: Test Setup Teleport Client + runs-on: ubuntu-latest + steps: + - name: Harden Runner + id: harden-runner + uses: step-security/harden-runner@bf7454d06d71f1098171f2acdf0cd4708d7b5920 # v2.20.0 + with: + egress-policy: audit + + - name: Checkout Repository + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + + - name: Run Setup Teleport Client Action + uses: ./ + with: + setup-teleport: true + + - name: Verify Teleport Client Installation + run: | + tsh version + + test-setup-teleport-custom-version: + name: Test Setup Teleport Client (custom version) + runs-on: ubuntu-latest + steps: + - name: Harden Runner + id: harden-runner + uses: step-security/harden-runner@bf7454d06d71f1098171f2acdf0cd4708d7b5920 # v2.20.0 + with: + egress-policy: audit + + - name: Checkout Repository + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + + - name: Run Setup Teleport Client Action (non-default version) + uses: ./ + with: + setup-teleport: true + teleport-version: '17.5.2' + + - name: Verify Teleport Client Version Matches Input + env: + EXPECTED_VERSION: 17.5.2 + run: | + ACTUAL="$(tsh version)" + echo "tsh reported: ${ACTUAL}" + if ! echo "${ACTUAL}" | grep -qF "${EXPECTED_VERSION}"; then + echo "Expected Teleport version ${EXPECTED_VERSION}, got: ${ACTUAL}" + exit 1 + fi diff --git a/README.md b/README.md index 986e1c6..88df022 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Common steps for initializing a job for GitHub actions. This composite action co - Security hardening with Step Security's Harden Runner (configurable egress policy) - Repository checkout with configurable options - Multi-language support (Node.js, Java, Python, Go, Rust, Swift) -- Build tool setup (Gradle, Task, gomplate, jq, kubectl) +- Build tool setup (Gradle, Task, gomplate, jq, kubectl, Teleport) - Automatic caching for dependencies and build artifacts ## Usage @@ -182,6 +182,13 @@ Common steps for initializing a job for GitHub actions. This composite action co | setup-kubectl | Whether to setup kubectl | No | false | | kubectl-version | kubectl version to use | No | v1.33.0 | +**Teleport** + +| Input | Description | Required | Default | +|------------------|------------------------------------|----------|---------| +| setup-teleport | Whether to setup Teleport Client | No | false | +| teleport-version | Teleport Client version to use | No | 18.4.0 | + ### Outputs **Checkout Outputs** diff --git a/action.yml b/action.yml index 202a50f..75f7e6c 100644 --- a/action.yml +++ b/action.yml @@ -190,6 +190,14 @@ inputs: description: 'kubectl version to use (e.g. v1.33.0)' required: false default: 'v1.33.0' + setup-teleport: + description: 'Whether to setup Teleport Client' + required: false + default: 'false' + teleport-version: + description: 'Teleport Client version to use (e.g. 18.4.0)' + required: false + default: '18.4.0' # expose outputs from the sub-actions outputs: @@ -681,6 +689,22 @@ runs: with: version: ${{ inputs.kubectl-version }} + - name: Set Up Teleport Client Parameters + id: setup-teleport-params + if: ${{ inputs.setup-teleport == 'true' }} + shell: bash + run: | + echo "::group::Setting up Teleport Client" + echo "Version: ${{ inputs.teleport-version }}" + echo "::endgroup::" + + - name: Install Teleport Client + id: setup-teleport + if: ${{ inputs.setup-teleport == 'true' }} + uses: teleport-actions/setup@176c25dfcd19cd31a252f275d579822b243e7b9c # v1.0.6 + with: + version: ${{ inputs.teleport-version }} + branding: icon: 'arrow-up-right' color: 'green'