diff --git a/.github/workflows/docker-hub-latest.yml b/.github/workflows/docker-hub-latest.yml new file mode 100644 index 0000000..6a8845b --- /dev/null +++ b/.github/workflows/docker-hub-latest.yml @@ -0,0 +1,34 @@ +# Copied from https://github.com/matrix-org/matrix-bifrost/blob/develop/.github/workflows/docker-hub-latest.yml + +name: "Docker Hub - Latest" + +on: + push: + +env: + DOCKER_NAMESPACE: matrixdotorg + PLATFORMS: linux/amd64 + # Only push if this is main, otherwise we just want to build + PUSH: ${{ github.ref == 'refs/heads/main' }} + +jobs: + docker-latest: + runs-on: ubuntu-latest + steps: + - name: Check out + uses: actions/checkout@v2 + - name: Log in to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_TOKEN }} + + - name: Build image + uses: docker/build-push-action@v2 + with: + context: . + file: ./Dockerfile + platforms: ${{ env.PLATFORMS }} + push: ${{ env.PUSH }} + tags: | + ${{ env.DOCKER_NAMESPACE }}/mjolnir:latest diff --git a/.github/workflows/docker-hub-release.yml b/.github/workflows/docker-hub-release.yml new file mode 100644 index 0000000..7df6017 --- /dev/null +++ b/.github/workflows/docker-hub-release.yml @@ -0,0 +1,35 @@ +# Copied from https://github.com/matrix-org/matrix-bifrost/blob/develop/.github/workflows/docker-hub-release.yml + +name: "Docker Hub - Release" + +on: + release: + types: [published] + +env: + DOCKER_NAMESPACE: matrixdotorg + PLATFORMS: linux/amd64 + +jobs: + docker-release: + runs-on: ubuntu-latest + steps: + - name: Check out + uses: actions/checkout@v2 + - name: Get release tag + run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV + - name: Log in to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_TOKEN }} + + - name: Build image + uses: docker/build-push-action@v2 + with: + context: . + file: ./Dockerfile + platforms: ${{ env.PLATFORMS }} + push: true + tags: | + ${{ env.DOCKER_NAMESPACE }}/mjolnir:${{ env.RELEASE_VERSION }} diff --git a/README.md b/README.md index 3c3977a..1c6280a 100644 --- a/README.md +++ b/README.md @@ -120,7 +120,7 @@ modules: # these rooms. ban_lists: - "!roomid:example.org" - message_max_length: + #message_max_length: # Limit the characters in a message (event body) that a client can send in an event on this server. # By default there is no limit (beyond the the limit the spec enforces on event size). # Uncomment if you want messages to be limited to 510 characters. diff --git a/mx-tester.yml b/mx-tester.yml index 26ae0eb..d356f69 100644 --- a/mx-tester.yml +++ b/mx-tester.yml @@ -32,6 +32,7 @@ homeserver: registration_shared_secret: REGISTRATION_SHARED_SECRET # Make manual testing easier enable_registration: true + enable_registration_without_verification: true # We remove rc_message so we can test rate limiting, # but we keep the others because of https://github.com/matrix-org/synapse/issues/11785 diff --git a/src/Mjolnir.ts b/src/Mjolnir.ts index d27292c..3c1c098 100644 --- a/src/Mjolnir.ts +++ b/src/Mjolnir.ts @@ -320,11 +320,12 @@ export class Mjolnir { try { LogService.error("Mjolnir", "Error during startup:"); LogService.error("Mjolnir", extractRequestError(err)); + this.stop(); await this.logMessage(LogLevel.ERROR, "Mjolnir@startup", "Startup failed due to error - see console"); + throw err; } catch (e) { - // If we failed to handle the error, just crash - console.error(e); - process.exit(1); + LogService.error("Mjolnir", `Failed to report startup error to the management room: ${e}`); + throw err; } } } diff --git a/src/index.ts b/src/index.ts index e6896a0..0ed071f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -57,9 +57,14 @@ if (config.health.healthz.enabled) { config.RUNTIME.client = client; bot = await Mjolnir.setupMjolnirFromConfig(client); + } catch (err) { + console.error(`Failed to setup mjolnir from the config ${config.dataPath}: ${err}`); + throw err; + } + try { await bot.start(); } catch (err) { - bot?.logMessage(LogLevel.ERROR, "index", err); - process.exit(1); + console.error(`Mjolnir failed to start: ${err}`); + throw err; } })();