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