From 18a68c4ed2f3acf636e0e070707451d3a13b448f Mon Sep 17 00:00:00 2001 From: Aimen Sahnoun Date: Fri, 4 Oct 2024 14:53:11 +0300 Subject: [PATCH] feat: add CI for auto publishing CLI --- .github/workflow/npm-publish.yaml | 44 +++++++++++++++++++++++++++++++ scripts/is-release-needed.sh | 13 +++++++++ 2 files changed, 57 insertions(+) create mode 100644 .github/workflow/npm-publish.yaml create mode 100644 scripts/is-release-needed.sh diff --git a/.github/workflow/npm-publish.yaml b/.github/workflow/npm-publish.yaml new file mode 100644 index 0000000..a0bef25 --- /dev/null +++ b/.github/workflow/npm-publish.yaml @@ -0,0 +1,44 @@ +name: release-cli-if-necessary + +on: + push: + branches: + - main + workflow_dispatch: + +jobs: + release-cli-if-necessary: + runs-on: ubuntu-latest + steps: + - name: Checkout repository 🛎️ + uses: actions/checkout@v4 + + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: '18' + registry-url: 'https://registry.npmjs.org' + + - name: Install dependencies 📥 + run: npm ci + + - name: Make is-release-needed.sh executable + run: chmod +x ./scripts/is-release-needed.sh + + - name: Check if version number has already been released 🕵️‍♀️ + id: is-release-needed + run: | + echo "Checking if request-injector is already published..." + IS_RELEASE_NEEDED=$(./scripts/is-release-needed.sh) + echo "is-release-needed=$IS_RELEASE_NEEDED" + echo "is-release-needed=$IS_RELEASE_NEEDED" >> $GITHUB_OUTPUT + + - name: Build package + if: steps.is-release-needed.outputs.is-release-needed == 'true' + run: npm run build + + - name: Publish package on NPM 📦 + if: steps.is-release-needed.outputs.is-release-needed == 'true' + run: npm publish + env: + NODE_AUTH_TOKEN: ${{ secrets.REQUEST_BOT_NPM_TOKEN }} diff --git a/scripts/is-release-needed.sh b/scripts/is-release-needed.sh new file mode 100644 index 0000000..2fbbb5d --- /dev/null +++ b/scripts/is-release-needed.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +# This script checks if the current version of the package is already published on npm +PACKAGE_VERSION="$(node -p -e "require('./package.json').version")" +PACKAGE_NAME="$(node -p -e "require('./package.json').name")" + +FOUND_VERSION=$(npm view $PACKAGE_NAME versions | grep $PACKAGE_VERSION) + +if [ -z "$FOUND_VERSION" ]; then + echo 'true' # release needed +else + echo 'false' # release not needed +fi