get-version-info.yml 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. name: Parse and Validate a version string or tag
  2. on:
  3. workflow_call:
  4. inputs:
  5. version:
  6. description: "A specific version to use"
  7. required: false
  8. type: string
  9. outputs:
  10. semVerStr:
  11. description: "The full version string."
  12. value: ${{ jobs.determine-version.outputs.semVerStr}}
  13. semVerNum:
  14. description: "The numerical part of the version string"
  15. value: ${{ jobs.determine-version.outputs.semVerNum}}
  16. revNum:
  17. description: "The revision number"
  18. value: ${{ jobs.determine-version.outputs.revNum}}
  19. env:
  20. JAVA_VERSION: 19
  21. JAVA_DIST: 'temurin'
  22. JAVA_CACHE: 'maven'
  23. jobs:
  24. determine-version:
  25. name: 'Determines the version following semver'
  26. runs-on: ubuntu-latest
  27. outputs:
  28. semVerNum: ${{ steps.versions.outputs.semVerNum }}
  29. semVerStr: ${{ steps.versions.outputs.semVerStr }}
  30. revNum: ${{ steps.versions.outputs.revNum }}
  31. steps:
  32. - uses: actions/checkout@v3
  33. with:
  34. fetch-depth: 0
  35. - name: Setup Java
  36. uses: actions/setup-java@v3
  37. with:
  38. distribution: ${{ env.JAVA_DIST }}
  39. java-version: ${{ env.JAVA_VERSION }}
  40. cache: ${{ env.JAVA_CACHE }}
  41. - id: versions
  42. name: Get version information # TODO: is Github ref inherited when called from super workflow?
  43. run: |
  44. if [[ $GITHUB_REF =~ refs/tags/[0-9]+\.[0-9]+\.[0-9]+.* ]]; then
  45. SEM_VER_STR=${GITHUB_REF##*/}
  46. elif [[ "${{ inputs.version }}" =~ [0-9]+\.[0-9]+\.[0-9]+.* ]]; then
  47. SEM_VER_STR="${{ github.event.inputs.version }}"
  48. else
  49. SEM_VER_STR=`mvn help:evaluate -Dexpression=project.version -q -DforceStdout`
  50. fi
  51. SEM_VER_NUM=`echo ${SEM_VER_STR} | sed -E 's/([0-9]+\.[0-9]+\.[0-9]+).*/\1/'`
  52. REVCOUNT=`git rev-list --count HEAD`
  53. echo "::set-output name=semVerStr::${SEM_VER_STR}"
  54. echo "::set-output name=semVerNum::${SEM_VER_NUM}"
  55. echo "::set-output name=revNum::${REVCOUNT}"
  56. - name: Validate Version
  57. uses: skymatic/semver-validation-action@v1
  58. with:
  59. version: ${{ steps.versions.outputs.semVerStr }}