Files
openrusrouter-mcp/.gitea/workflows/ci.yaml
T

76 lines
2.3 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: CI
on: [push, pull_request]
permissions:
contents: read
jobs:
test:
name: Test
runs-on: ubuntu-22.04
container: catthehacker/ubuntu:act-latest
steps:
- uses: actions/checkout@v3
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: "20"
- run: npm ci
- run: npm run typecheck
- run: npm run lint
- run: npm test
- run: npm run build
- run: npm pack --dry-run
# Публикация только по тегу v*. Тег обязан совпадать с версией в
# package.json: иначе в npm уехала бы версия, которой нет в истории тегов.
publish:
name: Publish to npm
needs: test
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-22.04
container: catthehacker/ubuntu:act-latest
steps:
- uses: actions/checkout@v3
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: "20"
- run: npm ci
- name: Check tag matches package.json version
env:
REF_NAME: ${{ github.ref_name }}
run: |
set -eu
pkg_version="$(node -p 'require("./package.json").version')"
tag_version="${REF_NAME#v}"
if [ "$pkg_version" != "$tag_version" ]; then
echo "версия package.json ($pkg_version) не совпадает с тегом ($REF_NAME)" >&2
exit 1
fi
- run: npm run build
# Токен подставляется через env шага, а не в текст команды: подстановка
# в run попадает в командную строку процесса и разбирается shell.
# Одинарные кавычки — в ~/.npmrc пишется литерал ${NPM_TOKEN}, npm
# раскрывает его из окружения сам, и значение не попадает на диск.
- name: Publish
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
run: |
set -eu
trap 'rm -f ~/.npmrc' EXIT
printf '%s\n' '//registry.npmjs.org/:_authToken=${NPM_TOKEN}' > ~/.npmrc
npm publish --access public
- name: Cleanup
if: always()
run: rm -f ~/.npmrc