Build and Release Node.js/Python Package #7
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created | |
# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages | |
name: Node.js/Python Package | |
on: | |
workflow_dispatch: | |
release: | |
types: [ created ] | |
pull_request: | |
types: [ review_requested ] | |
jobs: | |
checkout: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
update-version: | |
needs: checkout | |
runs-on: ubuntu-latest | |
if: startsWith(github.ref, 'refs/tags/') | |
steps: | |
- name: Update package.json version | |
run: | | |
TAG_NAME=$(echo ${{github.ref_name}}) | |
jq --arg tag "$TAG_NAME" '.version = $tag' package.json > tmp.$$.json && mv tmp.$$.json package.json | |
- name: Update setup.py version | |
run: | | |
TAG_NAME=$(echo ${{github.ref_name}}) | |
sed -i "s/version=.*,/version='$TAG_NAME',/" setup.py | |
- name: Commit and push changes | |
run: | | |
TAG_NAME=$(echo ${{github.ref_name}}) | |
git config --global user.name 'github-actions[bot]' | |
git config --global user.email 'github-actions[bot]@users.noreply.github.com' | |
git add package.json | |
git add package-lock.json | |
git add setup.py | |
git commit -m "Update package.json and setup.py version to $TAG_NAME" | |
git tag -f $TAG_NAME | |
git push --force origin $TAG_NAME | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
build-npm-package: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 16 | |
registry-url: https://registry.npmjs.org/ | |
- run: npm ci | |
publish-npm-package: | |
needs: build-npm-package | |
runs-on: ubuntu-latest | |
steps: | |
- run: npm publish --access=public | |
env: | |
NODE_AUTH_TOKEN: ${{secrets.npm_token}} | |
build-python-package: | |
runs-on: ubuntu-latest | |
steps: | |
- name: build release distributions | |
run: | | |
pip install setuptools | |
python setup.py sdist | |
publish-python-package: | |
needs: build-python-package | |
runs-on: ubuntu-latest | |
steps: | |
- name: upload windows dists | |
uses: actions/upload-artifact@v4 | |
with: | |
name: release-dists | |
path: dist/ | |
- name: Publish release distributions to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
permissions: | |
id-token: write | |
environment: | |
name: python-release-env | |
url: https://github.com | |