name: Github Slug Action testing on: [push, pull_request] jobs: os-testing: strategy: fail-fast: false matrix: os: [macos-latest, ubuntu-latest, windows-latest] runs-on: ${{ matrix.os }} steps: - name: Checkout uses: actions/checkout@v3 - name: Load using v3.x uses: rlespinasse/github-slug-action@v3.x - name: Load using v4.x with prefix uses: ./ with: prefix: V4_ - name: Validate // Partial variables run: | echo "repository owner : ${{ env.V4_GITHUB_REPOSITORY_OWNER_PART }}" echo "repository name : ${{ env.V4_GITHUB_REPOSITORY_NAME_PART }}" [[ "${{ env.GITHUB_REPOSITORY_OWNER_PART }}" == "${{ env.V4_GITHUB_REPOSITORY_OWNER_PART }}" ]] [[ "${{ env.GITHUB_REPOSITORY_NAME_PART }}" == "${{ env.V4_GITHUB_REPOSITORY_NAME_PART }}" ]] shell: bash - name: Validate // Slug variables run: | echo "repository : ${{ env.V4_GITHUB_REPOSITORY_SLUG }}" echo "repository owner : ${{ env.V4_GITHUB_REPOSITORY_OWNER_PART_SLUG }}" echo "repository name : ${{ env.V4_GITHUB_REPOSITORY_NAME_PART_SLUG }}" echo "ref : ${{ env.V4_GITHUB_REF_SLUG }}" echo "head ref : ${{ env.V4_GITHUB_HEAD_REF_SLUG }}" echo "base ref : ${{ env.V4_GITHUB_BASE_REF_SLUG }}" echo "event ref : ${{ env.V4_GITHUB_EVENT_REF_SLUG }}" [[ "${{ env.GITHUB_REPOSITORY_SLUG }}" == "${{ env.V4_GITHUB_REPOSITORY_SLUG }}" ]] [[ "${{ env.GITHUB_REPOSITORY_OWNER_PART_SLUG }}" == "${{ env.V4_GITHUB_REPOSITORY_OWNER_PART_SLUG }}" ]] [[ "${{ env.GITHUB_REPOSITORY_NAME_PART_SLUG }}" == "${{ env.V4_GITHUB_REPOSITORY_NAME_PART_SLUG }}" ]] [[ "${{ env.GITHUB_REF_SLUG }}" == "${{ env.V4_GITHUB_REF_SLUG }}" ]] [[ "${{ env.GITHUB_HEAD_REF_SLUG }}" == "${{ env.V4_GITHUB_HEAD_REF_SLUG }}" ]] [[ "${{ env.GITHUB_BASE_REF_SLUG }}" == "${{ env.V4_GITHUB_BASE_REF_SLUG }}" ]] [[ "${{ env.GITHUB_EVENT_REF_SLUG }}" == "${{ env.V4_GITHUB_EVENT_REF_SLUG }}" ]] shell: bash - name: Validate // Slug variables (Case Sensitive) run: | echo "repository : ${{ env.V4_GITHUB_REPOSITORY_SLUG_CS }}" echo "repository owner : ${{ env.V4_GITHUB_REPOSITORY_OWNER_PART_SLUG_CS }}" echo "repository name : ${{ env.V4_GITHUB_REPOSITORY_NAME_PART_SLUG_CS }}" echo "ref : ${{ env.V4_GITHUB_REF_SLUG_CS }}" echo "head ref : ${{ env.V4_GITHUB_HEAD_REF_SLUG_CS }}" echo "base ref : ${{ env.V4_GITHUB_BASE_REF_SLUG_CS }}" echo "event ref : ${{ env.V4_GITHUB_EVENT_REF_SLUG_CS }}" [[ "${{ env.GITHUB_REPOSITORY_SLUG_CS }}" == "${{ env.V4_GITHUB_REPOSITORY_SLUG_CS }}" ]] [[ "${{ env.GITHUB_REPOSITORY_OWNER_PART_SLUG_CS }}" == "${{ env.V4_GITHUB_REPOSITORY_OWNER_PART_SLUG_CS }}" ]] [[ "${{ env.GITHUB_REPOSITORY_NAME_PART_SLUG_CS }}" == "${{ env.V4_GITHUB_REPOSITORY_NAME_PART_SLUG_CS }}" ]] [[ "${{ env.GITHUB_REF_SLUG_CS }}" == "${{ env.V4_GITHUB_REF_SLUG_CS }}" ]] [[ "${{ env.GITHUB_HEAD_REF_SLUG_CS }}" == "${{ env.V4_GITHUB_HEAD_REF_SLUG_CS }}" ]] [[ "${{ env.GITHUB_BASE_REF_SLUG_CS }}" == "${{ env.V4_GITHUB_BASE_REF_SLUG_CS }}" ]] [[ "${{ env.GITHUB_EVENT_REF_SLUG_CS }}" == "${{ env.V4_GITHUB_EVENT_REF_SLUG_CS }}" ]] shell: bash - name: Validate // Slug URL variables run: | echo "repository : ${{ env.V4_GITHUB_REPOSITORY_SLUG_URL }}" echo "repository owner : ${{ env.V4_GITHUB_REPOSITORY_OWNER_PART_SLUG_URL }}" echo "repository name : ${{ env.V4_GITHUB_REPOSITORY_NAME_PART_SLUG_URL }}" echo "ref : ${{ env.V4_GITHUB_REF_SLUG_URL }}" echo "head ref : ${{ env.V4_GITHUB_HEAD_REF_SLUG_URL }}" echo "base ref : ${{ env.V4_GITHUB_BASE_REF_SLUG_URL }}" echo "event ref : ${{ env.V4_GITHUB_EVENT_REF_SLUG_URL }}" [[ "${{ env.GITHUB_REPOSITORY_SLUG_URL }}" == "${{ env.V4_GITHUB_REPOSITORY_SLUG_URL }}" ]] [[ "${{ env.GITHUB_REPOSITORY_OWNER_PART_SLUG_URL }}" == "${{ env.V4_GITHUB_REPOSITORY_OWNER_PART_SLUG_URL }}" ]] [[ "${{ env.GITHUB_REPOSITORY_NAME_PART_SLUG_URL }}" == "${{ env.V4_GITHUB_REPOSITORY_NAME_PART_SLUG_URL }}" ]] [[ "${{ env.GITHUB_REF_SLUG_URL }}" == "${{ env.V4_GITHUB_REF_SLUG_URL }}" ]] [[ "${{ env.GITHUB_HEAD_REF_SLUG_URL }}" == "${{ env.V4_GITHUB_HEAD_REF_SLUG_URL }}" ]] [[ "${{ env.GITHUB_BASE_REF_SLUG_URL }}" == "${{ env.V4_GITHUB_BASE_REF_SLUG_URL }}" ]] [[ "${{ env.GITHUB_EVENT_REF_SLUG_URL }}" == "${{ env.V4_GITHUB_EVENT_REF_SLUG_URL }}" ]] shell: bash - name: Validate // Slug URL variables (Case Sensitive) run: | echo "repository : ${{ env.V4_GITHUB_REPOSITORY_SLUG_URL_CS }}" echo "repository owner : ${{ env.V4_GITHUB_REPOSITORY_OWNER_PART_SLUG_URL_CS }}" echo "repository name : ${{ env.V4_GITHUB_REPOSITORY_NAME_PART_SLUG_URL_CS }}" echo "ref : ${{ env.V4_GITHUB_REF_SLUG_URL_CS }}" echo "head ref : ${{ env.V4_GITHUB_HEAD_REF_SLUG_URL_CS }}" echo "base ref : ${{ env.V4_GITHUB_BASE_REF_SLUG_URL_CS }}" echo "event ref : ${{ env.V4_GITHUB_EVENT_REF_SLUG_URL_CS }}" [[ "${{ env.GITHUB_REPOSITORY_SLUG_URL_CS }}" == "${{ env.V4_GITHUB_REPOSITORY_SLUG_URL_CS }}" ]] [[ "${{ env.GITHUB_REPOSITORY_OWNER_PART_SLUG_URL_CS }}" == "${{ env.V4_GITHUB_REPOSITORY_OWNER_PART_SLUG_URL_CS }}" ]] [[ "${{ env.GITHUB_REPOSITORY_NAME_PART_SLUG_URL_CS }}" == "${{ env.V4_GITHUB_REPOSITORY_NAME_PART_SLUG_URL_CS }}" ]] [[ "${{ env.GITHUB_REF_SLUG_URL_CS }}" == "${{ env.V4_GITHUB_REF_SLUG_URL_CS }}" ]] [[ "${{ env.GITHUB_HEAD_REF_SLUG_URL_CS }}" == "${{ env.V4_GITHUB_HEAD_REF_SLUG_URL_CS }}" ]] [[ "${{ env.GITHUB_BASE_REF_SLUG_URL_CS }}" == "${{ env.V4_GITHUB_BASE_REF_SLUG_URL_CS }}" ]] [[ "${{ env.GITHUB_EVENT_REF_SLUG_URL_CS }}" == "${{ env.V4_GITHUB_EVENT_REF_SLUG_URL_CS }}" ]] shell: bash - name: Validate // Ref Name run: | echo "raw : ${{ env.V4_GITHUB_REF_NAME }}" echo "slug : ${{ env.V4_GITHUB_REF_NAME_SLUG }}" echo "slug url : ${{ env.V4_GITHUB_REF_NAME_SLUG_URL }}" echo "slug (Case Sensitive) : ${{ env.V4_GITHUB_REF_NAME_SLUG_CS }}" echo "slug url (Case Sensitive) : ${{ env.V4_GITHUB_REF_NAME_SLUG_URL_CS }}" [[ "${{ env.GITHUB_REF_NAME }}" == "${{ env.V4_GITHUB_REF_NAME }}" ]] [[ "${{ env.GITHUB_REF_NAME_SLUG }}" == "${{ env.V4_GITHUB_REF_NAME_SLUG }}" ]] [[ "${{ env.GITHUB_REF_NAME_SLUG_URL }}" == "${{ env.V4_GITHUB_REF_NAME_SLUG_URL }}" ]] [[ "${{ env.GITHUB_REF_NAME_SLUG_CS }}" == "${{ env.V4_GITHUB_REF_NAME_SLUG_CS }}" ]] [[ "${{ env.GITHUB_REF_NAME_SLUG_URL_CS }}" == "${{ env.V4_GITHUB_REF_NAME_SLUG_URL_CS }}" ]] shell: bash - name: Validate // Short SHA variables run: | echo "sha : ${{ env.V4_GITHUB_SHA_SHORT }}" echo "pull request sha : ${{ env.V4_GITHUB_EVENT_PULL_REQUEST_HEAD_SHA_SHORT }}" [[ "${{ env.GITHUB_SHA_SHORT }}" == "${{ env.V4_GITHUB_SHA_SHORT }}" ]] [[ "${{ env.GITHUB_EVENT_PULL_REQUEST_HEAD_SHA_SHORT }}" == "${{ env.V4_GITHUB_EVENT_PULL_REQUEST_HEAD_SHA_SHORT }}" ]] shell: bash os-testing-slug-maxlength: strategy: fail-fast: false matrix: os: [macos-latest, ubuntu-latest, windows-latest] runs-on: ${{ matrix.os }} steps: - name: Checkout uses: actions/checkout@v3 # Test 1 - name: Using correct max length uses: ./ with: prefix: "CML_" slug-maxlength: 1 - name: Using correct max length // Validate that all slug variables are equals or under the slug-maxlength run: | env | grep "CML_" | grep "_SLUG" | cut -d"=" -f2 | while read -r value; do [ "$(echo "$value" | wc -m)" -le 2 ] ; done shell: bash # Test 2 - name: Using wrong max length id: using-wrong-max-length uses: ./ with: prefix: "WML_" slug-maxlength: "wrong" continue-on-error: true - name: Using wrong max length // Validate that the action end with an error run: | [[ "$(env | grep "WML_" | grep "_SLUG" | wc -l)" -eq 0 ]] [[ "${{ steps.using-wrong-max-length.outcome }}" == "failure" ]] [[ "${{ steps.using-wrong-max-length.conclusion }}" == "success" ]] shell: bash # Test 3 - name: Using empty max length id: using-empty-max-length uses: ./ with: prefix: "EML_" slug-maxlength: "" continue-on-error: true - name: Using empty max length // Validate that the action end with an error run: | [[ "$(env | grep "EML_" | grep "_SLUG" | wc -l)" -eq 0 ]] [[ "${{ steps.using-empty-max-length.outcome }}" == "failure" ]] [[ "${{ steps.using-empty-max-length.conclusion }}" == "success" ]] shell: bash # Test 4 - name: Using no limit on max length id: using-nolimit-max-length uses: ./ with: prefix: "NLML_" slug-maxlength: "nolimit" - name: Using no limit on length // Validate that the action end with an error run: | [[ "$(env | grep "NLML_" | grep "_SLUG" | wc -l)" -gt 0 ]] [[ "${{ steps.using-nolimit-max-length.outcome }}" == "success" ]] [[ "${{ steps.using-nolimit-max-length.conclusion }}" == "success" ]] shell: bash os-testing-without-checkout: strategy: fail-fast: false matrix: os: [macos-latest, ubuntu-latest, windows-latest] runs-on: ${{ matrix.os }} steps: - name: Checkout uses: actions/checkout@v3 with: path: this-action ref: ${{ github.ref }} - name: Load using v3.x uses: rlespinasse/github-slug-action@v3.x - name: Load using v4.x with prefix uses: ./this-action with: prefix: V4_ - name: Validate // Short SHA variables run: | echo "sha : ${{ env.V4_GITHUB_SHA_SHORT }}" echo "pull request sha : ${{ env.V4_GITHUB_EVENT_PULL_REQUEST_HEAD_SHA_SHORT }}" [[ "${{ env.GITHUB_SHA_SHORT }}" == "${{ env.V4_GITHUB_SHA_SHORT }}" ]] [[ "${{ env.GITHUB_EVENT_PULL_REQUEST_HEAD_SHA_SHORT }}" == "${{ env.V4_GITHUB_EVENT_PULL_REQUEST_HEAD_SHA_SHORT }}" ]] shell: bash release: runs-on: ubuntu-latest concurrency: group: release-${{ github.ref }}-${{ github.event_name }} needs: - os-testing - os-testing-slug-maxlength - os-testing-without-checkout steps: - name: Checkout uses: actions/checkout@v3 - name: Release this GitHub Action uses: rlespinasse/release-that@v1 with: without-prefix: true