From fe24bc79ceab3d89e06fa28ba96f91bf213f9b1c Mon Sep 17 00:00:00 2001 From: Matt Bishop Date: Sat, 7 Jun 2025 10:33:24 -0400 Subject: [PATCH 01/11] Holistic local linting with Mega-Linter --- .git-hooks/pre-commit | 18 ++++++++++++------ .gitignore | 3 +++ README.md | 32 ++++++++++++++------------------ 3 files changed, 29 insertions(+), 24 deletions(-) diff --git a/.git-hooks/pre-commit b/.git-hooks/pre-commit index bc661efaee0b..6a9dbc3714f9 100755 --- a/.git-hooks/pre-commit +++ b/.git-hooks/pre-commit @@ -1,8 +1,14 @@ -#!/bin/bash +#!/bin/sh -FILES=$(git diff --cached --name-only --diff-filter=ACM "*.cs") -if [ -n "$FILES" ] -then - dotnet format ./bitwarden-server.sln --no-restore --include $FILES - echo "$FILES" | xargs git add +FILES=$(git diff --cached --name-only --diff-filter=ACMR | sed 's| |\\ |g') +[ -z "$FILES" ] && exit 0 + +if npx mega-linter-runner --containername "megalinter-incremental" \ + --flavor formatters --remove-container --fix --env "'APPLY_FIXES=all'" \ + --env "'CLEAR_REPORT_FOLDER=true'" --env "'LOG_LEVEL=warning'" \ + --filesonly $FILES; then + echo "$FILES" | xargs git add + exit 0 fi + +exit 1 diff --git a/.gitignore b/.gitignore index 65157bf4aa6a..ae49506f3574 100644 --- a/.gitignore +++ b/.gitignore @@ -196,6 +196,9 @@ FakesAssemblies/ # Visual Studio 6 workspace options file *.opt +# Lint +megalinter-reports/ + # Other project.lock.json *.jfm diff --git a/README.md b/README.md index c817931c6717..9a0f4bfb2aff 100644 --- a/README.md +++ b/README.md @@ -16,11 +16,15 @@ The Bitwarden Server project contains the APIs, database, and other core infrast The server project is written in C# using .NET Core with ASP.NET Core. The database is written in T-SQL/SQL Server. The codebase can be developed, built, run, and deployed cross-platform on Windows, macOS, and Linux distributions. -## Developer Documentation +# Contributing -Please refer to the [Server Setup Guide](https://contributing.bitwarden.com/getting-started/server/guide) in the [Contributing Documentation](https://contributing.bitwarden.com/) for build instructions, recommended tooling, code style tips, and lots of other great information to get you started. +Code contributions are welcome! Please commit any pull requests against the `main` branch. Learn more about how to contribute by reading the [Contributing Guidelines](https://contributing.bitwarden.com/contributing/). Check out the [Contributing Documentation](https://contributing.bitwarden.com/) for how to get started with your first contribution. -## Deploy +Security audits and feedback are welcome. Please open an issue or email us privately if the report is sensitive in nature. You can read our security policy in the [`SECURITY.md`](SECURITY.md) file. We also run a program on [HackerOne](https://hackerone.com/bitwarden). + +No grant of any rights in the trademarks, service marks, or logos of Bitwarden is made (except as may be necessary to comply with the notice requirements as applicable), and use of any Bitwarden trademarks must comply with [Bitwarden Trademark Guidelines](https://github.com/bitwarden/server/blob/main/TRADEMARK_GUIDELINES.md). + +# Deploying

