@@ -30,19 +30,36 @@ jobs:
30
30
- name : " Create build"
31
31
run : npm run build
32
32
33
- - name : " Get version from package.json and create beta version"
33
+ - name : " Get version and package name from package.json and create beta version"
34
34
id : get_version
35
35
run : |
36
+ PACKAGE_NAME=$(node -p 'require("./package.json").name')
36
37
BASE_VERSION=$(node -p 'require("./package.json").version')
37
- BETA_VERSION="$BASE_VERSION-beta"
38
+
39
+ # Fetch all published versions for this package
40
+ ALL_VERSIONS=$(npm view $PACKAGE_NAME versions --json 2>/dev/null || echo "[]")
41
+
42
+ # Get latest beta for this base version
43
+ LATEST_BETA=$(echo $ALL_VERSIONS | jq -r '.[] | select(startswith("'"$BASE_VERSION"'-beta."))' | sort -V | tail -n 1)
44
+
45
+ if [ -z "$LATEST_BETA" ]; then
46
+ COUNTER=1
47
+ else
48
+ COUNTER=$(echo $LATEST_BETA | sed -E 's/.*-beta\.([0-9]+)$/\1/')
49
+ COUNTER=$((COUNTER + 1))
50
+ fi
51
+
52
+ BETA_VERSION="$BASE_VERSION-beta.$COUNTER"
53
+
54
+ echo "package=$PACKAGE_NAME" >> $GITHUB_OUTPUT
38
55
echo "version=$BETA_VERSION" >> $GITHUB_OUTPUT
39
- echo "Beta version: $BETA_VERSION"
56
+ echo "Beta version: $BETA_VERSION for package: $PACKAGE_NAME "
40
57
41
58
- name : " Check if beta version already exists on NPM"
42
59
run : |
60
+ PACKAGE_NAME=${{ steps.get_version.outputs.package }}
43
61
BETA_VERSION=${{ steps.get_version.outputs.version }}
44
- # Check if version exists on npm
45
- if npm view @browserstack/mcp-server@$BETA_VERSION version 2>/dev/null; then
62
+ if npm view $PACKAGE_NAME@$BETA_VERSION version 2>/dev/null; then
46
63
echo "Error: Beta version $BETA_VERSION already exists on NPM!"
47
64
exit 1
48
65
fi
55
72
- name : " Publish beta to NPM"
56
73
run : npm publish --tag beta --access public
57
74
env :
58
- NODE_AUTH_TOKEN : ${{ secrets.NPM_TOKEN }}
75
+ NODE_AUTH_TOKEN : ${{ secrets.NPM_TOKEN }}
76
+
0 commit comments