Run commitlint
on pull requests
#2389
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: meteor-actions/install@v3 | |
- 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@v3 | |
with: | |
key: build | |
- name: Build 🏗️ | |
run: | | |
meteor npm run build -- ./dist --directory --architecture ${{ matrix.architecture }} --server-only | |
- 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: | |
needs: | |
- build | |
strategy: | |
matrix: | |
platform: | |
- ubuntu-latest | |
architecture: | |
- linux-x64 | |
runs-on: ${{ matrix.platform }} | |
timeout-minutes: 2 | |
steps: | |
- 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: | | |
echo 'dbpath=/data/db' > "${GITHUB_WORKSPACE}/mongodb.conf" | |
echo 'replSet=meteor' >> "${GITHUB_WORKSPACE}/mongodb.conf" | |
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}/mongodb.conf":/mongodb.conf \ | |
--log-opt max-size=100m \ | |
--log-opt max-file=7 \ | |
--name mongodb \ | |
--hostname mongodb \ | |
"mongo:${MONGO_VERSION}" mongod -f /mongodb.conf | |
sleep 10 | |
docker exec mongodb mongo --eval \ | |
'try {var c = rs.config();} catch (e){} if (c && c.members[0].host === "127.0.0.1:27017") { c.members[0].host = "127.0.0.1:27017"; rs.reconfig(c); } else { rs.initiate({_id: "meteor", members: [{_id: 0, host: "127.0.0.1:27017"}]}) }' | |
- name: Run server | |
id: server | |
env: | |
ROOT_URL: http://localhost | |
MONGO_URL: mongodb://127.0.0.1:27017/meteor | |
PORT: 3000 | |
run: | | |
cd dist | |
node main.js & | |
echo "pid=$!" >> "$GITHUB_OUTPUT" | |
- name: Wait for server port to be available | |
run: | | |
timeout 60 bash -c \ | |
'until nc -z -v -w5 127.0.0.1 3000 ; do sleep 1; done' | |
- name: Run healthcheck | |
run: | | |
timeout 60 bash -c \ | |
'curl -f http://localhost:3000/api/healthcheck' | |
- name: Stop server | |
run: | | |
kill -SIGTERM ${{ steps.server.outputs.pid }} | |
- name: Stop MongoDB container | |
run: | | |
docker container stop mongodb |