diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 000000000..e8c69c5d5 --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,92 @@ +# This workflow will build and unit test the project. +# If the workflow is running on the "main" branch, then +# semantic-release is also run to create a new release (if +# warranted by the new commits being built). + +name: Build/Test/Publish + +on: + push: + branches: ['**'] + pull_request: + branches: ['**'] + workflow_dispatch: + # Allow workflow to be triggered manually. + +jobs: + detect-secrets: + if: "!contains(github.event.head_commit.message, '[skip ci]')" + name: Detect-Secrets + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: 3.12 + + - name: Install detect-secrets + run: | + pip install --upgrade "git+https://github.com/ibm/detect-secrets.git@master#egg=detect-secrets" + + - name: Run detect-secrets + run: | + detect-secrets scan --update .secrets.baseline + detect-secrets -v audit --report --fail-on-unaudited --fail-on-live --fail-on-audited-real .secrets.baseline + + build: + needs: detect-secrets + name: Build/Test (Node v${{ matrix.node-version }}) + runs-on: ubuntu-latest + strategy: + matrix: + node-version: ['18', '20', '22'] + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + + - name: Build/Test + run: | + npm ci + cd sdk-test-utilities && npm ci && cd .. + npm run build + npm run lint + npm run test-travis + + publish-release: + needs: build + name: Semantic-Release + if: "github.ref_name == 'main' && github.event_name != 'pull_request'" + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + persist-credentials: false + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: 22 + + - name: Build + run: | + npm ci + cd sdk-test-utilities && npm ci && cd .. + npm build + + - name: Run semantic-release + env: + GH_TOKEN: ${{ secrets.GH_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + run: npm run semantic-release diff --git a/README.md b/README.md index 88ecfa905..4471c68f6 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Build Status](https://app.travis-ci.com/IBM/node-sdk-core.svg?branch=main)](https://app.travis-ci.com/IBM/node-sdk-core) +[![Build Status](https://github.com/IBM/node-sdk-core/actions/workflows/build.yaml/badge.svg)](https://github.com/IBM/node-sdk-core/actions/workflows/build.yaml) [![npm-version](https://img.shields.io/npm/v/ibm-cloud-sdk-core.svg)](https://www.npmjs.com/package/ibm-cloud-sdk-core) [![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release) [![CLA assistant](https://cla-assistant.io/readme/badge/ibm/node-sdk-core)](https://cla-assistant.io/ibm/node-sdk-core)