@@ -30,9 +34,9 @@ Please refer to the [Server Setup Guide](https://contributing.bitwarden.com/gett You can deploy Bitwarden using Docker containers on Windows, macOS, and Linux distributions. Use the provided PowerShell and Bash scripts to get started quickly. Find all of the Bitwarden images on [GitHub Container Registry](https://github.com/orgs/bitwarden/packages). -Full documentation for deploying Bitwarden with Docker can be found in our help center at: https://help.bitwarden.com/article/install-on-premise/ +Full documentation for deploying Bitwarden with Docker can be found in our help center at: -### Requirements +## Requirements - [Docker](https://www.docker.com/community-edition#/download) - [Docker Compose](https://docs.docker.com/compose/install/) (already included with some Docker installations) @@ -58,22 +62,14 @@ Invoke-RestMethod -OutFile bitwarden.ps1 ` .\bitwarden.ps1 -start ``` -## We're Hiring! - -Interested in contributing in a big way? Consider joining our team! We're hiring for many positions. Please take a look at our [Careers page](https://bitwarden.com/careers/) to see what opportunities are currently open as well as what it's like to work at Bitwarden. +# Developers -## Contribute - -Code contributions are welcome! Please commit any pull requests against the `main` branch. Learn more about how to contribute by reading the [Contributing Guidelines](https://contributing.bitwarden.com/contributing/). Check out the [Contributing Documentation](https://contributing.bitwarden.com/) for how to get started with your first contribution. - -Security audits and feedback are welcome. Please open an issue or email us privately if the report is sensitive in nature. You can read our security policy in the [`SECURITY.md`](SECURITY.md) file. We also run a program on [HackerOne](https://hackerone.com/bitwarden). - -No grant of any rights in the trademarks, service marks, or logos of Bitwarden is made (except as may be necessary to comply with the notice requirements as applicable), and use of any Bitwarden trademarks must comply with [Bitwarden Trademark Guidelines](https://github.com/bitwarden/server/blob/main/TRADEMARK_GUIDELINES.md). +Please refer to the [Server Setup Guide](https://contributing.bitwarden.com/getting-started/server/guide) in the [Contributing Documentation](https://contributing.bitwarden.com/) for build instructions, recommended tooling, code style tips, and lots of other great information to get you started. -### Dotnet-format +## Hooks -Consider installing our git pre-commit hook for automatic formatting. +To gain enhanced functionality such as local linting, install the hooks for this repository: ```bash -git config --local core.hooksPath .git-hooks +git config core.hooksPath .git-hooks ``` From f993a15591a30bc94a0935bc61d0e524eb3540e3 Mon Sep 17 00:00:00 2001 From: Matt Bishop Date: Sat, 7 Jun 2025 10:35:22 -0400 Subject: [PATCH 02/11] Fix Markdown lint issue --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 9a0f4bfb2aff..eae13b61efaf 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +# Bitwarden Server +

Bitwarden

From 938c3eaf2562c3a08131eebcc2e5751212d73468 Mon Sep 17 00:00:00 2001 From: Matt Bishop Date: Sat, 7 Jun 2025 10:38:51 -0400 Subject: [PATCH 03/11] Fix another linting issue --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index eae13b61efaf..c530333d2eff 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ The Bitwarden Server project contains the APIs, database, and other core infrast The server project is written in C# using .NET Core with ASP.NET Core. The database is written in T-SQL/SQL Server. The codebase can be developed, built, run, and deployed cross-platform on Windows, macOS, and Linux distributions. -# Contributing +## Contributing Code contributions are welcome! Please commit any pull requests against the `main` branch. Learn more about how to contribute by reading the [Contributing Guidelines](https://contributing.bitwarden.com/contributing/). Check out the [Contributing Documentation](https://contributing.bitwarden.com/) for how to get started with your first contribution. @@ -26,7 +26,7 @@ Security audits and feedback are welcome. Please open an issue or email us priva No grant of any rights in the trademarks, service marks, or logos of Bitwarden is made (except as may be necessary to comply with the notice requirements as applicable), and use of any Bitwarden trademarks must comply with [Bitwarden Trademark Guidelines](https://github.com/bitwarden/server/blob/main/TRADEMARK_GUIDELINES.md). -# Deploying +## Deploying

@@ -38,14 +38,14 @@ You can deploy Bitwarden using Docker containers on Windows, macOS, and Linux di Full documentation for deploying Bitwarden with Docker can be found in our help center at: -## Requirements +### Requirements - [Docker](https://www.docker.com/community-edition#/download) - [Docker Compose](https://docs.docker.com/compose/install/) (already included with some Docker installations) _These dependencies are free to use._ -### Linux & macOS +#### Linux & macOS ```sh curl -s -L -o bitwarden.sh \ @@ -55,7 +55,7 @@ curl -s -L -o bitwarden.sh \ ./bitwarden.sh start ``` -### Windows +#### Windows ```cmd Invoke-RestMethod -OutFile bitwarden.ps1 ` @@ -64,11 +64,11 @@ Invoke-RestMethod -OutFile bitwarden.ps1 ` .\bitwarden.ps1 -start ``` -# Developers +## Developers Please refer to the [Server Setup Guide](https://contributing.bitwarden.com/getting-started/server/guide) in the [Contributing Documentation](https://contributing.bitwarden.com/) for build instructions, recommended tooling, code style tips, and lots of other great information to get you started. -## Hooks +### Hooks To gain enhanced functionality such as local linting, install the hooks for this repository: From af69591b58dcc6ad0fae8c3c568b6eb0bb59b218 Mon Sep 17 00:00:00 2001 From: Matt Bishop Date: Sat, 7 Jun 2025 10:50:49 -0400 Subject: [PATCH 04/11] Move linting to dedicated workflow --- .github/workflows/build.yml | 22 +--------------------- .github/workflows/lint.yml | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 21 deletions(-) create mode 100644 .github/workflows/lint.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e5c5d0e7a8f1..0a718fb142f4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,7 +11,7 @@ on: types: [opened, synchronize] workflow_call: inputs: {} - + permissions: contents: read @@ -20,26 +20,9 @@ env: _GITHUB_PR_REPO_NAME: ${{ github.event.pull_request.head.repo.full_name }} jobs: - lint: - name: Lint - runs-on: ubuntu-24.04 - steps: - - name: Check out repo - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - with: - ref: ${{ github.event.pull_request.head.sha }} - - - name: Set up .NET - uses: actions/setup-dotnet@87b7050bc53ea08284295505d98d2aa94301e852 # v4.2.0 - - - name: Verify format - run: dotnet format --verify-no-changes - build-artifacts: name: Build Docker images runs-on: ubuntu-24.04 - needs: - - lint outputs: has_secrets: ${{ steps.check-secrets.outputs.has_secrets }} permissions: @@ -466,8 +449,6 @@ jobs: build-mssqlmigratorutility: name: Build MSSQL migrator utility runs-on: ubuntu-24.04 - needs: - - lint defaults: run: shell: bash @@ -607,7 +588,6 @@ jobs: if: always() runs-on: ubuntu-22.04 needs: - - lint - build-artifacts - upload - build-mssqlmigratorutility diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 000000000000..2d76c35e5e50 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,28 @@ +name: Lint + +on: + pull_request: + types: [opened, synchronize] + +permissions: + contents: read + +concurrency: + group: ${{ github.ref }}-${{ github.workflow }} + cancel-in-progress: true + +jobs: + lint: + name: Lint + runs-on: ubuntu-24.04 + permissions: + pull-requests: write + + steps: + - name: Check out repo + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Lint with MegaLinter + uses: oxsecurity/megalinter/flavors/formatters@5a91fb06c83d0e69fbd23756d47438aa723b4a5a # v8.7.0 + env: + VALIDATE_ALL_CODEBASE: false From 392d3bfd834c674a6df500f411cad64fbd1c80f0 Mon Sep 17 00:00:00 2001 From: Matt Bishop Date: Sat, 7 Jun 2025 10:52:24 -0400 Subject: [PATCH 05/11] Ignore flavor suggestions too --- .git-hooks/pre-commit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.git-hooks/pre-commit b/.git-hooks/pre-commit index 6a9dbc3714f9..51a0cb41b15d 100755 --- a/.git-hooks/pre-commit +++ b/.git-hooks/pre-commit @@ -6,7 +6,7 @@ FILES=$(git diff --cached --name-only --diff-filter=ACMR | sed 's| |\\ |g') if npx mega-linter-runner --containername "megalinter-incremental" \ --flavor formatters --remove-container --fix --env "'APPLY_FIXES=all'" \ --env "'CLEAR_REPORT_FOLDER=true'" --env "'LOG_LEVEL=warning'" \ - --filesonly $FILES; then + --env "'FLAVOR_SUGGESTIONS=false'" --filesonly $FILES; then echo "$FILES" | xargs git add exit 0 fi From 39fc6d292d0026a8b7d5c68da90824607d0bb544 Mon Sep 17 00:00:00 2001 From: Matt Bishop Date: Fri, 3 Oct 2025 15:17:55 -0400 Subject: [PATCH 06/11] Bump version --- .github/workflows/lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 2d76c35e5e50..fbd1a455006b 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -23,6 +23,6 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Lint with MegaLinter - uses: oxsecurity/megalinter/flavors/formatters@5a91fb06c83d0e69fbd23756d47438aa723b4a5a # v8.7.0 + uses: oxsecurity/megalinter/flavors/formatters@0dcbedd66ea456ba2d54fd350affaa15df8a0da3 # v9.0.1 env: VALIDATE_ALL_CODEBASE: false From cdc22c72f63256f85b617e1dc2b62dc7fce9ba7a Mon Sep 17 00:00:00 2001 From: Matt Bishop Date: Fri, 3 Oct 2025 15:22:20 -0400 Subject: [PATCH 07/11] Skip merge commits with hook --- .git-hooks/pre-commit | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.git-hooks/pre-commit b/.git-hooks/pre-commit index 51a0cb41b15d..13ff873c63e9 100755 --- a/.git-hooks/pre-commit +++ b/.git-hooks/pre-commit @@ -1,5 +1,10 @@ #!/bin/sh +# Skip hook if this is a merge commit +if [ -f .git/MERGE_HEAD ]; then + exit 0 +fi + FILES=$(git diff --cached --name-only --diff-filter=ACMR | sed 's| |\\ |g') [ -z "$FILES" ] && exit 0 From 8aabcdd2287f49fa4550d9d4780e2c4aa94220d4 Mon Sep 17 00:00:00 2001 From: Matt Bishop Date: Mon, 29 Dec 2025 15:34:18 -0500 Subject: [PATCH 08/11] Remove redundant lint job in build, simplify README changes, and use latest Action --- .github/workflows/build.yml | 20 ----------- .github/workflows/lint.yml | 2 +- README.md | 70 ++++++++++++++++++------------------- 3 files changed, 36 insertions(+), 56 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d61124f8c020..8ea290235c8c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,27 +20,9 @@ env: _GITHUB_PR_REPO_NAME: ${{ github.event.pull_request.head.repo.full_name }} jobs: - lint: - name: Lint - runs-on: ubuntu-22.04 - steps: - - name: Check out repo - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - with: - ref: ${{ github.event.pull_request.head.sha }} - persist-credentials: false - - - name: Set up .NET - uses: actions/setup-dotnet@d4c94342e560b34958eacfc5d055d21461ed1c5d # v5.0.0 - - - name: Verify format - run: dotnet format --verify-no-changes - build-artifacts: name: Build Docker images runs-on: ubuntu-22.04 - needs: - - lint outputs: has_secrets: ${{ steps.check-secrets.outputs.has_secrets }} permissions: @@ -401,8 +383,6 @@ jobs: build-mssqlmigratorutility: name: Build MSSQL migrator utility runs-on: ubuntu-22.04 - needs: - - lint defaults: run: shell: bash diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index fbd1a455006b..98679184c8f0 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -23,6 +23,6 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Lint with MegaLinter - uses: oxsecurity/megalinter/flavors/formatters@0dcbedd66ea456ba2d54fd350affaa15df8a0da3 # v9.0.1 + uses: oxsecurity/megalinter/flavors/dotnetweb@55a59b24a441e0e1943080d4a512d827710d4a9d # v9.2.0 env: VALIDATE_ALL_CODEBASE: false diff --git a/README.md b/README.md index cd1708b8e0cc..ae6870b51326 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,3 @@ -# Bitwarden Server -

Bitwarden

@@ -18,15 +16,11 @@ The Bitwarden Server project contains the APIs, database, and other core infrast The server project is written in C# using .NET Core with ASP.NET Core. The database is written in T-SQL/SQL Server. The codebase can be developed, built, run, and deployed cross-platform on Windows, macOS, and Linux distributions. -## Contributing - -Code contributions are welcome! Please commit any pull requests against the `main` branch. Learn more about how to contribute by reading the [Contributing Guidelines](https://contributing.bitwarden.com/contributing/). Check out the [Contributing Documentation](https://contributing.bitwarden.com/) for how to get started with your first contribution. +## Developer Documentation -Security audits and feedback are welcome. Please open an issue or email us privately if the report is sensitive in nature. You can read our security policy in the [`SECURITY.md`](SECURITY.md) file. We also run a program on [HackerOne](https://hackerone.com/bitwarden). - -No grant of any rights in the trademarks, service marks, or logos of Bitwarden is made (except as may be necessary to comply with the notice requirements as applicable), and use of any Bitwarden trademarks must comply with [Bitwarden Trademark Guidelines](https://github.com/bitwarden/server/blob/main/TRADEMARK_GUIDELINES.md). +Please refer to the [Server Setup Guide](https://contributing.bitwarden.com/getting-started/server/guide) in the [Contributing Documentation](https://contributing.bitwarden.com/) for build instructions, recommended tooling, code style tips, and lots of other great information to get you started. -## Deploying +## Deploy

@@ -45,7 +39,7 @@ Full documentation for deploying Bitwarden with Docker can be found in our help _These dependencies are free to use._ -#### Linux & macOS +### Linux & macOS ```sh curl -s -L -o bitwarden.sh \ @@ -55,7 +49,7 @@ curl -s -L -o bitwarden.sh \ ./bitwarden.sh start ``` -#### Windows +### Windows ```cmd Invoke-RestMethod -OutFile bitwarden.ps1 ` @@ -72,44 +66,50 @@ Invoke-RestMethod -OutFile bitwarden.ps1 ` ### US Production Cluster -| Service | Image Hash | -|---------|------------| -| **Admin** | ![admin](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-us.json&query=%24.admin&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | -| **API** | ![api](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-us.json&query=%24.api&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | -| **Billing** | ![billing](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-us.json&query=%24.billing&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | -| **Events** | ![events](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-us.json&query=%24.events&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | +| Service | Image Hash | +|---------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Admin** | ![admin](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-us.json&query=%24.admin&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | +| **API** | ![api](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-us.json&query=%24.api&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | +| **Billing** | ![billing](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-us.json&query=%24.billing&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | +| **Events** | ![events](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-us.json&query=%24.events&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | | **EventsProcessor** | ![eventsprocessor](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-us.json&query=%24.eventsprocessor&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | -| **Identity** | ![identity](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-us.json&query=%24.identity&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | -| **Notifications** | ![notifications](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-us.json&query=%24.notifications&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | -| **SCIM** | ![scim](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-us.json&query=%24.scim&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | -| **SSO** | ![sso](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-us.json&query=%24.sso&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | +| **Identity** | ![identity](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-us.json&query=%24.identity&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | +| **Notifications** | ![notifications](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-us.json&query=%24.notifications&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | +| **SCIM** | ![scim](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-us.json&query=%24.scim&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | +| **SSO** | ![sso](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-us.json&query=%24.sso&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | ### EU Production Cluster -| Service | Image Hash | -|---------|------------| -| **Admin** | ![admin](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-eu.json&query=%24.admin&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | -| **API** | ![api](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-eu.json&query=%24.api&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | -| **Billing** | ![billing](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-eu.json&query=%24.billing&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | -| **Events** | ![events](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-eu.json&query=%24.events&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | +| Service | Image Hash | +|---------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Admin** | ![admin](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-eu.json&query=%24.admin&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | +| **API** | ![api](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-eu.json&query=%24.api&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | +| **Billing** | ![billing](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-eu.json&query=%24.billing&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | +| **Events** | ![events](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-eu.json&query=%24.events&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | | **EventsProcessor** | ![eventsprocessor](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-eu.json&query=%24.eventsprocessor&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | -| **Identity** | ![identity](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-eu.json&query=%24.identity&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | -| **Notifications** | ![notifications](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-eu.json&query=%24.notifications&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | -| **SCIM** | ![scim](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-eu.json&query=%24.scim&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | -| **SSO** | ![sso](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-eu.json&query=%24.sso&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | +| **Identity** | ![identity](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-eu.json&query=%24.identity&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | +| **Notifications** | ![notifications](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-eu.json&query=%24.notifications&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | +| **SCIM** | ![scim](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-eu.json&query=%24.scim&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | +| **SSO** | ![sso](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitwarden%2Fserver%2Frefs%2Fheads%2Fmetadata%2Fbadges%2Fshieldsio-badge-eu.json&query=%24.sso&style=flat-square&logo=docker&logoColor=white&label=&color=2496ED) | -## We're Hiring! +## We're Hiring -## Developers +Interested in contributing in a big way? Consider joining our team! We're hiring for many positions. Please take a look at our [Careers page](https://bitwarden.com/careers/) to see what opportunities are currently open as well as what it's like to work at Bitwarden. -Please refer to the [Server Setup Guide](https://contributing.bitwarden.com/getting-started/server/guide) in the [Contributing Documentation](https://contributing.bitwarden.com/) for build instructions, recommended tooling, code style tips, and lots of other great information to get you started. +## Contribute + +Code contributions are welcome! Please commit any pull requests against the `main` branch. Learn more about how to contribute by reading the [Contributing Guidelines](https://contributing.bitwarden.com/contributing/). Check out the [Contributing Documentation](https://contributing.bitwarden.com/) for how to get started with your first contribution. + +Security audits and feedback are welcome. Please open an issue or email us privately if the report is sensitive in nature. You can read our security policy in the [`SECURITY.md`](SECURITY.md) file. We also run a program on [HackerOne](https://hackerone.com/bitwarden). + +No grant of any rights in the trademarks, service marks, or logos of Bitwarden is made (except as may be necessary to comply with the notice requirements as applicable), and use of any Bitwarden trademarks must comply with [Bitwarden Trademark Guidelines](https://github.com/bitwarden/server/blob/main/TRADEMARK_GUIDELINES.md). ### Hooks To gain enhanced functionality such as local linting, install the hooks for this repository: ```bash -git config core.hooksPath .git-hooks +git config --local core.hooksPath .git-hooks ``` From a46a29e2d66eba73203193db1ee8609dd047c15a Mon Sep 17 00:00:00 2001 From: Matt Bishop Date: Mon, 29 Dec 2025 15:43:01 -0500 Subject: [PATCH 09/11] Fix lint finding --- .github/workflows/lint.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 98679184c8f0..3bb7c6b6f015 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -20,7 +20,9 @@ jobs: steps: - name: Check out repo - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + with: + persist-credentials: false - name: Lint with MegaLinter uses: oxsecurity/megalinter/flavors/dotnetweb@55a59b24a441e0e1943080d4a512d827710d4a9d # v9.2.0 From cf95cb3df5a352f8421a58dbfc8c1723264b5dfc Mon Sep 17 00:00:00 2001 From: Matt Bishop Date: Mon, 29 Dec 2025 16:18:06 -0500 Subject: [PATCH 10/11] Configure for only changed files --- .mega-linter.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 .mega-linter.yml diff --git a/.mega-linter.yml b/.mega-linter.yml new file mode 100644 index 000000000000..55d1e4faac3b --- /dev/null +++ b/.mega-linter.yml @@ -0,0 +1 @@ +VALIDATE_ALL_CODEBASE: false From 41f9dfcfe8d16c431bda1c8872fd7987d9301ab8 Mon Sep 17 00:00:00 2001 From: Matt Bishop Date: Wed, 7 Jan 2026 18:10:40 -0500 Subject: [PATCH 11/11] Bump version --- .github/workflows/lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 3bb7c6b6f015..58eebe21feeb 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -25,6 +25,6 @@ jobs: persist-credentials: false - name: Lint with MegaLinter - uses: oxsecurity/megalinter/flavors/dotnetweb@55a59b24a441e0e1943080d4a512d827710d4a9d # v9.2.0 + uses: oxsecurity/megalinter/flavors/dotnetweb@42bb470545e359597e7f12156947c436e4e3fb9a # v9.3.0 env: VALIDATE_ALL_CODEBASE: false