From e8c6f9d46470859380d9f0df2952409ac8f61d7e Mon Sep 17 00:00:00 2001 From: Nik Rozman Date: Sun, 20 Apr 2025 22:13:26 +0200 Subject: [PATCH] Refactor CI/CD workflows --- .github/CODEOWNERS | 5 - .github/ISSUE_TEMPLATE/bug-desktop.yml | 76 ------ .github/ISSUE_TEMPLATE/config.yml | 5 - .github/ISSUE_TEMPLATE/enhancement.yml | 36 --- .github/PULL_REQUEST_TEMPLATE.md | 8 - .github/labels.yml | 31 --- .github/renovate.json | 4 - .github/workflows/backport.yml | 32 --- .github/workflows/build_and_deploy.yaml | 298 ----------------------- .github/workflows/build_and_test.yaml | 66 ++--- .github/workflows/build_linux.yaml | 196 --------------- .github/workflows/build_macos.yaml | 161 ------------ .github/workflows/build_prepare.yaml | 101 +------- .github/workflows/build_windows.yaml | 22 +- .github/workflows/dockerbuild.yaml | 70 ------ .github/workflows/localazy_download.yaml | 12 - .github/workflows/localazy_upload.yaml | 12 - .github/workflows/release-drafter.yml | 14 -- .github/workflows/release-gitflow.yml | 12 - .github/workflows/static_analysis.yaml | 85 ------- .github/workflows/sync-labels.yml | 22 -- .github/workflows/triage-incoming.yml | 16 -- .github/workflows/triage-labelled.yml | 12 - .github/workflows/triage-stale.yml | 22 -- config.json | 53 ++++ package.json | 6 +- 26 files changed, 91 insertions(+), 1286 deletions(-) delete mode 100644 .github/CODEOWNERS delete mode 100644 .github/ISSUE_TEMPLATE/bug-desktop.yml delete mode 100644 .github/ISSUE_TEMPLATE/config.yml delete mode 100644 .github/ISSUE_TEMPLATE/enhancement.yml delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/labels.yml delete mode 100644 .github/renovate.json delete mode 100644 .github/workflows/backport.yml delete mode 100644 .github/workflows/build_and_deploy.yaml delete mode 100644 .github/workflows/build_linux.yaml delete mode 100644 .github/workflows/build_macos.yaml delete mode 100644 .github/workflows/dockerbuild.yaml delete mode 100644 .github/workflows/localazy_download.yaml delete mode 100644 .github/workflows/localazy_upload.yaml delete mode 100644 .github/workflows/release-drafter.yml delete mode 100644 .github/workflows/release-gitflow.yml delete mode 100644 .github/workflows/static_analysis.yaml delete mode 100644 .github/workflows/sync-labels.yml delete mode 100644 .github/workflows/triage-incoming.yml delete mode 100644 .github/workflows/triage-labelled.yml delete mode 100644 .github/workflows/triage-stale.yml create mode 100644 config.json diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS deleted file mode 100644 index 0b5e292..0000000 --- a/.github/CODEOWNERS +++ /dev/null @@ -1,5 +0,0 @@ -* @element-hq/element-web-reviewers -/.github/workflows/** @element-hq/element-web-team -/package.json @element-hq/element-web-team -/yarn.lock @element-hq/element-web-team -/src/i18n/strings diff --git a/.github/ISSUE_TEMPLATE/bug-desktop.yml b/.github/ISSUE_TEMPLATE/bug-desktop.yml deleted file mode 100644 index 529c0a0..0000000 --- a/.github/ISSUE_TEMPLATE/bug-desktop.yml +++ /dev/null @@ -1,76 +0,0 @@ -name: Bug report for the Element desktop app (not in a browser) -description: File a bug report if you are using the desktop Element application. -labels: [T-Defect] -body: - - type: markdown - attributes: - value: | - Thanks for taking the time to fill out this bug report! - - Please report security issues by email to security@matrix.org - - type: textarea - id: reproduction-steps - attributes: - label: Steps to reproduce - description: Please attach screenshots, videos or logs if you can. - placeholder: Tell us what you see! - value: | - 1. Where are you starting? What can you see? - 2. What do you click? - 3. More steps… - validations: - required: true - - type: textarea - id: result - attributes: - label: Outcome - placeholder: Tell us what went wrong - value: | - #### What did you expect? - - #### What happened instead? - validations: - required: true - - type: input - id: os - attributes: - label: Operating system - placeholder: Windows, macOS, Ubuntu, Arch Linux… - validations: - required: false - - type: input - id: version - attributes: - label: Application version - description: You can find the version information in Settings -> Help & About. - placeholder: e.g. Element version 1.7.34, olm version 3.2.3 - validations: - required: false - - type: input - id: source - attributes: - label: How did you install the app? - description: Where did you install the app from? Please give a link or a description. - placeholder: e.g. From https://element.io/get-started - validations: - required: false - - type: input - id: homeserver - attributes: - label: Homeserver - description: | - Which server is your account registered on? If it is a local or non-public homeserver, please tell us what is the homeserver implementation (ex: Synapse/Dendrite/etc.) and the version. - placeholder: e.g. matrix.org or Synapse 1.50.0rc1 - validations: - required: false - - type: dropdown - id: rageshake - attributes: - label: Will you send logs? - description: | - Did you know that you can send a /rageshake command from your application to submit logs for this issue? Trigger the defect, then type `/rageshake` into the message input area followed by a description of the problem and send the command. You will be able to add a link to this defect report and submit anonymous logs to the developers. - options: - - "Yes" - - "No" - validations: - required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index e95194c..0000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,5 +0,0 @@ -blank_issues_enabled: false -contact_links: - - name: Bug report for the Element flatpak app - url: https://github.com/flathub/im.riot.Riot/issues - about: Please file bugs with the Flatpak application on the respective repository. diff --git a/.github/ISSUE_TEMPLATE/enhancement.yml b/.github/ISSUE_TEMPLATE/enhancement.yml deleted file mode 100644 index e6784b1..0000000 --- a/.github/ISSUE_TEMPLATE/enhancement.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: Enhancement request -description: Do you have a suggestion or feature request? -labels: [T-Enhancement] -body: - - type: markdown - attributes: - value: | - Thank you for taking the time to propose an enhancement to an existing feature. If you would like to propose a new feature or a major cross-platform change, please [start a discussion here](https://github.com/vector-im/element-meta/discussions/new?category=ideas). - - type: textarea - id: usecase - attributes: - label: Your use case - description: What would you like to be able to do? Please feel welcome to include screenshots or mock ups. - placeholder: Tell us what you would like to do! - value: | - #### What would you like to do? - - #### Why would you like to do it? - - #### How would you like to achieve it? - validations: - required: true - - type: textarea - id: alternative - attributes: - label: Have you considered any alternatives? - placeholder: A clear and concise description of any alternative solutions or features you've considered. - validations: - required: false - - type: textarea - id: additional-context - attributes: - label: Additional context - placeholder: Is there anything else you'd like to add? - validations: - required: false diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index d20cda6..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ - - -## Checklist - -- [ ] Ensure your code works with manual testing. -- [ ] New or updated `public`/`exported` symbols have accurate [TSDoc](https://tsdoc.org/) documentation. -- [ ] Linter and other CI checks pass. -- [ ] I have licensed the changes to Element by completing the [Contributor License Agreement (CLA)](https://cla-assistant.io/element-hq/element-desktop) diff --git a/.github/labels.yml b/.github/labels.yml deleted file mode 100644 index fa08e9f..0000000 --- a/.github/labels.yml +++ /dev/null @@ -1,31 +0,0 @@ -- name: "A-Install" - color: "72A447" -- name: "A-Seshat" - color: "8262BE" -- name: "A-Update" - color: "17BE67" -- name: "Story" - description: "A change to the product that generates user value on its own. Unit of delivery." - color: "0BAC47" -- name: "X-Breaking-Change" - color: "ff7979" -- name: "Z-Arch" - color: "D601BE" -- name: "Z-ARM" - color: "5DEC5B" -- name: "Z-Flatpak" - color: "0CA856" -- name: "Z-Linux" - color: "7B4A9C" -- name: "Z-macOS" - color: "500605" -- name: "Z-Official" - color: "1D2B20" -- name: "Z-Snap" - color: "29CD95" -- name: "Z-Suse" - color: "79D07B" -- name: "Z-Wayland" - color: "94C519" -- name: "Z-Windows" - color: "0632DE" diff --git a/.github/renovate.json b/.github/renovate.json deleted file mode 100644 index 7632042..0000000 --- a/.github/renovate.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": ["github>matrix-org/renovate-config-element-web"] -} diff --git a/.github/workflows/backport.yml b/.github/workflows/backport.yml deleted file mode 100644 index 5a11ad5..0000000 --- a/.github/workflows/backport.yml +++ /dev/null @@ -1,32 +0,0 @@ -name: Backport -on: - pull_request_target: - types: - - closed - - labeled - branches: - - develop - -permissions: {} # We use ELEMENT_BOT_TOKEN instead - -jobs: - backport: - name: Backport - runs-on: ubuntu-24.04 - # Only react to merged PRs for security reasons. - # See https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target. - if: > - github.event.pull_request.merged - && ( - github.event.action == 'closed' - || ( - github.event.action == 'labeled' - && contains(github.event.label.name, 'backport') - ) - ) - steps: - - uses: tibdex/backport@9565281eda0731b1d20c4025c43339fb0a23812e # v2 - with: - labels_template: "<%= JSON.stringify([...labels, 'X-Release-Blocker']) %>" - # We can't use GITHUB_TOKEN here or CI won't run on the new PR - github_token: ${{ secrets.ELEMENT_BOT_TOKEN }} diff --git a/.github/workflows/build_and_deploy.yaml b/.github/workflows/build_and_deploy.yaml deleted file mode 100644 index b91f644..0000000 --- a/.github/workflows/build_and_deploy.yaml +++ /dev/null @@ -1,298 +0,0 @@ -name: Build and Deploy -on: - # Nightly build - schedule: - - cron: "0 9 * * *" - # Release build - release: - types: [published] - # Manual nightly & release - workflow_dispatch: - inputs: - mode: - description: What type of build to trigger. Release builds MUST be ran from the `master` branch. - required: true - default: nightly - type: choice - options: - - nightly - - release - macos: - description: Build macOS - required: true - type: boolean - default: true - windows: - description: Build Windows - required: true - type: boolean - default: true - linux: - description: Build Linux - required: true - type: boolean - default: true - deploy: - description: Deploy artifacts - required: true - type: boolean - default: true -run-name: Element ${{ inputs.mode != 'release' && github.event_name != 'release' && 'Nightly' || 'Desktop' }} -concurrency: ${{ github.workflow }} -env: - R2_BUCKET: ${{ vars.R2_BUCKET }} -permissions: {} # Uses ELEMENT_BOT_TOKEN -jobs: - prepare: - uses: ./.github/workflows/build_prepare.yaml - permissions: - contents: read - with: - config: element.io/${{ inputs.mode || (github.event_name == 'release' && 'release') || 'nightly' }} - version: ${{ (inputs.mode != 'release' && github.event_name != 'release') && 'develop' || '' }} - nightly: ${{ inputs.mode != 'release' && github.event_name != 'release' }} - deploy: ${{ inputs.deploy || (github.event_name != 'workflow_dispatch' && github.event.release.prerelease != true) }} - secrets: - CF_R2_ACCESS_KEY_ID: ${{ secrets.CF_R2_ACCESS_KEY_ID }} - CF_R2_TOKEN: ${{ secrets.CF_R2_TOKEN }} - - windows: - if: github.event_name != 'workflow_dispatch' || inputs.windows - needs: prepare - name: Windows ${{ matrix.arch }} - strategy: - matrix: - arch: [x64, arm64] - uses: ./.github/workflows/build_windows.yaml - secrets: inherit - with: - sign: true - arch: ${{ matrix.arch }} - version: ${{ needs.prepare.outputs.nightly-version }} - - macos: - if: github.event_name != 'workflow_dispatch' || inputs.macos - needs: prepare - name: macOS - uses: ./.github/workflows/build_macos.yaml - secrets: inherit - with: - sign: true - base-url: https://packages.element.io/${{ needs.prepare.outputs.packages-dir }} - version: ${{ needs.prepare.outputs.nightly-version }} - - linux: - if: github.event_name != 'workflow_dispatch' || inputs.linux - needs: prepare - name: Linux ${{ matrix.arch }} (sqlcipher ${{ matrix.sqlcipher }}) - strategy: - matrix: - arch: [amd64, arm64] - sqlcipher: [static] - uses: ./.github/workflows/build_linux.yaml - with: - arch: ${{ matrix.arch }} - sqlcipher: ${{ matrix.sqlcipher }} - version: ${{ needs.prepare.outputs.nightly-version }} - - deploy: - needs: - - prepare - - macos - - linux - - windows - runs-on: ubuntu-24.04 - name: ${{ needs.prepare.outputs.deploy == 'true' && 'Deploy' || 'Deploy (dry-run)' }} - if: always() && !contains(needs.*.result, 'failure') && !contains(needs.*.result, 'cancelled') - environment: ${{ needs.prepare.outputs.deploy == 'true' && 'packages.element.io' || '' }} - steps: - - name: Download artifacts - uses: actions/download-artifact@v4 - - - name: Prepare artifacts for deployment - run: | - set -x - - # Windows - for arch in x64 arm64 - do - if [ -d "win-$arch" ]; then - mkdir -p packages.element.io/{install,update}/win32/$arch - mv win-$arch/squirrel-windows*/*.exe "packages.element.io/install/win32/$arch/" - mv win-$arch/squirrel-windows*/*.nupkg "packages.element.io/update/win32/$arch/" - mv win-$arch/squirrel-windows*/RELEASES "packages.element.io/update/win32/$arch/" - fi - done - - # macOS - if [ -d macos ]; then - mkdir -p packages.element.io/{install,update}/macos - mv macos/*.dmg packages.element.io/install/macos/ - mv macos/*-mac.zip packages.element.io/update/macos/ - mv macos/*.json packages.element.io/update/macos/ - fi - - # Linux - if [ -d linux-amd64-sqlcipher-static ]; then - mkdir -p packages.element.io/install/linux/glibc-x86-64 - mv linux-amd64-sqlcipher-static/*.tar.gz packages.element.io/install/linux/glibc-x86-64 - fi - if [ -d linux-arm64-sqlcipher-static ]; then - mkdir -p packages.element.io/install/linux/glibc-aarch64 - mv linux-arm64-sqlcipher-static/*.tar.gz packages.element.io/install/linux/glibc-aarch64 - fi - - # We don't wish to store the installer for every nightly ever, so we only keep the latest - - name: "[Nightly] Strip version from installer file" - if: needs.prepare.outputs.nightly-version != '' - run: | - set -x - - # Windows - for arch in x64 arm64 - do - [ -d "win-$arch" ] && mv packages.element.io/install/win32/$arch/{*,"Element Nightly Setup"}.exe - done - - # macOS - [ -d macos ] && mv packages.element.io/install/macos/{*,"Element Nightly"}.dmg - - # Linux - [ -d linux-amd64-sqlcipher-static ] && mv packages.element.io/install/linux/glibc-x86-64/{*,element-desktop-nightly}.tar.gz - [ -d linux-arm64-sqlcipher-static ] && mv packages.element.io/install/linux/glibc-aarch64/{*,element-desktop-nightly}.tar.gz - - - name: "[Release] Prepare release latest symlink" - if: needs.prepare.outputs.nightly-version == '' - run: | - set -x - - # Windows - for arch in x64 arm64 - do - if [ -d "win-$arch" ]; then - pushd packages.element.io/install/win32/$arch - ln -s "$(find . -type f -iname "*.exe" | xargs -0 -n1 -- basename)" "Element Setup.exe" - popd - fi - done - - # macOS - if [ -d macos ]; then - pushd packages.element.io/install/macos - ln -s "$(find . -type f -iname "*.dmg" | xargs -0 -n1 -- basename)" "Element.dmg" - popd - fi - - # Linux - if [ -d linux-amd64-sqlcipher-static ]; then - pushd packages.element.io/install/linux/glibc-x86-64 - ln -s "$(find . -type f -iname "*.tar.gz" | xargs -0 -n1 -- basename)" "element-desktop.tar.gz" - popd - fi - if [ -d linux-arm64-sqlcipher-static ]; then - pushd packages.element.io/install/linux/glibc-aarch64 - ln -s "$(find . -type f -iname "*.tar.gz" | xargs -0 -n1 -- basename)" "element-desktop.tar.gz" - popd - fi - - - name: Stash packages.element.io - if: needs.prepare.outputs.deploy == 'false' - uses: actions/upload-artifact@v4 - with: - name: packages.element.io - path: packages.element.io - - # Checksum algorithm specified as per https://developers.cloudflare.com/r2/examples/aws/aws-cli/ - - name: Deploy artifacts - if: needs.prepare.outputs.deploy == 'true' - run: | - set -x - aws s3 cp --recursive packages.element.io/ s3://$R2_BUCKET/$DEPLOYMENT_DIR --endpoint-url $R2_URL --region auto --checksum-algorithm CRC32 - env: - AWS_ACCESS_KEY_ID: ${{ secrets.CF_R2_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.CF_R2_TOKEN }} - R2_URL: ${{ vars.CF_R2_S3_API }} - DEPLOYMENT_DIR: ${{ needs.prepare.outputs.packages-dir }} - - - name: Notify packages.element.io of new files - if: needs.prepare.outputs.deploy == 'true' - uses: peter-evans/repository-dispatch@ff45666b9427631e3450c54a1bcbee4d9ff4d7c0 # v3 - with: - token: ${{ secrets.ELEMENT_BOT_TOKEN }} - repository: element-hq/packages.element.io - event-type: packages-index - - - name: Find debs - id: deb - if: needs.linux.result == 'success' - run: | - set -x - - for arch in amd64 arm64 - do - echo "$arch=$(ls linux-$arch-sqlcipher-static/*.deb | tail -n1)" >> $GITHUB_OUTPUT - done - - - name: Stash debs - if: needs.prepare.outputs.deploy == 'false' && needs.linux.result == 'success' - uses: actions/upload-artifact@v4 - with: - name: debs - path: | - ${{ steps.deb.outputs.amd64 }} - ${{ steps.deb.outputs.arm64 }} - - - name: Publish amd64 deb to packages.element.io - uses: element-hq/packages.element.io@master - if: needs.prepare.outputs.deploy == 'true' && needs.linux.result == 'success' - with: - file: ${{ steps.deb.outputs.amd64 }} - github-token: ${{ secrets.ELEMENT_BOT_TOKEN }} - bucket-api: ${{ vars.CF_R2_S3_API }} - bucket-key-id: ${{ secrets.CF_R2_ACCESS_KEY_ID }} - bucket-access-key: ${{ secrets.CF_R2_TOKEN }} - - - name: Publish arm64 deb to packages.element.io - uses: element-hq/packages.element.io@master - if: needs.prepare.outputs.deploy == 'true' && needs.linux.result == 'success' - with: - file: ${{ steps.deb.outputs.arm64 }} - github-token: ${{ secrets.ELEMENT_BOT_TOKEN }} - bucket-api: ${{ vars.CF_R2_S3_API }} - bucket-key-id: ${{ secrets.CF_R2_ACCESS_KEY_ID }} - bucket-access-key: ${{ secrets.CF_R2_TOKEN }} - - deploy-ess: - needs: deploy - runs-on: ubuntu-24.04 - name: Deploy builds to ESS - if: needs.prepare.outputs.deploy == 'true' && github.event_name == 'release' - env: - BUCKET_NAME: "element-desktop-msi.onprem.element.io" - AWS_REGION: "eu-central-1" - permissions: - id-token: write # This is required for requesting the JWT - steps: - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - role-to-assume: arn:aws:iam::264135176173:role/Push-ElementDesktop-MSI - role-session-name: githubaction-run-${{ github.run_id }} - aws-region: ${{ env.AWS_REGION }} - - - name: Download artifacts - uses: actions/download-artifact@v4 - with: - pattern: win-* - - - name: Copy files to S3 - run: | - set -x - - PREFIX="${VERSION%.*}" - for file in win-*/*.msi; do - filename=$(basename "$file") - aws s3 cp "$file" "s3://${{ env.BUCKET_NAME }}/$PREFIX/$filename" - done - env: - VERSION: ${{ github.event.release.tag_name }} diff --git a/.github/workflows/build_and_test.yaml b/.github/workflows/build_and_test.yaml index a77f676..6972aff 100644 --- a/.github/workflows/build_and_test.yaml +++ b/.github/workflows/build_and_test.yaml @@ -1,50 +1,22 @@ -name: Build and Test +name: Build Windows Package on: - pull_request: {} - push: - branches: [develop, staging, master] -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true -permissions: {} # No permissions required + push: + branches: [develop, master, pipeline-rework] + pull_request: {} + workflow_dispatch: {} + jobs: - fetch: - uses: ./.github/workflows/build_prepare.yaml - permissions: - contents: read - with: - config: ${{ (github.event.pull_request.base.ref || github.ref_name) == 'develop' && 'element.io/nightly' || 'element.io/release' }} - version: ${{ (github.event.pull_request.base.ref || github.ref_name) == 'develop' && 'develop' || '' }} + fetch: + uses: ./.github/workflows/build_prepare.yaml + permissions: + contents: read + with: + config: "" + version: custom - windows: - needs: fetch - name: Windows - uses: ./.github/workflows/build_windows.yaml - strategy: - matrix: - arch: [x64, ia32, arm64] - with: - arch: ${{ matrix.arch }} - - linux: - needs: fetch - name: "Linux (${{ matrix.arch }}) (sqlcipher: ${{ matrix.sqlcipher }})" - uses: ./.github/workflows/build_linux.yaml - strategy: - matrix: - sqlcipher: [system, static] - arch: [amd64, arm64] - with: - sqlcipher: ${{ matrix.sqlcipher }} - arch: ${{ matrix.arch }} - - macos: - needs: fetch - name: macOS - uses: ./.github/workflows/build_macos.yaml - - tests-done: - needs: [windows, linux, macos] - runs-on: ubuntu-24.04 - steps: - - run: echo "Tests successful" + windows: + needs: fetch + name: Windows Build + uses: ./.github/workflows/build_windows.yaml + with: + arch: x64 diff --git a/.github/workflows/build_linux.yaml b/.github/workflows/build_linux.yaml deleted file mode 100644 index b75594f..0000000 --- a/.github/workflows/build_linux.yaml +++ /dev/null @@ -1,196 +0,0 @@ -# This workflow relies on actions/cache to store the hak dependency artifacts as they take a long time to build -# Due to this extra care must be taken to only ever run all build_* scripts against the same branch to ensure -# the correct cache scoping, and additional care must be taken to not run untrusted actions on the develop branch. -on: - workflow_call: - inputs: - arch: - type: string - required: true - description: "The architecture to build for, one of 'amd64' | 'arm64'" - version: - type: string - required: false - description: "Version string to override the one in package.json, used for non-release builds" - sqlcipher: - type: string - required: true - description: "How to link sqlcipher, one of 'system' | 'static'" -env: - SQLCIPHER_BUNDLED: ${{ inputs.sqlcipher == 'static' && '1' || '' }} - MAX_GLIBC: 2.31 # bullseye-era glibc, used by glibc-check.sh -permissions: {} # No permissions required -jobs: - build: - # We build on native infrastructure as matrix-seshat fails to cross-compile properly - # https://github.com/matrix-org/seshat/issues/135 - runs-on: ${{ inputs.arch == 'arm64' && 'ubuntu-22.04-arm' || 'ubuntu-22.04' }} - env: - HAK_DOCKER_IMAGE: ghcr.io/element-hq/element-desktop-dockerbuild - steps: - - name: Resolve docker image tag for push - if: github.event_name == 'push' - run: echo "HAK_DOCKER_IMAGE=$HAK_DOCKER_IMAGE:$GITHUB_REF_NAME" >> $GITHUB_ENV - - name: Resolve docker image tag for release - if: github.event_name == 'release' - run: echo "HAK_DOCKER_IMAGE=$HAK_DOCKER_IMAGE:staging" >> $GITHUB_ENV - - name: Resolve docker image tag for other triggers - if: github.event_name != 'push' && github.event_name != 'release' - run: echo "HAK_DOCKER_IMAGE=$HAK_DOCKER_IMAGE:develop" >> $GITHUB_ENV - - - uses: nbucic/variable-mapper@0673f6891a0619ba7c002ecfed0f9f4f39017b6f - id: config - with: - key: "${{ inputs.arch }}" - export_to: output - map: | - { - "amd64": { - "target": "x86_64-unknown-linux-gnu", - "arch": "x86-64" - }, - "arm64": { - "target": "aarch64-unknown-linux-gnu", - "arch": "aarch64", - "build-args": "--arm64" - } - } - - - uses: actions/checkout@v4 - - - uses: actions/download-artifact@v4 - with: - name: webapp - - - name: Cache .hak - id: cache - uses: actions/cache@v4 - with: - key: ${{ runner.os }}-${{ github.ref_name }}-${{ inputs.sqlcipher }}-${{ inputs.arch }}-${{ hashFiles('hakHash', 'electronVersion', 'dockerbuild/*') }} - path: | - ./.hak - - - uses: actions/setup-node@v4 - with: - node-version-file: .node-version - cache: "yarn" - env: - # Workaround for https://github.com/actions/setup-node/issues/317 - FORCE_COLOR: 0 - - - name: Install Deps - run: "yarn install --frozen-lockfile" - - - name: "Get modified files" - id: changed_files - if: steps.cache.outputs.cache-hit != 'true' && github.event_name == 'pull_request' - uses: tj-actions/changed-files@823fcebdb31bb35fdf2229d9f769b400309430d0 # v46 - with: - files: | - dockerbuild/** - - # This allows contributors to test changes to the dockerbuild image within a pull request - - name: Build docker image - uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6 - if: steps.changed_files.outputs.any_modified == 'true' - with: - file: dockerbuild/Dockerfile - load: true - platforms: linux/${{ inputs.arch }} - tags: ${{ env.HAK_DOCKER_IMAGE }} - - - name: Build Natives - if: steps.cache.outputs.cache-hit != 'true' - run: | - docker run \ - -v ${{ github.workspace }}:/work -w /work \ - -e SQLCIPHER_BUNDLED \ - $HAK_DOCKER_IMAGE \ - yarn build:native - - - name: Fix permissions on .hak - run: sudo chown -R $USER:$USER .hak - - - name: Check native libraries in hak dependencies - run: | - shopt -s globstar - - for filename in ./.hak/hakModules/**/*.node; do - ./scripts/glibc-check.sh $filename - done - - - name: Generate debian files and arguments - run: | - if [ -f changelog.Debian ]; then - echo "ED_DEBIAN_CHANGELOG=changelog.Debian" >> $GITHUB_ENV - fi - - # Workaround for https://github.com/electron-userland/electron-builder/issues/6116 - - name: Install fpm - if: inputs.arch == 'arm64' - run: | - sudo apt-get install ruby-dev build-essential - sudo gem install fpm - echo "USE_SYSTEM_FPM=true" >> $GITHUB_ENV - - - name: Build App - run: yarn build --publish never -l ${{ steps.config.outputs.build-args }} - env: - # Only set for Nightly builds - ED_NIGHTLY: ${{ inputs.version }} - - - name: Check native libraries - run: | - set -x - shopt -s globstar - - FILES=$(file dist/**/*.node) - echo "$FILES" - - if [ grep -v "$ARCH" ]; then - exit 1 - fi - - LIBS=$(readelf -d dist/**/*.node | grep NEEDED) - echo "$LIBS" - - set +x - assert_contains_string() { [[ "$1" == *"$2"* ]]; } - ! assert_contains_string "$LIBS" "libcrypto.so.1.1" - if [ "$SQLCIPHER_BUNDLED" == "1" ]; then - ! assert_contains_string "$LIBS" "libsqlcipher.so.0" - else - assert_contains_string "$LIBS" "libsqlcipher.so.0" - fi - - ./scripts/glibc-check.sh dist/linux-*unpacked/element-desktop* - env: - ARCH: ${{ steps.config.outputs.arch }} - - # We exclude *-unpacked as it loses permissions and the tarball contains it with correct permissions - - name: Upload Artifacts - uses: actions/upload-artifact@v4 - with: - name: linux-${{ inputs.arch }}-sqlcipher-${{ inputs.sqlcipher }} - path: | - dist - !dist/*-unpacked/** - retention-days: 1 - - - name: Assert all required files are present - run: | - test -f ./dist/element-desktop*$ARCH.deb - test -f ./dist/element-desktop*.tar.gz - env: - ARCH: ${{ inputs.arch }} - - test: - needs: build - uses: ./.github/workflows/build_test.yaml - with: - artifact: linux-${{ inputs.arch }}-sqlcipher-${{ inputs.sqlcipher }} - runs-on: ${{ inputs.arch == 'arm64' && 'ubuntu-22.04-arm' || 'ubuntu-22.04' }} - executable: /opt/Element*/element-desktop* - prepare_cmd: | - sudo apt-get -qq update - sudo apt install ./dist/*.deb diff --git a/.github/workflows/build_macos.yaml b/.github/workflows/build_macos.yaml deleted file mode 100644 index 0cb9c51..0000000 --- a/.github/workflows/build_macos.yaml +++ /dev/null @@ -1,161 +0,0 @@ -# This workflow relies on actions/cache to store the hak dependency artifacts as they take a long time to build -# Due to this extra care must be taken to only ever run all build_* scripts against the same branch to ensure -# the correct cache scoping, and additional care must be taken to not run untrusted actions on the develop branch. -on: - workflow_call: - secrets: - APPLE_ID: - required: false - APPLE_ID_PASSWORD: - required: false - APPLE_TEAM_ID: - required: false - APPLE_CSC_KEY_PASSWORD: - required: false - APPLE_CSC_LINK: - required: false - inputs: - version: - type: string - required: false - description: "Version string to override the one in package.json, used for non-release builds" - sign: - type: string - required: false - description: "Whether to sign & notarise the build, requires 'packages.element.io' environment" - base-url: - type: string - required: false - description: "The URL to which the output will be deployed." -permissions: {} # No permissions required -jobs: - build: - runs-on: macos-14 # M1 - environment: ${{ inputs.sign && 'packages.element.io' || '' }} - steps: - - uses: actions/checkout@v4 - - - uses: actions/download-artifact@v4 - with: - name: webapp - - - name: Cache .hak - id: cache - uses: actions/cache@v4 - with: - key: ${{ runner.os }}-${{ hashFiles('hakHash', 'electronVersion') }} - path: | - ./.hak - - - name: Install Rust - if: steps.cache.outputs.cache-hit != 'true' - run: | - rustup toolchain install stable --profile minimal --no-self-update - rustup default stable - rustup target add aarch64-apple-darwin - rustup target add x86_64-apple-darwin - - # M1 macos-14 comes without Python preinstalled - - uses: actions/setup-python@v5 - with: - python-version: "3.13" - - - uses: actions/setup-node@v4 - with: - node-version-file: .node-version - cache: "yarn" - - - name: Install Deps - run: "yarn install --frozen-lockfile" - - # Python 3.12 drops distutils which keytar relies on - - name: Install setuptools - run: pip3 install setuptools - - - name: Build Natives - if: steps.cache.outputs.cache-hit != 'true' - run: yarn build:native:universal - - # We split these because electron-builder gets upset if we set CSC_LINK even to an empty string - - name: "[Signed] Build App" - if: inputs.sign != '' - run: | - yarn build:universal --publish never - env: - APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} - APPLE_ID: ${{ secrets.APPLE_ID }} - APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} - CSC_KEY_PASSWORD: ${{ secrets.APPLE_CSC_KEY_PASSWORD }} - CSC_LINK: ${{ secrets.APPLE_CSC_LINK }} - # Only set for Nightly builds - ED_NIGHTLY: ${{ inputs.version }} - - - name: Check app was signed & notarised successfully - if: inputs.sign != '' - run: | - hdiutil attach dist/*.dmg -mountpoint /Volumes/Element - codesign -dv --verbose=4 /Volumes/Element/*.app - spctl -a -vvv -t install /Volumes/Element/*.app - hdiutil detach /Volumes/Element - - - name: "[Unsigned] Build App" - if: inputs.sign == '' - run: | - yarn build:universal --publish never - env: - CSC_IDENTITY_AUTO_DISCOVERY: false - - - name: Generate releases.json - if: inputs.base-url - run: | - PKG_JSON_VERSION=$(cat package.json | jq -r .version) - LATEST=$(find dist -type f -iname "*-mac.zip" | xargs -0 -n1 -- basename) - # Encode spaces in the URL as Squirrel.Mac complains about bad JSON otherwise - URL="${{ inputs.base-url }}/update/macos/${LATEST// /%20}" - - jq -n --arg version "${VERSION:-$PKG_JSON_VERSION}" --arg url "$URL" ' - { - currentRelease: $version, - releases: [{ - version: $version, - updateTo: { - version: $version, - url: $url, - }, - }], - } - ' > dist/releases.json - jq -n --arg url "$URL" ' - { url: $url } - ' > dist/releases-legacy.json - env: - VERSION: ${{ inputs.version }} - - # We exclude mac-universal as the unpacked app takes forever to upload and zip and dmg already contains it - - name: Upload Artifacts - uses: actions/upload-artifact@v4 - with: - name: macos - path: | - dist - !dist/mac-universal/** - retention-days: 1 - - - name: Assert all required files are present - run: | - test -f ./dist/Element*.dmg - test -f ./dist/Element*-mac.zip - - test: - needs: build - uses: ./.github/workflows/build_test.yaml - with: - artifact: macos - runs-on: macos-14 - executable: /Users/runner/Applications/Element*.app/Contents/MacOS/Element* - # We need to mount the DMG and copy the app to the Applications folder as a mounted DMG is - # read-only and thus would not allow us to override the fuses as is required for Playwright. - prepare_cmd: | - hdiutil attach ./dist/*.dmg -mountpoint /Volumes/Element && - rsync -a /Volumes/Element/Element*.app ~/Applications/ && - hdiutil detach /Volumes/Element diff --git a/.github/workflows/build_prepare.yaml b/.github/workflows/build_prepare.yaml index 7e4011f..75e857d 100644 --- a/.github/workflows/build_prepare.yaml +++ b/.github/workflows/build_prepare.yaml @@ -10,44 +10,20 @@ on: type: string required: false description: "The version tag to fetch, or 'develop', will pick automatically if not passed" - nightly: - type: boolean - required: false - default: false - description: "Whether the build is a Nightly and to calculate the version strings new builds should use" - deploy: - type: boolean - required: false - default: false - description: "Whether the build should be deployed to production" - secrets: - # Required if `nightly` is set - CF_R2_ACCESS_KEY_ID: - required: false - # Required if `nightly` is set - CF_R2_TOKEN: - required: false outputs: - nightly-version: - description: "The version string the next Nightly should use, only output for nightly" - value: ${{ jobs.prepare.outputs.nightly-version }} packages-dir: - description: "The directory non-deb packages for this run should live in within packages.element.io" - value: ${{ inputs.nightly && 'nightly' || 'desktop' }} - # This is just a simple pass-through of the input to simplify reuse of complex inline conditions + description: "The directory non-deb packages for this run should live in" + value: "desktop" deploy: description: "Whether the build should be deployed to production" - value: ${{ inputs.deploy }} + value: false permissions: {} jobs: prepare: name: Prepare - environment: ${{ inputs.nightly && 'packages.element.io' || '' }} - runs-on: ubuntu-24.04 + runs-on: windows-gp permissions: contents: read - outputs: - nightly-version: ${{ steps.versions.outputs.nightly }} steps: - uses: actions/checkout@v4 @@ -62,81 +38,13 @@ jobs: - name: Fetch Element Web run: yarn run fetch --noverify -d ${{ inputs.config }} ${{ inputs.version }} - # We split this out to save the build_* scripts having to do it to make use of `hashFiles` in the cache action - name: Generate cache hash files run: | - # Add --no-sandbox as otherwise it fails because the helper isn't setuid root. It's only getting the version. yarn run --silent electron --no-sandbox --version > electronVersion cat package.json | jq -c .hakDependencies | sha1sum > hakHash find hak -type f -print0 | xargs -0 sha1sum >> hakHash find scripts/hak -type f -print0 | xargs -0 sha1sum >> hakHash - - name: "[Nightly] Calculate version" - id: versions - if: inputs.nightly - run: | - # Find all latest Nightly versions - aws s3 cp s3://$R2_BUCKET/nightly/update/macos/releases.json - --endpoint-url $R2_URL --region auto | jq -r .currentRelease >> VERSIONS - aws s3 cp s3://$R2_BUCKET/debian/dists/default/main/binary-amd64/Packages - --endpoint-url $R2_URL --region auto | grep "Package: element-nightly" -A 50 | grep Version -m1 | sed -n 's/Version: //p' >> VERSIONS - aws s3 cp s3://$R2_BUCKET/debian/dists/default/main/binary-arm64/Packages - --endpoint-url $R2_URL --region auto | grep "Package: element-nightly" -A 50 | grep Version -m1 | sed -n 's/Version: //p' >> VERSIONS - aws s3 cp s3://$R2_BUCKET/nightly/update/win32/x64/RELEASES - --endpoint-url $R2_URL --region auto | awk '{print $2}' | cut -d "-" -f 5 | cut -c 8- >> VERSIONS - aws s3 cp s3://$R2_BUCKET/nightly/update/win32/arm64/RELEASES - --endpoint-url $R2_URL --region auto | awk '{print $2}' | cut -d "-" -f 5 | cut -c 8- >> VERSIONS - - # Pick the greatest one - VERSION=$(cat VERSIONS | sort -uf | tail -n1) - echo "Found latest nightly version $VERSION" - # Increment it - echo "nightly=$(scripts/generate-nightly-version.ts --latest $VERSION)" >> $GITHUB_OUTPUT - env: - AWS_ACCESS_KEY_ID: ${{ secrets.CF_R2_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.CF_R2_TOKEN }} - R2_BUCKET: ${{ vars.R2_BUCKET }} - R2_URL: ${{ vars.CF_R2_S3_API }} - - - name: Check version - id: package - run: | - echo "version=$(cat package.json | jq -r .version)" >> $GITHUB_OUTPUT - - - name: "[Release] Fetch release" - id: release - if: ${{ !inputs.nightly && inputs.version != 'develop' }} - uses: cardinalby/git-get-release-action@cedef2faf69cb7c55b285bad07688d04430b7ada # v1 - env: - GITHUB_TOKEN: ${{ github.token }} - with: - tag: v${{ steps.package.outputs.version }} - - - name: "[Release] Write changelog" - if: ${{ !inputs.nightly && inputs.version != 'develop' }} - run: | - TIME=$(date -d "$PUBLISHED_AT" -R) - echo "element-desktop ($VERSION) default; urgency=medium" >> changelog.Debian - echo "$BODY" | sed 's/^##/\n */g;s/^\*/ */g' | perl -pe 's/\[.+?]\((.+?)\)/\1/g' >> changelog.Debian - echo "" >> changelog.Debian - echo " -- $ACTOR $TIME" >> changelog.Debian - env: - ACTOR: ${{ github.actor }} - VERSION: v${{ steps.package.outputs.version }} - BODY: ${{ steps.release.outputs.body }} - PUBLISHED_AT: ${{ steps.release.outputs.published_at }} - - - name: "[Nightly] Write summary" - if: inputs.nightly - run: | - BUNDLE_HASH=$(npx asar l webapp.asar | grep /bundles/ | head -n 1 | sed 's|.*/||') - WEBAPP_VERSION=$(./scripts/get-version.ts) - WEB_VERSION=${WEBAPP_VERSION:0:12} - JS_VERSION=${WEBAPP_VERSION:16:12} - - echo "### Nightly build ${{ steps.versions.outputs.nightly }}" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "| Component | Version |" >> $GITHUB_STEP_SUMMARY - echo "| ----------- | ------- |" >> $GITHUB_STEP_SUMMARY - echo "| Bundle Hash | $BUNDLE_HASH |" >> $GITHUB_STEP_SUMMARY - echo "| Element Web | [$WEB_VERSION](https://github.com/element-hq/element-web/commit/$WEB_VERSION) |" >> $GITHUB_STEP_SUMMARY - echo "| JS SDK | [$JS_VERSION](https://github.com/matrix-org/matrix-js-sdk/commit/$JS_VERSION) |" >> $GITHUB_STEP_SUMMARY - - uses: actions/upload-artifact@v4 with: name: webapp @@ -146,4 +54,3 @@ jobs: package.json electronVersion hakHash - changelog.Debian diff --git a/.github/workflows/build_windows.yaml b/.github/workflows/build_windows.yaml index 5e65314..baf40d4 100644 --- a/.github/workflows/build_windows.yaml +++ b/.github/workflows/build_windows.yaml @@ -33,7 +33,7 @@ on: permissions: {} # No permissions required jobs: build: - runs-on: windows-2025 + runs-on: windows-gp environment: ${{ inputs.sign && 'packages.element.io' || '' }} env: SIGNTOOL_PATH: "C:/Program Files (x86)/Windows Kits/10/bin/10.0.26100.0/x86/signtool.exe" @@ -106,6 +106,16 @@ jobs: - name: Install Deps run: "yarn install --frozen-lockfile" + - name: Append Piskot to version + run: | + $Version = $(Get-Content package.json | ConvertFrom-Json).version + if (-not $Version.EndsWith("-piskot")) { + $Version = "$Version-piskot" + $Package = Get-Content package.json | ConvertFrom-Json + $Package.version = $Version + $Package | ConvertTo-Json -Depth 100 | Set-Content package.json + } + - name: Insert config snippet if: steps.config.outputs.extra_config != '' shell: bash @@ -215,12 +225,4 @@ jobs: Test-Path './dist/squirrel-windows*/Element Setup*.exe' Test-Path './dist/squirrel-windows*/element-desktop-*-full.nupkg' Test-Path './dist/squirrel-windows*/RELEASES' - Test-Path './dist/Element*.msi' - - test: - needs: build - uses: ./.github/workflows/build_test.yaml - with: - artifact: win-${{ inputs.arch }} - runs-on: ${{ inputs.arch == 'arm64' && 'windows-11-arm' || 'windows-2022' }} - executable: ./dist/win*-unpacked/Element*.exe + Test-Path './dist/Element*.msi' \ No newline at end of file diff --git a/.github/workflows/dockerbuild.yaml b/.github/workflows/dockerbuild.yaml deleted file mode 100644 index c7390c3..0000000 --- a/.github/workflows/dockerbuild.yaml +++ /dev/null @@ -1,70 +0,0 @@ -name: Dockerbuild -on: - workflow_dispatch: {} - push: - branches: [master, staging, develop] - paths: - - "dockerbuild/**" - pull_request: -concurrency: ${{ github.workflow }}-${{ github.ref_name }} -env: - REGISTRY: ghcr.io - IMAGE_NAME: ${{ github.repository }}-dockerbuild -permissions: {} -jobs: - build: - name: Docker Build - runs-on: ubuntu-24.04 - permissions: - contents: read - packages: write - steps: - - uses: actions/checkout@v4 - - - name: Set up QEMU - uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3 - with: - install: true - - - name: Build test image - uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6 - with: - file: dockerbuild/Dockerfile - push: false - load: true - tags: element-desktop-dockerbuild - platforms: linux/amd64 - - - name: Test image - run: docker run -v $PWD:/project element-desktop-dockerbuild yarn install - - - name: Log in to the Container registry - uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 - if: github.event_name != 'pull_request' - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Extract metadata for Docker - id: meta - if: github.event_name != 'pull_request' - uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 # v5 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - tags: | - type=ref,event=branch - type=ref,event=pr - - - name: Build and push Docker image - if: github.event_name != 'pull_request' - uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6 - with: - file: dockerbuild/Dockerfile - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - platforms: linux/amd64,linux/arm64 diff --git a/.github/workflows/localazy_download.yaml b/.github/workflows/localazy_download.yaml deleted file mode 100644 index b8e948d..0000000 --- a/.github/workflows/localazy_download.yaml +++ /dev/null @@ -1,12 +0,0 @@ -name: Localazy Download -on: - workflow_dispatch: {} - schedule: - - cron: "0 6 * * 1,3,5" # Every Monday, Wednesday and Friday at 6am UTC -permissions: - pull-requests: write # needed to auto-approve PRs -jobs: - download: - uses: matrix-org/matrix-web-i18n/.github/workflows/localazy_download.yaml@main - secrets: - ELEMENT_BOT_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }} diff --git a/.github/workflows/localazy_upload.yaml b/.github/workflows/localazy_upload.yaml deleted file mode 100644 index 8cb7743..0000000 --- a/.github/workflows/localazy_upload.yaml +++ /dev/null @@ -1,12 +0,0 @@ -name: Localazy Upload -on: - push: - branches: [develop] - paths: - - "src/i18n/strings/en_EN.json" -permissions: {} # No permissions needed -jobs: - upload: - uses: matrix-org/matrix-web-i18n/.github/workflows/localazy_upload.yaml@main - secrets: - LOCALAZY_WRITE_KEY: ${{ secrets.LOCALAZY_WRITE_KEY }} diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml deleted file mode 100644 index 6d3bf51..0000000 --- a/.github/workflows/release-drafter.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: Release Drafter -on: - push: - branches: [staging] - workflow_dispatch: {} -concurrency: ${{ github.workflow }} -permissions: {} -jobs: - draft: - uses: matrix-org/matrix-js-sdk/.github/workflows/release-drafter-workflow.yml@develop - permissions: - contents: write - with: - include-changes: element-hq/element-web~$VERSION diff --git a/.github/workflows/release-gitflow.yml b/.github/workflows/release-gitflow.yml deleted file mode 100644 index 8192a0f..0000000 --- a/.github/workflows/release-gitflow.yml +++ /dev/null @@ -1,12 +0,0 @@ -# Gitflow merge-back master->develop -name: Merge master -> develop -on: - push: - branches: [master] -concurrency: ${{ github.repository }}-${{ github.workflow }} -permissions: {} # Uses ELEMENT_BOT_TOKEN -jobs: - merge: - uses: matrix-org/matrix-js-sdk/.github/workflows/release-gitflow.yml@develop - secrets: - ELEMENT_BOT_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }} diff --git a/.github/workflows/static_analysis.yaml b/.github/workflows/static_analysis.yaml deleted file mode 100644 index 5812b9b..0000000 --- a/.github/workflows/static_analysis.yaml +++ /dev/null @@ -1,85 +0,0 @@ -name: Static Analysis -on: - pull_request: {} - push: - branches: [develop, master] -permissions: {} # No permissions needed -jobs: - ts_lint: - name: "Typescript Syntax Check" - runs-on: ubuntu-24.04 - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-node@v4 - with: - node-version-file: package.json - cache: "yarn" - - # Does not need branch matching as only analyses this layer - - name: Install Deps - run: "yarn install --frozen-lockfile" - - - name: Typecheck - run: "yarn run lint:types" - - i18n_lint: - name: "i18n Check" - uses: matrix-org/matrix-web-i18n/.github/workflows/i18n_check.yml@main - permissions: - pull-requests: read - with: - hardcoded-words: "Element" - - js_lint: - name: "ESLint" - runs-on: ubuntu-24.04 - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-node@v4 - with: - node-version-file: package.json - cache: "yarn" - - # Does not need branch matching as only analyses this layer - - name: Install Deps - run: "yarn install --frozen-lockfile" - - - name: Run Linter - run: "yarn run lint:js" - - workflow_lint: - name: "Workflow Lint" - runs-on: ubuntu-24.04 - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-node@v4 - with: - node-version-file: package.json - cache: "yarn" - - # Does not need branch matching as only analyses this layer - - name: Install Deps - run: "yarn install --frozen-lockfile" - - - name: Run Linter - run: "yarn lint:workflows" - - analyse_dead_code: - name: "Analyse Dead Code" - runs-on: ubuntu-24.04 - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-node@v4 - with: - node-version-file: package.json - cache: "yarn" - - - name: Install Deps - run: "yarn install --frozen-lockfile" - - - name: Run linter - run: "yarn run lint:knip" diff --git a/.github/workflows/sync-labels.yml b/.github/workflows/sync-labels.yml deleted file mode 100644 index 54090ef..0000000 --- a/.github/workflows/sync-labels.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: Sync labels -on: - workflow_dispatch: {} - schedule: - - cron: "0 2 * * *" # 2am every day - push: - branches: - - develop - paths: - - .github/labels.yml -permissions: {} # Uses ELEMENT_BOT_TOKEN -jobs: - sync-labels: - uses: element-hq/element-meta/.github/workflows/sync-labels.yml@develop - with: - LABELS: | - element-hq/element-web - .github/labels.yml - DELETE: true - WET: true - secrets: - ELEMENT_BOT_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }} diff --git a/.github/workflows/triage-incoming.yml b/.github/workflows/triage-incoming.yml deleted file mode 100644 index 5b5c74a..0000000 --- a/.github/workflows/triage-incoming.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: Move new issues into Issue triage board - -on: - issues: - types: [opened] - -permissions: {} # Uses ELEMENT_BOT_TOKEN - -jobs: - automate-project-columns-next: - runs-on: ubuntu-24.04 - steps: - - uses: actions/add-to-project@main - with: - project-url: https://github.com/orgs/element-hq/projects/120 - github-token: ${{ secrets.ELEMENT_BOT_TOKEN }} diff --git a/.github/workflows/triage-labelled.yml b/.github/workflows/triage-labelled.yml deleted file mode 100644 index e4f03fa..0000000 --- a/.github/workflows/triage-labelled.yml +++ /dev/null @@ -1,12 +0,0 @@ -name: Move labelled issues to correct projects - -on: - issues: - types: [labeled] - -permissions: {} # Uses ELEMENT_BOT_TOKEN - -jobs: - call-triage-labelled: - uses: element-hq/element-web/.github/workflows/triage-labelled.yml@develop - secrets: inherit diff --git a/.github/workflows/triage-stale.yml b/.github/workflows/triage-stale.yml deleted file mode 100644 index 5921d92..0000000 --- a/.github/workflows/triage-stale.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: Close stale PRs -on: - workflow_dispatch: {} - schedule: - - cron: "30 1 * * *" -permissions: {} -jobs: - close: - runs-on: ubuntu-24.04 - permissions: - actions: write - issues: write - pull-requests: write - steps: - - uses: actions/stale@v9 - with: - operations-per-run: 250 - days-before-issue-stale: -1 - days-before-issue-close: -1 - days-before-pr-stale: 180 - days-before-pr-close: 0 - close-pr-message: "This PR has been automatically closed because it has been stale for 180 days. If you wish to continue working on this PR, please ping a maintainer to reopen it." diff --git a/config.json b/config.json new file mode 100644 index 0000000..a535a47 --- /dev/null +++ b/config.json @@ -0,0 +1,53 @@ +{ + "default_server_config": { + "m.homeserver": { + "base_url": "https://matrix.org", + "server_name": "matrix.org" + }, + "m.identity_server": { + "base_url": "https://vector.im" + } + }, + "disable_custom_urls": false, + "disable_guests": false, + "disable_login_language_selector": false, + "disable_3pid_login": false, + "force_verification": false, + "brand": "Element", + "integrations_ui_url": "https://scalar.vector.im/", + "integrations_rest_url": "https://scalar.vector.im/api", + "integrations_widgets_urls": [], + "default_widget_container_height": 280, + "default_country_code": "GB", + "show_labs_settings": true, + "features": { + "threadsActivityCentre": true, + "feature_video_rooms": true, + "feature_group_calls": true, + "feature_element_call_video_rooms": true + }, + "default_federate": true, + "default_theme": "light", + "room_directory": { + "servers": ["matrix.org"] + }, + "enable_presence_by_hs_url": { + "https://matrix.org": true, + "https://matrix-client.matrix.org": true, + "https://dev.element.piskot.si": true + }, + "setting_defaults": { + "breadcrumbs": true, + "showPresenceByDefault": true + }, + "jitsi": { + "preferred_domain": "meet.element.io" + }, + "element_call": { + "url": "https://call.element.io", + "participant_limit": 8, + "brand": "Element Call" + }, + "map_style_url": "https://api.maptiler.com/maps/streets/style.json?key=fU3vlMsMn4Jb6dnEIFsx", + "giphy_api_key": "rgvNLrQ9ZhguRGtN4pijScKbft0XLV8X" +} \ No newline at end of file diff --git a/package.json b/package.json index 497bca8..8987e99 100644 --- a/package.json +++ b/package.json @@ -1,15 +1,15 @@ { "name": "element-desktop", - "productName": "Element", + "productName": "Element Piskot", "main": "lib/electron-main.js", "exports": "./lib/electron-main.js", - "version": "1.11.97", + "version": "1.11.97-piskot", "description": "Element: the future of secure communication", "author": "Element", "homepage": "https://element.io", "repository": { "type": "git", - "url": "https://github.com/vector-im/element-desktop" + "url": "https://git.piskot.si/nikrozman/element-desktop" }, "license": "SEE LICENSE IN README.md", "type": "module",