59 lines
2.2 KiB
YAML
59 lines
2.2 KiB
YAML
name: Publish npm package
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*'
|
|
|
|
jobs:
|
|
publish:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Bun
|
|
uses: oven-sh/setup-bun@v2
|
|
with:
|
|
bun-version: latest
|
|
|
|
- name: Set version from tag
|
|
run: |
|
|
VERSION=${GITHUB_REF_NAME#v}
|
|
echo "Setting package version to $VERSION"
|
|
bun -e "const fs=require('fs'); const pkg=JSON.parse(fs.readFileSync('package.json','utf8')); pkg.version='${VERSION}'; fs.writeFileSync('package.json',JSON.stringify(pkg,null,2)+'\n');"
|
|
SHA=$(curl -s -H "Authorization: token ${GITEA_TOKEN}" \
|
|
"https://git.blassanto.me/api/v1/repos/blas/openapi-clean-arch-gen/contents/package.json?ref=main" \
|
|
| bun -e "let d='';process.stdin.on('data',c=>d+=c).on('end',()=>console.log(JSON.parse(d).sha))")
|
|
CONTENT=$(base64 -w 0 package.json)
|
|
curl -s -X PUT \
|
|
-H "Authorization: token ${GITEA_TOKEN}" \
|
|
-H "Content-Type: application/json" \
|
|
"https://git.blassanto.me/api/v1/repos/blas/openapi-clean-arch-gen/contents/package.json" \
|
|
-d "{\"message\":\"chore: bump to version v${VERSION}\",\"content\":\"${CONTENT}\",\"sha\":\"${SHA}\",\"branch\":\"main\"}"
|
|
env:
|
|
GITEA_TOKEN: ${{ secrets.TOKEN }}
|
|
|
|
- name: Install dependencies
|
|
run: bun install --frozen-lockfile
|
|
|
|
- name: Lint
|
|
run: bun run lint
|
|
|
|
- name: Build
|
|
run: bun run build
|
|
|
|
- name: Configure Gitea registry auth
|
|
run: |
|
|
echo "//git.blassanto.me/api/packages/blas/npm/:_authToken=${NODE_AUTH_TOKEN}" >> ~/.bunfig.toml
|
|
echo '[install.scopes]' >> ~/.bunfig.toml
|
|
echo '"@blas" = { registry = "https://git.blassanto.me/api/packages/blas/npm/", token = "${NODE_AUTH_TOKEN}" }' >> ~/.bunfig.toml
|
|
echo "//git.blassanto.me/api/packages/blas/npm/:_authToken=${NODE_AUTH_TOKEN}" >> ~/.npmrc
|
|
env:
|
|
NODE_AUTH_TOKEN: ${{ secrets.PUBLISH_TOKEN }}
|
|
|
|
- name: Publish to Gitea
|
|
run: bun publish --access public
|
|
env:
|
|
NODE_AUTH_TOKEN: ${{ secrets.PUBLISH_TOKEN }}
|