name: reusable on: workflow_call: inputs: string_required: required: true type: string string_optional: required: false type: string default: string bool_required: required: true type: boolean bool_optional: required: false type: boolean default: true number_required: required: true type: number number_optional: required: false type: number default: ${{ 1 }} outputs: output: description: "A workflow output" value: ${{ jobs.reusable_workflow_job.outputs.output }} jobs: reusable_workflow_job: runs-on: ubuntu-latest steps: - name: test required string run: | echo inputs.string_required=${{ inputs.string_required }} [[ "${{ inputs.string_required == 'string' }}" = "true" ]] || exit 1 - name: test optional string run: | echo inputs.string_optional=${{ inputs.string_optional }} [[ "${{ inputs.string_optional == 'string' }}" = "true" ]] || exit 1 - name: test required bool run: | echo inputs.bool_required=${{ inputs.bool_required }} [[ "${{ inputs.bool_required }}" = "true" ]] || exit 1 - name: test optional bool run: | echo inputs.bool_optional=${{ inputs.bool_optional }} [[ "${{ inputs.bool_optional }}" = "true" ]] || exit 1 - name: test required number run: | echo inputs.number_required=${{ inputs.number_required }} [[ "${{ inputs.number_required == 1 }}" = "true" ]] || exit 1 - name: test optional number run: | echo inputs.number_optional=${{ inputs.number_optional }} [[ "${{ inputs.number_optional == 1 }}" = "true" ]] || exit 1 - name: test secret run: | echo secrets.secret=${{ secrets.secret }} [[ "${{ secrets.secret == 'keep_it_private' }}" = "true" ]] || exit 1 - name: test github.event_name is never workflow_call run: | echo github.event_name=${{ github.event_name }} [[ "${{ github.event_name != 'workflow_call' }}" = "true" ]] || exit 1 - name: test output id: output_test run: | echo "value=${{ inputs.string_required }}" >> $GITHUB_OUTPUT outputs: output: ${{ steps.output_test.outputs.value }}