build(deps): Bump ws and puppeteer #3254
Workflow file for this run
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
name: ci:build | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
merge_group: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
build: | |
name: Continuous integration (build) | |
strategy: | |
matrix: | |
platform: | |
- ubuntu-latest | |
architecture: | |
- os.linux.x86_64 | |
runs-on: ${{ matrix.platform }} | |
timeout-minutes: 15 | |
outputs: | |
node-version: ${{ steps.meteor-node.outputs.version }} | |
steps: | |
- name: Checkout 🛎️ | |
uses: actions/checkout@v4 | |
- name: Install 💾 | |
uses: ./.github/actions/install | |
- name: Get Meteor's Node version | |
id: meteor-node | |
run: | | |
echo \ | |
"version=$(meteor node --version | tail -c +2)" \ | |
>> "$GITHUB_OUTPUT" | |
- name: Cache build 💽 | |
uses: meteor-actions/cache-build@v4 | |
with: | |
key: build | |
- name: Build 🏗️ | |
run: | | |
meteor npm run build -- ../dist \ | |
--directory \ | |
--server-only \ | |
--architecture ${{ matrix.architecture }} | |
- name: Compress build 🧶 | |
run: | | |
tar czf dist.tar.gz --directory ../dist/bundle . | |
- name: Archive build 💽 | |
uses: actions/upload-artifact@v4 | |
with: | |
name: artifacts | |
path: dist.tar.gz | |
retention-days: 1 | |
test: | |
name: Continuous integration (build test) | |
needs: | |
- build | |
strategy: | |
matrix: | |
platform: | |
- ubuntu-latest | |
architecture: | |
- linux-x64 | |
runs-on: ${{ matrix.platform }} | |
timeout-minutes: 3 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
sparse-checkout: | | |
scripts/healthcheck.cjs | |
scripts/assert-replica-set.js | |
.github/actions/docker/container/is-healthy/action.yml | |
.github/actions/network/is-reachable/action.yml | |
sparse-checkout-cone-mode: false | |
- name: Load build 💽 | |
uses: actions/download-artifact@v4 | |
with: | |
name: artifacts | |
path: artifacts | |
- name: Set up Node.js 💾 | |
uses: meteor-actions/setup-node@v1 | |
with: | |
node-version: ${{ needs.build.outputs.node-version }} | |
architecture: ${{ matrix.architecture }} | |
- name: Inflate build 🧥 | |
run: | | |
mkdir -p dist | |
tar xzf artifacts/dist.tar.gz --directory dist | |
- name: Inspect build | |
run: | | |
ls -la dist | |
- name: Inspect build | |
run: | | |
cat dist/README | |
- name: Inspect build | |
run: | | |
ls -la dist/server | |
- name: Inspect build | |
run: | | |
cat dist/star.json | |
- name: Inspect build | |
run: | | |
ls -la dist/programs | |
- name: Inspect build | |
run: | | |
ls -la dist/programs/server | |
- name: Check node version | |
run: | | |
diff dist/.node_version.txt <(node --version) | |
diff <(jq -r .nodeVersion dist/star.json) <(node --version | tail -c +2) | |
- name: Check npm version | |
run: | # Patch sometimes does not match | |
diff <(npm --version | cut -d. -f-2) <(jq -r .npmVersion dist/star.json | cut -d. -f-2) | |
- name: Install dependencies | |
run: | | |
cd dist/programs/server | |
npm install | |
- name: Start MongoDB container | |
env: | |
MONGO_VERSION: '5.0' | |
run: | | |
mkdir -p "${GITHUB_WORKSPACE}/data/db" | |
docker container run \ | |
--detach \ | |
--restart unless-stopped \ | |
--publish 27017:27017 \ | |
--volume "${GITHUB_WORKSPACE}/data/db":/data/db \ | |
--volume "${GITHUB_WORKSPACE}/scripts/assert-replica-set.js":/scripts/assert-replica-set.js \ | |
--log-opt max-size=100m \ | |
--log-opt max-file=7 \ | |
--health-cmd 'mongosh --eval "replSet = \"meteor\"; hostname = \"localhost\"" /scripts/assert-replica-set.js' \ | |
--health-interval 5s \ | |
--health-retries 3 \ | |
--health-timeout 10s \ | |
--health-start-period 40s \ | |
--name mongodb \ | |
"mongo:${MONGO_VERSION}" mongod --dbpath /data/db --replSet meteor | |
- name: Wait for MongoDB container to be healthy | |
uses: ./.github/actions/docker/container/is-healthy | |
with: | |
container: mongodb | |
timeout: 60 | |
- name: Run server | |
id: server | |
env: | |
ROOT_URL: http://localhost | |
MONGO_URL: mongodb://localhost:27017/meteor | |
PORT: 3000 | |
run: | | |
cd dist | |
node main.js & | |
echo "pid=$!" >> "$GITHUB_OUTPUT" | |
- name: Wait for server port to be available | |
uses: ./.github/actions/network/is-reachable | |
with: | |
timeout: 60 | |
port: 3000 | |
- name: Call healthcheck endpoint | |
run: | | |
timeout 60 bash -c \ | |
'curl -f http://localhost:3000/api/healthcheck' | |
- name: Run healthcheck script | |
run: | | |
timeout 60 bash -c \ | |
'node scripts/healthcheck.cjs http://localhost:3000/api/healthcheck' | |
- name: Stop server | |
run: | | |
kill -SIGTERM ${{ steps.server.outputs.pid }} | |
- name: Stop MongoDB container | |
run: | | |
docker container stop mongodb |