manual-publish #365
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
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions | |
name: manual-publish | |
on: | |
workflow_dispatch: | |
inputs: | |
semver: | |
description: 'Leave empty or input major|minor|patch' | |
required: false | |
default: '' | |
jobs: | |
build: | |
runs-on: ${{ matrix.os }} | |
container: node:current | |
timeout-minutes: 60 | |
strategy: | |
matrix: | |
node: ['lts/*'] | |
os: [ubuntu-latest] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
# pulls all commits (needed for lerna / semantic release to correctly version) | |
fetch-depth: "0" | |
# Caution: disable fix below at FIRST publish, then enable | |
- name: Fix for semantic release | |
# pulls all tags (needed for lerna / semantic release to correctly version) | |
run: | | |
export cwd=`pwd` | |
git config --global --add safe.directory $cwd || true | |
git fetch --depth=1 origin +refs/tags/*:refs/tags/* || true | |
- name: Use Node.js ${{ matrix.node }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
registry-url: 'https://registry.npmjs.org' | |
- name: Cache | |
uses: actions/cache@v4 | |
id: cache-lerna | |
env: | |
cache-name: cache-lerna | |
with: | |
path: | | |
node_modules | |
package-lock.json | |
key: ${{ runner.OS }}-build-${{ env.cache-name }}-${{ github.ref }}-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.OS }}-build-${{ env.cache-name }}-${{ github.ref }}- | |
- name: Prepare | |
run: | | |
uname -a | |
export DEBIAN_FRONTEND=noninteractive | |
apt-get update -qq --yes > /dev/null | |
# apt-get upgrade -qq --yes > /dev/null | |
apt-get install -qq --yes --no-install-recommends bash dnsutils git jq locales net-tools wget > /dev/null | |
apt-get install -qq --yes postgresql-client libpq-dev > /dev/null | |
uname -a | |
npm -v && node -v | |
git --version | |
openssl version | |
cat /etc/*release | |
sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen | |
locale-gen | |
locale -a | |
netstat -tunpl | |
dig jaeger | |
- name: Verify | |
run: | | |
echo $GITHUB_REF | |
# github project/settings/Secrets/New repository secret: NPM_TOKEN | |
npm ping | |
npm whoami | |
psql -V | |
dig postgres | |
echo "\l" | psql -h $POSTGRES_HOST -p $POSTGRES_PORT -U$POSTGRES_USER -d postgres | |
psql -h $POSTGRES_HOST -p $POSTGRES_PORT -U$POSTGRES_USER -d $POSTGRES_DB -c "\d+" | |
psql -h $POSTGRES_HOST -p $POSTGRES_PORT -U$POSTGRES_USER -d $POSTGRES_DB -c "SHOW TIMEZONE;" | |
env: | |
CI: true | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
POSTGRES_HOST: postgres | |
POSTGRES_PORT: ${{ job.services.postgres.ports[5432] }} | |
POSTGRES_DB: db_ci_test | |
POSTGRES_USER: postgres | |
POSTGRES_PASSWORD: postgres | |
PGPASSWORD: postgres | |
- name: Install Dependencies | |
timeout-minutes: 15 | |
run: | | |
export cwd=`pwd` | |
npm i --no-audit -g autocannon c8 lerna rollup tsx zx | |
npm i --no-audit | |
env: | |
CI: true | |
- name: Build | |
run: | | |
whoami | |
export cwd=`pwd` | |
. .scripts/ci/ci-env.sh | |
.scripts/ci/ci-prepare.sh | |
npm run build --if-present | |
env: | |
CI: true | |
- name: Lint | |
run: | | |
export cwd=`pwd` | |
. .scripts/ci/ci-env.sh | |
.scripts/ci/ci-prepare.sh | |
npm run lint:nofix | |
npm run lint:cycle | |
env: | |
CI: true | |
# - name: Init Database | |
# run: | | |
# export cwd=`pwd` | |
# . .scripts/ci/ci-env.sh | |
# .scripts/ci/ci-prepare.sh | |
# .scripts/ci/ci-init-db.sh | |
# env: | |
# CI: true | |
# POSTGRES_HOST: postgres | |
# POSTGRES_PORT: ${{ job.services.postgres.ports[5432] }} | |
# POSTGRES_DB: db_ci_test | |
# POSTGRES_USER: postgres | |
# POSTGRES_PASSWORD: postgres | |
# PGPASSWORD: postgres | |
- name: Testing | |
run: | | |
export cwd=`pwd` | |
. .scripts/ci/ci-env.sh | |
.scripts/ci/ci-prepare.sh | |
# npm run ci | |
npm run test | |
env: | |
CI: true | |
# use `localhost` if running the job on the VM | |
# use `postgres` if running the job on a container | |
POSTGRES_HOST: postgres | |
POSTGRES_PORT: ${{ job.services.postgres.ports[5432] }} | |
POSTGRES_DB: db_ci_test | |
POSTGRES_USER: postgres | |
POSTGRES_PASSWORD: postgres | |
PGPASSWORD: postgres | |
# redis | |
REDIS_HOST: redis | |
REDIS_PORT: 6379 | |
# otel | |
OTEL_EXPORTER_OTLP_ENDPOINT: http://jaeger:4317 | |
# aliyun | |
ALI_ALB_IPS: ${{ secrets.ALI_ALB_IPS }} | |
ALI_ALB_GROUPID: ${{ secrets.ALI_ALB_GROUPID }} | |
ALI_ECS_AID: ${{ secrets.ALI_ECS_AID }} | |
ALI_ECS_ASECRET: ${{ secrets.ALI_ECS_ASECRET }} | |
ALI_ECS_IDS: ${{ secrets.ALI_ECS_IDS }} | |
ALI_ECS_IPS: ${{ secrets.ALI_ECS_IPS }} | |
ALI_OSS_AID: ${{ secrets.ALI_OSS_AID }} | |
ALI_OSS_ASECRET: ${{ secrets.ALI_OSS_ASECRET }} | |
ALI_OSS_ENDPOINT: ${{ secrets.ALI_OSS_ENDPOINT }} | |
ALI_OSS_BUCKET: ${{ secrets.ALI_OSS_BUCKET }} | |
- name: NPM Publish | |
run: | | |
npm ping | |
npm whoami | |
export cwd=`pwd` | |
. .scripts/ci/ci-env.sh | |
# fix: fatal: detected dubious ownership in repository | |
git config --global --add safe.directory $cwd | |
git reset --hard | |
git config user.name $GITHUB_ACTOR | |
git config user.email gh-actions-${GITHUB_ACTOR}@github.com | |
# npm run pub major | |
rm -rf package-lock.json | |
rm -rf packages/*/package-lock.json | |
.scripts/publish.sh --yes --no-private --conventional-commits --create-release github ${{ github.event.inputs.semver }} | |
git push -v origin --follow-tags | |
env: | |
CI: true | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
services: | |
postgres: | |
image: postgres:alpine | |
ports: | |
- 5432:5432 | |
env: | |
POSTGRES_DB: db_ci_test | |
POSTGRES_USER: postgres | |
POSTGRES_PASSWORD: postgres | |
# needed because the postgres container does not provide a healthcheck | |
options: >- | |
--health-cmd pg_isready | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
jaeger: | |
image: jaegertracing/all-in-one | |
env: | |
TZ: 'Asia/Chongqing' | |
COLLECTOR_OTLP_ENABLED: 'true' | |
ports: | |
- 4317:4317 | |
- 4318:4318 | |
- 5778:5778 | |
- 6831:6831/udp | |
- 6832:6832/udp | |
- 14250:14250 | |
- 16686:16686 | |