Skip to content

Commit

Permalink
Merge branch 'master' into amyblais-patch-9
Browse files Browse the repository at this point in the history
  • Loading branch information
amyblais authored Oct 16, 2024
2 parents 75d1a6f + 225379b commit c0f2518
Show file tree
Hide file tree
Showing 95 changed files with 2,299 additions and 394 deletions.
31 changes: 17 additions & 14 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
@@ -1,30 +1,33 @@
name: CD

on:
workflow_run:
workflows: ["CI"]
workflows:
- CI
types:
- completed
branches: ["master"]
permissions:
contents: read
branches:
- master

jobs:
s3-release-prod:
runs-on: ubuntu-latest
steps:
- name: cd/Download artifacts
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
run-id: ${{ github.event.workflow_run.id }}
github-token: ${{ github.token }}
name: docs
path: build/html

- name: cd/Configure AWS
uses: aws-actions/configure-aws-credentials@07c2f971bac433df982ccc261983ae443861db49 # v1-node16
uses: aws-actions/configure-aws-credentials@e3dd6a429d7300a6a4c196c26e071d42e0343502 # v4.0.2
with:
aws-region: us-east-1
aws-access-key-id: ${{ secrets.DOCS_BUILDS_BUCKET_AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.DOCS_BUILDS_BUCKET_AWS_SECRET_ACCESS_KEY }}
- name: cd/Download artifacts
uses: dawidd6/action-download-artifact@0c49384d39ceb023b8040f480a25596fd6cf441b # v2.26.0
with:
workflow: ${{ github.event.workflow_run.workflow_id }}
run_id: ${{ github.event.workflow_run.id }}
workflow_conclusion: success
name: docs
path: build/html

- name: cd/Upload artifacts to S3
run: |
aws s3 sync build/html s3://docs.mattermost.com/ --delete --cache-control no-cache --acl public-read --no-progress
aws s3 sync build/html s3://docs.mattermost.com/ --delete --cache-control no-cache --acl public-read --no-progress
24 changes: 17 additions & 7 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,23 +12,33 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: ci/Checkout code
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
- uses: actions/setup-python@db9987b4c1f10f0404fa60ee629f675fafbd6763 # v4.6.0
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1

- uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0
with:
python-version: 3.9
python-version: 3.12

- name: ci/Install dependencies
run: make python-deps

- name: ci/Run tests
run: TZ=UTC make test
env:
TZ: UTC
run: make test

- name: ci/Build docs
run: TZ=UTC make html
env:
TZ: UTC
run: make html

- name: ci/Persist docs artifacts
uses: actions/upload-artifact@65d862660abb392b8c4a3d1195a2108db131dd05 # v3.1.2
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
with:
name: docs
path: build/html

- name: ci/Persist doc logs artifacts
uses: actions/upload-artifact@65d862660abb392b8c4a3d1195a2108db131dd05 # v3.1.2
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
with:
name: doc-logs
path: build/*.log
11 changes: 4 additions & 7 deletions .github/workflows/preview-env-template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,10 @@ jobs:
- name: Setup Python
uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0
with:
python-version: "3.9"
python-version: 3.12

- name: Install pipenv
run: pip install pipenv

- name: Install dependencies
run: pipenv install --dev
- name: ci/Install dependencies
run: make python-deps

- name: Build
run: make SPHINXOPTS="-j auto -D html_baseurl=http://mattermost-docs-preview-pulls.s3-website-us-east-1.amazonaws.com/${{ inputs.PR_NUMBER }}" html
Expand All @@ -42,7 +39,7 @@ jobs:
with:
aws_key_id: ${{ secrets.AWS_KEY_ID }}
aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws_bucket: ${{ secrets.AWS_BUCKET }}
aws_bucket: mattermost-docs-preview-pulls
source_dir: ./build/html
destination_dir: ${{ inputs.PR_NUMBER }}

Expand Down
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ logs
node_modules
dist
npm-debug.log

.venv
extensions/**/__pycache__/
web/static/js/bundle*.js
web/static/js/libs*.js
model/version.go
Expand Down
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ endif
# Install necessary dependencies for the CI build pipeline.
# NOTE: if the version of Python used to build the docs changes, update the `pipenv` command below accordingly.
python-deps:
pip install pipenv==2023.11.15
pipenv install --dev --clear --deploy --python 3.9
pip install pipenv==2024.1.0
pipenv install --dev --clear --deploy --python 3.12

