Build and Release Node.js/Python Package #2
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: | |
build: | |
runs-on: ubuntu-latest | |
if: startsWith(github.ref, 'refs/tags/') | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 16 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.x" | |
- run: npm ci | |
update-version: | |
needs: build | |
runs-on: ubuntu-latest | |
if: startsWith(github.ref, 'refs/tags/') | |
steps: | |
- uses: actions/checkout@v4 | |
- 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 version to $TAG_NAME" | |
git tag -f $TAG_NAME | |
git push --force origin $TAG_NAME | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: build release distributions | |
run: | | |
pip install setuptools | |
python setup.py sdist | |
- name: upload windows dists | |
uses: actions/upload-artifact@v4 | |
with: | |
name: release-dists | |
path: dist/ | |
npm-publish: | |
runs-on: ubuntu-latest | |
needs: | |
- update-version | |
steps: | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 16 | |
registry-url: https://registry.npmjs.org/ | |
- run: npm ci | |
- run: npm publish --access=public | |
env: | |
NODE_AUTH_TOKEN: ${{secrets.npm_token}} | |
pypi-publish: | |
runs-on: ubuntu-latest | |
if: startsWith(github.ref, 'refs/tags/') | |
needs: | |
- update-version | |
permissions: | |
id-token: write | |
environment: | |
name: python-release-env | |
url: https://github.com | |
steps: | |
- name: Retrieve release distributions | |
uses: actions/download-artifact@v4 | |
with: | |
name: release-dists | |
path: dist/ | |
- name: Publish release distributions to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |