So, a while back Circle CI builds and Heroku builds started to fail. From all the threads I read, it seems like the [npm registry rotated it's signing keys](https://github.com/pnpm/pnpm/issues/9014#issuecomment-2616589753) New pnpm versions were signed with the new key. Corepack, however, bundles a static set of trusted keys (from Node’s release), so it continued verifying signatures only against the old key. When it encountered packages signed with the new key, Corepack’s integrity check failed with “Cannot find matching keyid” errors.This mismatch caused Corepack’s integrity check to fail with “Cannot find matching keyid” errors. Workarounds include the following 1. Updating Corepack (to 0.31.0), they [upgraded their package](https://github.com/nodejs/corepack/releases/tag/v0.31.0) to include the new integrity check keys. But we seldom control what's going on with the CI, also, updating this across our scripts is going to be a painful task. Besides Heroku has [made some fixes](https://github.com/heroku/buildpacks-nodejs/pull/1010) around this 2. Disabling integrity checks 🔥 #YOLO 3. Pinning `pnpm` to older versions, or pinning it to a newer version with the checksum in place. Doing the third one here, running `corepack use pnpm@9.15.5` fixes this, [ref](https://github.com/pnpm/pnpm/issues/9014#issuecomment-2623761494) We can get rid of this over time as CDN caches used by build systems are refreshed. But the change in this PR is not disruptive in anyway, only rigidly secure. Fixes: https://github.com/chatwoot/chatwoot/issues/10832 --- Here are the threads to follow - https://github.com/pnpm/pnpm/issues/9014 - https://github.com/pnpm/pnpm/issues/9029 - https://github.com/nodejs/corepack/issues/612 - https://github.com/nodejs/corepack/issues/616 - https://github.com/heroku/buildpacks-nodejs/pull/1010 --------- Co-authored-by: Vishnu Narayanan <vishnu@chatwoot.com>
83 lines
2.0 KiB
YAML
83 lines
2.0 KiB
YAML
name: Run Chatwoot CE spec
|
|
on:
|
|
push:
|
|
branches:
|
|
- develop
|
|
- master
|
|
pull_request:
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
test:
|
|
runs-on: ubuntu-20.04
|
|
services:
|
|
postgres:
|
|
image: pgvector/pgvector:pg15
|
|
env:
|
|
POSTGRES_USER: postgres
|
|
POSTGRES_PASSWORD: ''
|
|
POSTGRES_DB: postgres
|
|
POSTGRES_HOST_AUTH_METHOD: trust
|
|
ports:
|
|
- 5432:5432
|
|
# needed because the postgres container does not provide a healthcheck
|
|
# tmpfs makes DB faster by using RAM
|
|
options: >-
|
|
--mount type=tmpfs,destination=/var/lib/postgresql/data
|
|
--health-cmd pg_isready
|
|
--health-interval 10s
|
|
--health-timeout 5s
|
|
--health-retries 5
|
|
redis:
|
|
image: redis
|
|
ports:
|
|
- 6379:6379
|
|
options: --entrypoint redis-server
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: pnpm/action-setup@v4
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.ref }}
|
|
repository: ${{ github.event.pull_request.head.repo.full_name }}
|
|
|
|
- uses: ruby/setup-ruby@v1
|
|
with:
|
|
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
|
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 23
|
|
cache: 'pnpm'
|
|
|
|
- name: Install pnpm dependencies
|
|
run: pnpm i
|
|
|
|
- name: Strip enterprise code
|
|
run: |
|
|
rm -rf enterprise
|
|
rm -rf spec/enterprise
|
|
|
|
- name: Create database
|
|
run: bundle exec rake db:create
|
|
|
|
- name: Seed database
|
|
run: bundle exec rake db:schema:load
|
|
|
|
- name: Run frontend tests
|
|
run: pnpm run test:coverage
|
|
|
|
# Run rails tests
|
|
- name: Run backend tests
|
|
run: |
|
|
bundle exec rspec --profile=10 --format documentation
|
|
env:
|
|
NODE_OPTIONS: --openssl-legacy-provider
|
|
|
|
- name: Upload rails log folder
|
|
uses: actions/upload-artifact@v4
|
|
if: always()
|
|
with:
|
|
name: rails-log-folder
|
|
path: log
|