test:
pipenv run pytest
Expand Down
Binary file added source/_static/images/azure/aks-cluster.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added source/_static/images/azure/basics.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added source/_static/images/azure/postgreSQL.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
11 changes: 10 additions & 1 deletion source/_static/js/mattermost-search.js
Original file line number Diff line number Diff line change
Expand Up @@ -416,7 +416,15 @@ class SearchClass {
if (this.hasConfigSettingsIndex()) {
console.log("query(): searching lunr");
/** @type {Array<{score: number, ref: string, matchData: Record<string,any>}>} */
const lunrResults = this._lunrConfigSettingIndex.search(query);
let lunrResults;
try {
lunrResults = this._lunrConfigSettingIndex.search(query);
} catch (e) {
console.log('Error when trying to search query ' + JSON.stringify(query) + ' in lunr');
this.setPostSearchStatus(0, 0);
return;
}

console.log(`query(): lunr search returned ${lunrResults.length} results`);
configSettingSearchResults = lunrResults.map((result) => {
/** @type {Array<ConfigSettingRecord>} */
Expand Down Expand Up @@ -638,6 +646,7 @@ class SearchClass {
if (!numberOfResults && !numberOfConfigSettingResults) {
const searchStatusEl = document.getElementById("search-summary");
if (searchStatusEl) {
this.title.innerText = _('Search Results');
searchStatusEl.innerText = "Your search did not match any documents. Please make sure that all words are spelled correctly.";
}
return;
Expand Down
120 changes: 68 additions & 52 deletions source/_templates/search.html
Original file line number Diff line number Diff line change
@@ -1,54 +1,70 @@
{% extends "page.html" %}
{%- block regular_scripts -%}
{# Load lunr.js and mark.js before anything else #}
<script type="text/javascript" src="https://unpkg.com/[email protected]/lunr.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mark.js/8.11.1/mark.es6.min.js"
integrity="sha512-jZSRKDD86PmExf0ZoXQEMxhtxvLtOxo2xMJwgnx3VE/5VT5c8LCsnvut4wK3fIdFyO4szlbz/2tpg+xulnJDyQ=="
crossorigin="anonymous"
referrerpolicy="no-referrer"></script>
{{ super() }}
<script src="{{ pathto('_static/js/mattermost-search.js', 1) }}"></script>
<script src="{{ pathto('_static/language_data.js', 1) }}"></script>
{%- endblock regular_scripts -%}
{%- block htmltitle -%}
<title>{{ _("Search") }} - {{ docstitle }}</title>
{%- endblock htmltitle -%}
{% block content %}
<noscript>
<div class="admonition error">
<p class="admonition-title">{% trans %}Error{% endtrans %}</p>
<p>
{% trans %}Please activate JavaScript to enable the search functionality.{% endtrans %}
</p>
</div>
</noscript>
{% extends "page.html" %} {%- block regular_scripts -%} {# Load lunr.js and
mark.js before anything else #}
<script
type="text/javascript"
src="https://unpkg.com/[email protected]/lunr.js"
></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/mark.js/8.11.1/mark.es6.min.js"
integrity="sha512-jZSRKDD86PmExf0ZoXQEMxhtxvLtOxo2xMJwgnx3VE/5VT5c8LCsnvut4wK3fIdFyO4szlbz/2tpg+xulnJDyQ=="
crossorigin="anonymous"
referrerpolicy="no-referrer"
></script>
{{ super() }}
<script src="{{ pathto('_static/js/mattermost-search.js', 1) }}"></script>
<script src="{{ pathto('_static/language_data.js', 1) }}"></script>
{%- endblock regular_scripts -%} {%- block htmltitle -%}
<title>{{ _("Search") }} - {{ docstitle }}</title>
{%- endblock htmltitle -%} {% block content %}
<noscript>
<div class="admonition error">
<p class="admonition-title">{% trans %}Error{% endtrans %}</p>
<p>
{% trans %}Please activate JavaScript to enable the search
functionality.{% endtrans %}
</p>
</div>
</noscript>

<div style="display:inline-block">
<h2 id="search-title" style="float: left;"></h2><h2 id="search-dots" style="float: right;"></h2>
</div>
<p id="search-summary" class="search-summary"></p>
<!-- configuration setting-specific results will display here -->
<div id="config-setting-results-section" style="display: none;">
<h3>Configuration settings</h3><a id="config-setting-results-anchor"></a>
<div class="search" id="config-setting-results-list"></div>
</div>
<!-- all other results will display here -->
<div id="search-additional-information-header" style="display: none;">
<h3>Additional information</h3><a id="search-results-anchor"></a>
</div>
<div id="search-results">
<ul class="search" id="search-results-list"></ul>
</div>
{% endblock %}
{% block scripts -%}
{{ super() }}
{# Load the search indexes after the DOM has finished loading #}
<script lang="js">
_ready(() => {
Search.loadIndex("{{ pathto('searchindex.js', 1) }}");
});
_ready(() => {
Search.loadConfigSettingsIndex("{{ pathto('config-settings-index.json', 1) }}");
});
</script>
<div style="display: inline-block">
<h2 id="search-title" style="float: left"></h2>
<h2 id="search-dots" style="float: right"></h2>
</div>
<p id="search-summary" class="search-summary"></p>
<!-- configuration setting-specific results will display here -->
<div id="config-setting-results-section" style="display: none">
<h3>Configuration settings</h3>
<a id="config-setting-results-anchor"></a>
<div class="search" id="config-setting-results-list"></div>
</div>
<!-- all other results will display here -->
<div id="search-additional-information-header" style="display: none">
<h3>Additional information</h3>
<a id="search-results-anchor"></a>
</div>
<div id="search-results">
<ul class="search" id="search-results-list"></ul>
</div>
{% endblock %} {% block scripts -%} {{ super() }} {# Load the search indexes
after the DOM has finished loading #}
<script lang="js">
_ready(() => {
Search.loadIndex("{{ pathto('searchindex.js', 1) }}");
});
_ready(() => {
Search.loadConfigSettingsIndex("{{ pathto('config-settings-index.json', 1) }}");
});

document.addEventListener('DOMContentLoaded', function() {
const searchTitle = document.getElementById('search-title');
const searchResults = document.getElementById('search-results');
const searchSummary = document.getElementById('search-summary');
const searchQuery = new URLSearchParams(window.location.search).get('q');

if (!searchQuery || searchQuery.trim() === '') {
searchTitle.textContent = "Search Results";
searchSummary.textContent = "Please enter at least one search term.";
}
});
</script>
{%- endblock scripts %}
6 changes: 3 additions & 3 deletions source/about/cloud-dedicated.rst
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ Mattermost offers advanced security and authentication options for integrating w
Secure networking
~~~~~~~~~~~~~~~~~~

Mattermost Cloud Dedicated supports :doc:`IP filtering </manage/cloud-ip-filtering>` through CIDR-based IP ranges, providing flexibility for system administrators to include various authorized IPs or IP ranges for seamless access control. Users attempting to access the workspace from IPs outside defined ranges are restricted from entry. Cloud system admins can :ref:`configure IP filtering <manage/cloud-ip-filtering:configure ip filtering>` through their Mattermost System Console.
Mattermost Cloud Dedicated supports :doc:`IP filtering </manage/cloud-ip-filtering>` through CIDR-based IP ranges, providing flexibility for system administrators to include various authorized IPs or IP ranges for seamless access control. Users attempting to access their :doc:`workspace </guides/use-mattermost>` from IPs outside defined ranges are restricted from entry. Cloud system admins can :ref:`configure IP filtering <manage/cloud-ip-filtering:configure ip filtering>` through their Mattermost System Console.

Encryption
~~~~~~~~~~~
Expand All @@ -70,7 +70,7 @@ Connections to calls are secured with a combination of:
Cloud native exports
~~~~~~~~~~~~~~~~~~~~

Mattermost supports optional :ref:`filestore configuration settings <configure/experimental-configuration-settings:enable dedicated export filestore target>` to direct compliance and bulk export data to a separate S3 bucket from standard files. This separate bucket can be configured to allow for secure access by Mattermost Cloud teams as well as the workspace admins who manage a given installation. The exports can also be accessed by generating unique download links as needed.
Mattermost supports optional :ref:`filestore configuration settings <configure/experimental-configuration-settings:enable dedicated export filestore target>` to direct compliance and bulk export data to a separate S3 bucket from standard files. This separate bucket can be configured to allow for secure access by Mattermost Cloud teams as well as admins who manage a given Mattermost deployment. The exports can also be accessed by generating unique download links as needed.

The following diagram provides a high-level view of how this functionality works:

Expand Down Expand Up @@ -98,4 +98,4 @@ Approved plugins developed and/or tested by Mattermost are supported and availab
Migrate from a self-hosted instance
------------------------------------

See our :ref:`workspace migration <manage/cloud-data-export:migrate from self-hosted to cloud>` documentation to learn more about migrating from a self-hosted to a Mattermost Cloud instance.
See our :ref:`self-hosted to cloud migration <manage/cloud-data-export:migrate from self-hosted to cloud>` documentation to learn more about migrating from a self-hosted to a Mattermost Cloud instance.
8 changes: 4 additions & 4 deletions source/about/cloud-shared.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Cloud Shared

Mattermost Cloud Shared is designed as a cost-effective solution for companies who don't have strict security and compliance requirements that need a straightforward, managed communication platform without the necessity for extensive customization or dedicated resources.

Your Mattermost workspace is isolated, is fully hosted and managed by Mattermost, and runs :ref:`Mattermost Enterprise <about/editions-and-offerings:mattermost enterprise>` on shared infrastructure where resources are shared among multiple Mattermost customers, which might affect performance during peak times.
Your Mattermost deployment is isolated, is fully hosted and managed by Mattermost, and runs :ref:`Mattermost Enterprise <about/editions-and-offerings:mattermost enterprise>` on shared infrastructure where resources are shared among multiple Mattermost customers, which might affect performance during peak times.

Reference architecture
----------------------
Expand Down Expand Up @@ -52,7 +52,7 @@ Mattermost offers advanced security and authentication options for integrating w
Secure networking
~~~~~~~~~~~~~~~~~~

Enterprise customers with a Mattermost Cloud Shared deployment can :ref:`configure IP filtering <manage/cloud-ip-filtering:configure ip filtering>` through CIDR-based IP ranges, within the Mattermost System Console to specify authorized IPs or IP ranges for seamless access control. Users attempting to access the workspace from IPs outside defined ranges are restricted from entry.
Enterprise customers with a Mattermost Cloud Shared deployment can :ref:`configure IP filtering <manage/cloud-ip-filtering:configure ip filtering>` through CIDR-based IP ranges, within the Mattermost System Console to specify authorized IPs or IP ranges for seamless access control. Users attempting to access their :doc:`workspace </guides/use-mattermost>` from IPs outside defined ranges are restricted from entry.

Encryption
~~~~~~~~~~~
Expand All @@ -70,7 +70,7 @@ Connections to calls are secured with a combination of:
Cloud native exports
~~~~~~~~~~~~~~~~~~~~

Mattermost supports optional :ref:`filestore configuration settings <configure/experimental-configuration-settings:enable dedicated export filestore target>` to direct compliance and bulk export data to a separate S3 bucket from standard files. This separate bucket can be configured to allow for secure access by Mattermost Cloud teams as well as the workspace admins who manage a given installation. The exports can also be accessed by generating unique download links as needed.
Mattermost supports optional :ref:`filestore configuration settings <configure/experimental-configuration-settings:enable dedicated export filestore target>` to direct compliance and bulk export data to a separate S3 bucket from standard files. This separate bucket can be configured to allow for secure access by Mattermost Cloud teams as well as deployment admins who manage a given installation. The exports can also be accessed by generating unique download links as needed.

The following diagram provides a high-level view of how this functionality works:

Expand Down Expand Up @@ -100,4 +100,4 @@ Custom plugins and integrations outside of Mattermost Marketplace aren’t curre
Migrate from a self-hosted instance
------------------------------------

See our :ref:`workspace migration <manage/cloud-data-export:migrate from self-hosted to cloud>` documentation to learn more about migrating from a self-hosted to a Mattermost Cloud instance.
See our :ref:`self-hosted to cloud migration <manage/cloud-data-export:migrate from self-hosted to cloud>` documentation to learn more about migrating from a self-hosted to a Mattermost Cloud instance.
2 changes: 1 addition & 1 deletion source/about/cloud-subscriptions.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Cloud subscriptions
Cloud Shared </about/cloud-shared>
Cloud VPC Private Connectivity </about/cloud-vpc-private-connectivity>

Mattermost offers secure, cloud-based collaboration for fast moving enterprises that’s private, scaleable, and low maintenance. Cloud-native architecture supports organizations of any size for a workspace that scales with your team, without any resource planning.
Mattermost offers secure, cloud-based collaboration for fast moving enterprises that’s private, scaleable, and low maintenance. Cloud-native architecture supports organizations of any size for a deployment that scales with your team, without any resource planning.

Enterprises can choose between dedicated and shared infrastructure based on your organizations’ size, budget, technical requirements, and level of control and customization needed:

Expand Down
4 changes: 2 additions & 2 deletions source/about/cloud-vpc-private-connectivity.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ Cloud VPC Private Connectivity
.. include:: ../_static/badges/ent-cloud-only.rst
:start-after: :nosearch:

Virtual Private Cloud (VPC) Private Connectivity (Private Link) offers Enterprise Cloud customers tailored solutions for private connectivity needs with Mattermost Cloud. These options enable customers to access Mattermost Cloud through AWS's network without using the public internet, or allow the Mattermost Infrastructure team to manage a Mattermost workspace hosted in the customer's VPC via an EKS cluster.
Virtual Private Cloud (VPC) Private Connectivity (Private Link) offers Enterprise Cloud customers tailored solutions for private connectivity needs with Mattermost Cloud. These options enable customers to access Mattermost Cloud through AWS's network without using the public internet, or allow the Mattermost Infrastructure team to manage a Mattermost instance hosted in the customer's VPC via an EKS cluster.
It also provides the ability for customers to connect from Mattermost Cloud to their private webhooks,endpoints and integrations.

The key objectives of this offering are to:

- Allow customers to access Mattermost Cloud within their internal network.
- Enable the Mattermost Infrastructure team to perform operations on a Mattermost workspace hosted in the customer’s VPC, upon request.
- Enable the Mattermost Infrastructure team to perform operations on a Mattermost instance hosted in the customer’s VPC, upon request.
- Establish connectivity between the customer's VPC and Mattermost exclusively through AWS’s network, without exposure to the public internet.
- Ensure the setup process is straightforward and easy to implement.
- Adhere to all security best practices.
Expand Down
Loading

0 comments on commit c0f2518

Please sign in to comment.