Run commitlint
on pull requests
#26
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:image | |
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 image) | |
strategy: | |
matrix: | |
platform: | |
- ubuntu-latest | |
runs-on: ${{ matrix.platform }} | |
timeout-minutes: 15 | |
outputs: | |
server-tags: ${{ steps.meta-server.outputs.tags }} | |
steps: | |
- name: Checkout 🛎️ | |
uses: actions/checkout@v4 | |
- name: Docker meta | |
id: meta-server | |
uses: docker/metadata-action@v5 | |
with: | |
images: ghcr.io/${{ github.repository }} | |
tags: | | |
type=raw,value=latest,enable={{is_default_branch}} | |
- name: Log in to GitHub Packages registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.repository_owner }} | |
password: ${{ github.token }} | |
- name: Build and push | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
tags: ${{ steps.meta-server.outputs.tags }} | |
labels: ${{ steps.meta-server.outputs.labels }} | |
test: | |
needs: | |
- build | |
strategy: | |
matrix: | |
platform: | |
- ubuntu-latest | |
runs-on: ${{ matrix.platform }} | |
timeout-minutes: 1 | |
steps: | |
- 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 5 | |
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 | |
env: | |
ROOT_URL: http://localhost | |
MONGO_URL: mongodb://127.0.0.1:27017/meteor | |
PORT: 3000 | |
run: | | |
docker container run \ | |
--detach \ | |
--publish "${PORT}:${PORT}" \ | |
--env "ROOT_URL=${ROOT_URL}" \ | |
--env "MONGO_URL=${MONGO_URL}" \ | |
--env "PORT=${PORT}" \ | |
--name server \ | |
--hostname server \ | |
${{ needs.build.outputs.server-tags }} | |
- name: Retrieve server container IP address | |
id: server-container-ip-address | |
run: | | |
echo \ | |
"address=$(docker inspect --format '{{ .NetworkSettings.IPAddress }}' server)" \ | |
>> "$GITHUB_OUTPUT" | |
- name: Wait for server container 3000 port to be available | |
run: | | |
timeout 60 bash -c \ | |
'until nc -z -v -w5 ${{ steps.server-container-ip-address.outputs.address }} 3000 ; do sleep 1; done' | |
- name: Stop Server container | |
run: | | |
docker container stop server | |
- name: Remove Server container | |
run: | | |
docker container rm server | |
- name: Stop MongoDB container | |
run: | | |
docker container stop mongodb | |
- name: Remove MongoDB container | |
run: | | |
docker container rm mongodb |