|
8 | 8 | type: string |
9 | 9 | push: |
10 | 10 | tags: |
11 | | - - '[0-9]+.[0-9]+.[0-9]+' # Triggers on main SDK version tags |
| 11 | + - '[0-9]+.[0-9]+.[0-9]+' # Triggers on main SDK version tags to check if Client SDK needs update |
12 | 12 |
|
13 | 13 | jobs: |
14 | 14 | check-and-publish: |
|
17 | 17 | environment: prod |
18 | 18 |
|
19 | 19 | outputs: |
| 20 | + # Used to conditionally run publish steps and notifications |
20 | 21 | client_version: ${{steps.calc_version.outputs.version}} |
21 | 22 | should_publish: ${{steps.calc_version.outputs.should_publish}} |
22 | 23 |
|
@@ -51,15 +52,42 @@ jobs: |
51 | 52 | LAST_VERSION=${LAST_CLIENT_TAG#client-} |
52 | 53 | echo "Last OAuth2Client version: $LAST_VERSION (tag: $LAST_CLIENT_TAG)" |
53 | 54 | |
| 55 | + # Determine Bump Type from Main SDK tags |
| 56 | + BUMP_TYPE="patch" |
| 57 | + if [[ "$GITHUB_REF_TYPE" == "tag" ]]; then |
| 58 | + CURRENT_MAIN_TAG=$GITHUB_REF_NAME |
| 59 | + # Find previous main tag (exclude current) |
| 60 | + PREV_MAIN_TAG=$(git tag -l '[0-9]*.[0-9]*.[0-9]*' --sort=-v:refname | grep -v "^$CURRENT_MAIN_TAG$" | head -n 1) |
| 61 | + |
| 62 | + if [ ! -z "$PREV_MAIN_TAG" ]; then |
| 63 | + echo "Main SDK Bump: $PREV_MAIN_TAG -> $CURRENT_MAIN_TAG" |
| 64 | + IFS='.' read -r m1 m2 m3 <<< "$CURRENT_MAIN_TAG" |
| 65 | + IFS='.' read -r p1 p2 p3 <<< "$PREV_MAIN_TAG" |
| 66 | + |
| 67 | + if [ "$m1" != "$p1" ]; then |
| 68 | + BUMP_TYPE="major" |
| 69 | + elif [ "$m2" != "$p2" ]; then |
| 70 | + BUMP_TYPE="minor" |
| 71 | + fi |
| 72 | + fi |
| 73 | + fi |
| 74 | + echo "Detected bump type: $BUMP_TYPE" |
| 75 | + |
54 | 76 | # Check if OAuth2Client files changed since last client tag |
55 | 77 | if git diff --name-only $LAST_CLIENT_TAG HEAD | grep -q 'Xero.NetStandard.OAuth2Client/'; then |
56 | 78 | echo "OAuth2Client files have changed since $LAST_CLIENT_TAG" |
57 | 79 | |
58 | | - # Increment patch version |
59 | | - IFS='.' read -r major minor patch <<< "$LAST_VERSION" |
60 | | - NEW_VERSION="${major}.${minor}.$((patch + 1))" |
| 80 | + # Increment version based on bump type |
| 81 | + IFS='.' read -r c1 c2 c3 <<< "$LAST_VERSION" |
| 82 | + if [ "$BUMP_TYPE" == "major" ]; then |
| 83 | + NEW_VERSION="$((c1 + 1)).0.0" |
| 84 | + elif [ "$BUMP_TYPE" == "minor" ]; then |
| 85 | + NEW_VERSION="${c1}.$((c2 + 1)).0" |
| 86 | + else |
| 87 | + NEW_VERSION="${c1}.${c2}.$((c3 + 1))" |
| 88 | + fi |
61 | 89 | |
62 | | - echo "Incrementing version: $LAST_VERSION -> $NEW_VERSION" |
| 90 | + echo "Incrementing version ($BUMP_TYPE): $LAST_VERSION -> $NEW_VERSION" |
63 | 91 | echo "version=$NEW_VERSION" >> $GITHUB_OUTPUT |
64 | 92 | echo "should_publish=true" >> $GITHUB_OUTPUT |
65 | 93 | else |
|
0 commit comments