Trigger auto-publish of unstable builds (#2869)
This commit is contained in:
86
.github/workflows/npm-publish-unstable.yml
vendored
Normal file
86
.github/workflows/npm-publish-unstable.yml
vendored
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
---
|
||||||
|
name: Publish unstable builds to npm
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
# kill in-progress action if another one is triggered
|
||||||
|
concurrency:
|
||||||
|
group: publish-unstable
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
# don't publish if source code has not changed
|
||||||
|
paths-filter:
|
||||||
|
name: Detect files changed
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
src-only: "${{ steps.changes.outputs.src-only }}"
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
- uses: dorny/paths-filter/@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||||
|
id: changes
|
||||||
|
with:
|
||||||
|
filters: |
|
||||||
|
src:
|
||||||
|
- 'src/**'
|
||||||
|
- 'package.json'
|
||||||
|
- 'tsconfig.json'
|
||||||
|
- 'index.d.ts'
|
||||||
|
- 'index.js'
|
||||||
|
|
||||||
|
# pause for 30 minutes to avoid publishing more than 2x per hour
|
||||||
|
debounce:
|
||||||
|
name: Publish max 2x per hour
|
||||||
|
if: steps.changes.outputs.src == 'true'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Debounce 30 minutes
|
||||||
|
uses: zachary95/github-actions-debounce
|
||||||
|
with:
|
||||||
|
wait: 1800
|
||||||
|
|
||||||
|
# run tests prior to publish to ensure some stability
|
||||||
|
test:
|
||||||
|
name: Run tests
|
||||||
|
needs: debounce
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
ref: main
|
||||||
|
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
||||||
|
with:
|
||||||
|
node-version: "22.x"
|
||||||
|
registry-url: "https://registry.npmjs.org"
|
||||||
|
- run: npm install -g npm
|
||||||
|
- run: npm install
|
||||||
|
- run: npm test
|
||||||
|
|
||||||
|
# if tests pass, publish unstable
|
||||||
|
publish:
|
||||||
|
name: Publish unstable
|
||||||
|
needs: test
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: npm publish
|
||||||
|
run: |
|
||||||
|
# set unstable version value
|
||||||
|
unstable_tag=$(echo "unstable.$(date --utc +%Y%m%d%H%M%S)")
|
||||||
|
latest=$(npm view @elastic/elasticsearch --json | jq -r '.["dist-tags"].latest')
|
||||||
|
next=$(yes | npx semver -i minor "$latest")
|
||||||
|
unstable_version=$(echo "$next-$unstable_tag")
|
||||||
|
|
||||||
|
# overwrite package.json with unstable version value
|
||||||
|
mv package.json package.json.bak
|
||||||
|
jq --arg v "$unstable_version" ".version = $v" package.json.bak > package.json
|
||||||
|
rm package.json.bak
|
||||||
|
|
||||||
|
# publish to npm
|
||||||
|
npm publish --provenance --access public --tag "unstable"
|
||||||
|
env:
|
||||||
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
Reference in New Issue
Block a user