diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml deleted file mode 100644 index 1c519ef8..00000000 --- a/.github/workflows/publish.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: Publish -on: - release: - types: [ published ] - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: '18.x' - registry-url: 'https://registry.npmjs.org' - - run: npm install - - run: npm publish - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..0946b971 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,55 @@ +name: Release + +on: + workflow_dispatch: + inputs: + versionType: + description: version type increment (major | minor | patch) + required: true + nodeAuthToken: + required: true + type: string +jobs: + release: + runs-on: ubuntu-latest + steps: + - name: Mask Node Auth Token + - run: | + NODE_AUTH_TOKEN=$(jq -r '.inputs.nodeAuthToken' $GITHUB_EVENT_PATH) + echo ::add-mask::$NODE_AUTH_TOKEN + echo NODE_AUTH_TOKEN=$NODE_AUTH_TOKEN >> $GITHUB_ENV + + - uses: actions/create-github-app-token@v1 + id: app-token + name: Generate app token + with: + app-id: ${{ vars.POWSYBL_ACTIONS_APPID }} + private-key: ${{ secrets.POWSYBL_ACTIONS_SECRET }} + + - name: Checkout sources + uses: actions/checkout@v4 + with: + token: ${{ steps.app-token.outputs.token }} + + - uses: actions/setup-node@v4 + with: + node-version: '18.x' + registry-url: 'https://registry.npmjs.org' + + - name: Add release commit and publish + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" + npm version ${{ github.event.inputs.versionType }} + git push origin main + git push origin $(git tag --points-at HEAD) + npm install + npm publish + env: + NODE_AUTH_TOKEN: ${{ env.NODE_AUTH_TOKEN }} + + - name: Create GitHub release + run: | + gh release create $(git tag --points-at HEAD) --generate-notes + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/README.md b/README.md index 5112dbea..f801dbfd 100644 --- a/README.md +++ b/README.md @@ -31,15 +31,11 @@ To fix this, run this command from the app **after** running "npm install" If you want to deploy a new version of powsybl-network-viewer in the [NPM package registry](https://www.npmjs.com/package/@powsybl/powsybl-network-viewer), you need to follow the steps below: -- Update to the new version in [package.json](https://github.com/powsybl/powsybl-network-viewer/blob/main/package.json) (example `0.6.0`) -- Update the package-lock.json: `npm install` -- Commit the package.json and package-lock.json files, push to a branch, make a PR, have it reviewed and merged to main. -- [Make a release](https://github.com/powsybl/powsybl-network-viewer/releases/new) on GitHub by creating a new tag on the last commit. On the release creation page: - - In "Choose a tag": type the tag you want to create (ex.: v0.6.0) and select "create new tag" - - In "Target": click on "recent commit" tab and select your release commit - - Click on "Generate release note" - - Click on "Publish release" -- It will trigger a job that will publish the release on NPM +- [Make a release action](https://github.com/powsybl/powsybl-network-viewer/actions/workflows/release.yml) +- In the 'run workflow' combobox select, let the branch on main +- Enter the type of evolution (major | minor | patch) +- Enter your NPM access token (see [access token documentation](https://docs.npmjs.com/creating-and-viewing-access-tokens) for details) +- Click 'run workflow' Notes : * Check [license-checker-config.json](license-checker-config.json) for license white list and exclusion.