Merge branch 'rlespinasse:v4.x' into v4.x #1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: '[v4] Test and Release' | |
on: [push, pull_request] | |
jobs: | |
check-v3compatibility: | |
name: 'Check v3 compatibility' | |
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 v4.x with prefix | |
uses: ./ | |
with: | |
prefix: V4_ | |
short-length: 8 | |
- name: Load using v3.x | |
uses: rlespinasse/[email protected] | |
- name: Validate // Partial variables | |
run: | | |
[[ "${{ 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: | | |
[[ "${{ 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: | | |
[[ "${{ 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: | | |
[[ "${{ 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: | | |
[[ "${{ 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: | | |
[[ "${{ 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: | | |
[[ "${{ 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 | |
check-v3compatibility-without-checkout: | |
name: 'Check v3 compatibility (without checkout)' | |
needs: | |
- check-v3compatibility | |
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 v4.x with prefix | |
uses: ./this-action | |
with: | |
prefix: V4_ | |
short-length: 8 | |
- name: Load using v3.x | |
uses: rlespinasse/[email protected] | |
- name: Validate // Short SHA variables | |
run: | | |
[[ "${{ 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 | |
display: | |
name: 'Display produced variables' | |
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 v4.x | |
uses: ./ | |
- name: Partial variables | |
run: | | |
echo "repository owner : ${{ env.GITHUB_REPOSITORY_OWNER_PART }}" | |
echo "repository name : ${{ env.GITHUB_REPOSITORY_NAME_PART }}" | |
shell: bash | |
- name: Slug variables | |
run: | | |
echo "repository : ${{ env.GITHUB_REPOSITORY_SLUG }}" | |
echo "repository owner : ${{ env.GITHUB_REPOSITORY_OWNER_PART_SLUG }}" | |
echo "repository name : ${{ env.GITHUB_REPOSITORY_NAME_PART_SLUG }}" | |
echo "ref : ${{ env.GITHUB_REF_SLUG }}" | |
echo "head ref : ${{ env.GITHUB_HEAD_REF_SLUG }}" | |
echo "base ref : ${{ env.GITHUB_BASE_REF_SLUG }}" | |
echo "event ref : ${{ env.GITHUB_EVENT_REF_SLUG }}" | |
shell: bash | |
- name: Slug variables (Case Sensitive) | |
run: | | |
echo "repository : ${{ env.GITHUB_REPOSITORY_SLUG_CS }}" | |
echo "repository owner : ${{ env.GITHUB_REPOSITORY_OWNER_PART_SLUG_CS }}" | |
echo "repository name : ${{ env.GITHUB_REPOSITORY_NAME_PART_SLUG_CS }}" | |
echo "ref : ${{ env.GITHUB_REF_SLUG_CS }}" | |
echo "head ref : ${{ env.GITHUB_HEAD_REF_SLUG_CS }}" | |
echo "base ref : ${{ env.GITHUB_BASE_REF_SLUG_CS }}" | |
echo "event ref : ${{ env.GITHUB_EVENT_REF_SLUG_CS }}" | |
shell: bash | |
- name: Slug URL variables | |
run: | | |
echo "repository : ${{ env.GITHUB_REPOSITORY_SLUG_URL }}" | |
echo "repository owner : ${{ env.GITHUB_REPOSITORY_OWNER_PART_SLUG_URL }}" | |
echo "repository name : ${{ env.GITHUB_REPOSITORY_NAME_PART_SLUG_URL }}" | |
echo "ref : ${{ env.GITHUB_REF_SLUG_URL }}" | |
echo "head ref : ${{ env.GITHUB_HEAD_REF_SLUG_URL }}" | |
echo "base ref : ${{ env.GITHUB_BASE_REF_SLUG_URL }}" | |
echo "event ref : ${{ env.GITHUB_EVENT_REF_SLUG_URL }}" | |
shell: bash | |
- name: Slug URL variables (Case Sensitive) | |
run: | | |
echo "repository : ${{ env.GITHUB_REPOSITORY_SLUG_URL_CS }}" | |
echo "repository owner : ${{ env.GITHUB_REPOSITORY_OWNER_PART_SLUG_URL_CS }}" | |
echo "repository name : ${{ env.GITHUB_REPOSITORY_NAME_PART_SLUG_URL_CS }}" | |
echo "ref : ${{ env.GITHUB_REF_SLUG_URL_CS }}" | |
echo "head ref : ${{ env.GITHUB_HEAD_REF_SLUG_URL_CS }}" | |
echo "base ref : ${{ env.GITHUB_BASE_REF_SLUG_URL_CS }}" | |
echo "event ref : ${{ env.GITHUB_EVENT_REF_SLUG_URL_CS }}" | |
shell: bash | |
- name: Ref Name | |
run: | | |
echo "raw : ${{ env.GITHUB_REF_NAME }}" | |
echo "slug : ${{ env.GITHUB_REF_NAME_SLUG }}" | |
echo "slug url : ${{ env.GITHUB_REF_NAME_SLUG_URL }}" | |
echo "slug (Case Sensitive) : ${{ env.GITHUB_REF_NAME_SLUG_CS }}" | |
echo "slug url (Case Sensitive) : ${{ env.GITHUB_REF_NAME_SLUG_URL_CS }}" | |
shell: bash | |
- name: Short SHA variables | |
run: | | |
echo "sha : ${{ env.GITHUB_SHA_SHORT }}" | |
echo "pull request sha : ${{ env.GITHUB_EVENT_PULL_REQUEST_HEAD_SHA_SHORT }}" | |
shell: bash | |
display-without-checkout: | |
name: 'Display produced variables (without checkout)' | |
needs: | |
- display | |
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 v4.x with prefix | |
uses: ./this-action | |
with: | |
prefix: V4_ | |
short-length: 8 | |
- name: Load using v3.x | |
uses: rlespinasse/[email protected] | |
- name: Short SHA variables | |
run: | | |
echo "sha : ${{ env.GITHUB_SHA_SHORT }}" | |
echo "pull request sha : ${{ env.GITHUB_EVENT_PULL_REQUEST_HEAD_SHA_SHORT }}" | |
shell: bash | |
input-short-length: | |
name: "Input 'short-length'" | |
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 short length | |
uses: ./ | |
with: | |
prefix: 'CSL_' | |
short-length: 4 | |
- name: Using correct length // Validate that all short variables lengths are equals to short-length | |
run: | | |
env | grep "CSL_" | grep "_SHORT" | cut -d"=" -f2 | while read -r value; do [ "$(echo "$value" | wc -m)" -le 5 ] ; done | |
shell: bash | |
# Test 2 | |
- name: Using wrong short length | |
id: using-wrong-short-length | |
uses: ./ | |
with: | |
prefix: 'WSL_' | |
short-length: 'wrong' | |
continue-on-error: true | |
- name: Using wrong short length // Validate that the action end with an error | |
run: | | |
[[ "$(env | grep "WSL_" | grep "_SHORT" | wc -l)" -eq 0 ]] | |
[[ "${{ steps.using-wrong-short-length.outcome }}" == "failure" ]] | |
[[ "${{ steps.using-wrong-short-length.conclusion }}" == "success" ]] | |
shell: bash | |
input-short-length-without-checkout: | |
name: "Input 'short-length' (without checkout)" | |
needs: | |
- input-short-length | |
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 }} | |
# Test 1 | |
- name: Using correct short length | |
uses: ./this-action | |
with: | |
prefix: 'CSL_' | |
short-length: 4 | |
- name: Using correct length // Validate that all short variables lengths are equals to short-length | |
run: | | |
env | grep "CSL_" | grep "_SHORT" | cut -d"=" -f2 | while read -r value; do [ "$(echo "$value" | wc -m)" -le 5 ] ; done | |
shell: bash | |
# Test 2 | |
- name: Using empty short length | |
id: using-empty-short-length | |
uses: ./this-action | |
with: | |
prefix: 'ESL_' | |
continue-on-error: true | |
- name: Using empty short length // Validate that the action don't end with an error | |
run: | | |
[[ "$(env | grep "ESL_" | grep "_SHORT" | wc -l)" -gt 0 ]] | |
[[ "${{ steps.using-empty-short-length.outcome }}" == "success" ]] | |
[[ "${{ steps.using-empty-short-length.conclusion }}" == "success" ]] | |
shell: bash | |
# Test 3 | |
- name: Using wrong short length | |
id: using-wrong-short-length | |
uses: ./this-action | |
with: | |
prefix: 'WSL_' | |
short-length: 'wrong' | |
continue-on-error: true | |
- name: Using wrong short length // Validate that the action end with an error | |
run: | | |
[[ "$(env | grep "WSL_" | grep "_SHORT" | wc -l)" -eq 0 ]] | |
[[ "${{ steps.using-wrong-short-length.outcome }}" == "failure" ]] | |
[[ "${{ steps.using-wrong-short-length.conclusion }}" == "success" ]] | |
shell: bash | |
input-slug-maxlength: | |
name: "Input '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 slug max length | |
uses: ./ | |
with: | |
prefix: 'CML_' | |
slug-maxlength: 1 | |
- name: Using correct max length // Validate that all slug variables lengths 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 slug max length | |
id: using-wrong-slug-max-length | |
uses: ./ | |
with: | |
prefix: 'WML_' | |
slug-maxlength: 'wrong' | |
continue-on-error: true | |
- name: Using wrong slug max length // Validate that the action end with an error | |
run: | | |
[[ "$(env | grep "WML_" | grep "_SLUG" | wc -l)" -eq 0 ]] | |
[[ "${{ steps.using-wrong-slug-max-length.outcome }}" == "failure" ]] | |
[[ "${{ steps.using-wrong-slug-max-length.conclusion }}" == "success" ]] | |
shell: bash | |
# Test 3 | |
- name: Using empty slug max length | |
id: using-empty-slug-max-length | |
uses: ./ | |
with: | |
prefix: 'EML_' | |
slug-maxlength: '' | |
continue-on-error: true | |
- name: Using empty slug max length // Validate that the action end with an error | |
run: | | |
[[ "$(env | grep "EML_" | grep "_SLUG" | wc -l)" -eq 0 ]] | |
[[ "${{ steps.using-empty-slug-max-length.outcome }}" == "failure" ]] | |
[[ "${{ steps.using-empty-slug-max-length.conclusion }}" == "success" ]] | |
shell: bash | |
# Test 4 | |
- name: Using no limit on slug max length | |
id: using-nolimit-slug-max-length | |
uses: ./ | |
with: | |
prefix: 'NLML_' | |
slug-maxlength: 'nolimit' | |
- name: Using no limit on slug max length // Validate that the action end with an error | |
run: | | |
[[ "$(env | grep "NLML_" | grep "_SLUG" | wc -l)" -gt 0 ]] | |
[[ "${{ steps.using-nolimit-slug-max-length.outcome }}" == "success" ]] | |
[[ "${{ steps.using-nolimit-slug-max-length.conclusion }}" == "success" ]] | |
shell: bash | |
release: | |
runs-on: ubuntu-latest | |
concurrency: | |
group: release-${{ github.ref }}-${{ github.event_name }} | |
needs: | |
- check-v3compatibility-without-checkout | |
- display-without-checkout | |
- input-short-length-without-checkout | |
- input-slug-maxlength | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Release this GitHub Action | |
uses: rlespinasse/release-that@v1 |