Skip to content

Publish Dev Version

Publish Dev Version #6

Workflow file for this run

# .github/workflows/dev.yml
name: Publish Dev Version
on:
workflow_dispatch: # También se puede ejecutar manualmente
jobs:
publish-dev:
name: Build & Publish Dev Version
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
# Checkout del código del repositorio
- name: Checkout repository
uses: actions/checkout@v4
# Configurar la identidad de Git desde secrets
- name: Set Git Identity
run: |
git config --global user.name "${{ secrets.GIT_USER_NAME }}"
git config --global user.email "${{ secrets.GIT_USER_EMAIL }}"
# Instalar pnpm
- name: Install pnpm
uses: pnpm/action-setup@v3
with:
version: latest
# Instalar Node.js y configurar el registro de NPM
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
registry-url: 'https://registry.npmjs.org'
# Crear una variable de entorno con el nombre del paquete
- name: Set package name from package.json
id: get-package-name
run: echo "PACKAGE_NAME=$(node -p "require('./package.json').name")" >> $GITHUB_ENV
# Comprobar la versión actual de desarrollo
- name: Check current dev version
id: release-check
run: |
if [[ $(npm view $PACKAGE_NAME@dev version | grep -e "$(git rev-parse --short HEAD)") ]]; \
then echo "RELEASE=0" >> "$GITHUB_OUTPUT"; \
else echo "RELEASE=1" >> "$GITHUB_OUTPUT"; \
fi
# Instalar las dependencias
- name: Install dependencies
if: steps.release-check.outputs.release == '1'
run: pnpm install --frozen-lockfile --ignore-scripts
# Publicar una versión de desarrollo en NPM
- name: Publish Dev Version
if: steps.release-check.outputs.release == '1'
id: publish
run: |
pnpm version prerelease --preid "dev.$(date +%s)-$(git rev-parse --short HEAD)"
pnpm publish --no-provenance --tag dev --access public --no-git-checks
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }} # Autenticación con NPM
# Deprecate prior development releases
- name: Deprecate prior development releases
if: steps.release-check.outputs.release == '1'
run: |
for version in $(npm view $PACKAGE_NAME versions --json | jq -r '.[] | select(test("dev."))'); do
pnpm exec npm deprecate $PACKAGE_NAME@$version "This version is deprecated. Please use a newer version."
done
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}