v2.0.1 #25
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
name: Deploy library on NPM | |
on: | |
release: | |
types: [created, edited, published] | |
# Declare default permissions as read only. | |
permissions: read-all | |
jobs: | |
publish: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- name: "Check file existence" | |
id: check_files | |
uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v3.0.0 | |
with: | |
files: "package.json, README.md" | |
- name: File exists | |
if: steps.check_files.outputs.files_exists != 'true' | |
# Only runs if all of the files exists | |
run: exit 1 | |
- name: Get package.json package name and match with repository name | |
run: | | |
echo PACKAGE_NAME=$(cat package.json | jq .name | cut -f2 -d"\"" | cut -f2 -d"@") >> $GITHUB_OUTPUT | |
echo PACKAGE_VERSION="refs/tags/v"$(cat package.json | jq .version | cut -f2 -d"\"") >> $GITHUB_OUTPUT | |
echo PACKAGE_REPOSITORY=$(cat package.json | jq .repository | cut -f2 -d"\"" | sed 's/:/\//' | sed 's/@/:\/\//') >> $GITHUB_OUTPUT | |
id: get_package_info | |
- name: Check if package_name matches with repository name | |
if: github.repository != steps.get_package_info.outputs.PACKAGE_NAME | |
# Fail if package name not properly configured | |
run: exit 1 | |
- name: Check if package version matches with tag | |
if: github.ref != steps.get_package_info.outputs.PACKAGE_VERSION | |
# Fail if package version not properly setted | |
run: exit 1 | |
- name: Check if package repository matches with repository | |
if: github.repositoryUrl != steps.get_package_info.outputs.PACKAGE_REPOSITORY | |
# Fail if package repository doesn't match with repository | |
run: exit 1 | |
- name: Setup Node.js | |
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af #v4.1.0 | |
with: | |
node-version: 18 | |
- name: Install dependencies | |
run: npm install | |
- name: Pre upload validation | |
id: pack | |
run: | | |
npm pack --dry-run >> output 2>&1 | |
echo PRE_UPLOAD_HASH=$(cat output| grep shasum | cut -f4 -d" ") >> $GITHUB_OUTPUT | |
- name: Upload package | |
run: npm publish --access public | |
env: | |
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} | |
- name: Post upload validation | |
id: unpack | |
run: | | |
PACKAGE_NAME=$(cat package.json | jq .name | cut -f2 -d"\"")@$(cat package.json | jq .version | cut -f2 -d"\"") | |
echo POST_UPLOAD_HASH=$(npm view $PACKAGE_NAME) >> $GITHUB_OUTPUT | |
- name: Pre and Post Upload validation | |
if: steps.pack.outputs.PRE_UPLOAD_HASH != steps.unpack.outputs.POST_UPLOAD_HASH | |
# Fail if package hashes doesn't match | |
run: exit 1 |