feat(cli): use tsx instead of ts-node-esm as cli Hashbang #131
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: ci | |
on: [push] | |
jobs: | |
build: | |
runs-on: ${{ matrix.os }} | |
container: node:current | |
timeout-minutes: 60 | |
if: "!contains(github.event.head_commit.message, '[skip ci]')" | |
strategy: | |
matrix: | |
node: ['lts/*', 'current'] | |
os: [ubuntu-latest] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Use Node.js ${{ matrix.node }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
- name: Cache | |
uses: actions/cache@v3 | |
id: cache-lerna | |
env: | |
cache-name: cache-lerna | |
with: | |
path: | | |
node_modules | |
# node_modules/.cache/nx | |
package-lock.json | |
# packages/*/.eslintcache | |
packages/*/.tsbuildinfo | |
packages/*/.vscode | |
packages/*/dist | |
packages/*/node_modules | |
packages/*/package-lock.json | |
key: ${{ runner.OS }}-build-${{ env.cache-name }}-${{ github.ref }}-${{ matrix.node }}-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.OS }}-build-${{ env.cache-name }}-${{ github.ref }}-${{ matrix.node }}- | |
- name: Prepare | |
run: | | |
pwd | |
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 | |
chmod a+w -R . | |
dig jaeger | |
export cwd=`pwd` | |
git config --global --add safe.directory $cwd | |
- name: Verify | |
run: | | |
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 | |
POSTGRES_HOST: postgres | |
POSTGRES_PORT: ${{ job.services.postgres.ports[5432] }} | |
POSTGRES_DB: db_ci_test | |
POSTGRES_USER: postgres | |
POSTGRES_PASSWORD: postgres | |
PGPASSWORD: postgres | |
- name: Inatall Dependencies | |
timeout-minutes: 15 | |
run: | | |
chown -R 1001:121 "/github/home/.npm" | |
# chmod a+w -R . | |
# DO NOT execute: npm config set unsafe-perm=true | |
export cwd=`pwd` | |
# .github/workflows/fix.sh | |
npm i --no-audit -g autocannon c8 lerna rollup tsx zx | |
# npm run purge | |
npm i | |
env: | |
CI: true | |
- name: Build | |
run: | | |
pwd | |
# chmod a+w -R . | |
whoami | |
export cwd=`pwd` | |
. .scripts/ci/ci-env.sh | |
.scripts/ci/ci-prepare.sh | |
# .github/workflows/fix.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:s | |
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 | |
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 | |
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 }} | |
OTEL_EXPORTER_OTLP_ENDPOINT: http://jaeger:4317 | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v3 | |
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 | |