mirror of
https://github.com/element-hq/element-web
synced 2024-11-22 17:25:50 +03:00
Utility automation for updating topics as part of release process (#25725)
This commit is contained in:
parent
93c17104f1
commit
ccb0a306c8
1 changed files with 72 additions and 0 deletions
72
.github/workflows/update-topics.yaml
vendored
Normal file
72
.github/workflows/update-topics.yaml
vendored
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
name: Update release topics
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
expected_status:
|
||||||
|
description: What type of release is the next expected release
|
||||||
|
required: true
|
||||||
|
default: RC
|
||||||
|
type: choice
|
||||||
|
options:
|
||||||
|
- RC
|
||||||
|
- Release
|
||||||
|
expected_date:
|
||||||
|
description: Expected release date e.g. July 11th
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
concurrency: ${{ github.workflow }}
|
||||||
|
jobs:
|
||||||
|
bot:
|
||||||
|
name: Release topic update
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
environment: Matrix
|
||||||
|
steps:
|
||||||
|
- id: stable
|
||||||
|
uses: fangqiuming/latest-release-version@45b2da0e20968cd18c356c548d3c5ccb7318bb8f
|
||||||
|
|
||||||
|
- uses: actions/github-script@v6
|
||||||
|
env:
|
||||||
|
HS_URL: ${{ secrets.BETABOT_HS_URL }}
|
||||||
|
LOBBY_ROOM_ID: ${{ secrets.ROOM_ID }}
|
||||||
|
PUBLIC_ROOM_ID: "!YTvKGNlinIzlkMTVRl:matrix.org"
|
||||||
|
ANNOUNCEMENT_ROOM_ID: "!bijaLdadorKgNGtHdA:matrix.org"
|
||||||
|
TOKEN: ${{ secrets.BETABOT_ACCESS_TOKEN }}
|
||||||
|
RELEASE_TOPIC: "Stable: v${{ steps.stable.outputs.tag_name }} | Release status: ${{ inputs.expected_status }} expected ${{ inputs.expected_date }}"
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
const { HS_URL, TOKEN, RELEASE_TOPIC, LOBBY_ROOM_ID, PUBLIC_ROOM_ID, ANNOUNCEMENT_ROOM_ID } = process.env;
|
||||||
|
|
||||||
|
const regex = /Stable: v(\d+.\d+.\d+) \| Release status: (\w+) expected (\w+ \d+\w+)/gm;
|
||||||
|
|
||||||
|
async function updateReleaseInTopic(roomId) {
|
||||||
|
const apiUrl = `${HS_URL}/_matrix/client/v3/rooms/${roomId}/state/m.room.topic/`;
|
||||||
|
const headers = {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
"Authorization": `Bearer ${TOKEN}`,
|
||||||
|
};
|
||||||
|
const res = await fetch(apiUrl, {
|
||||||
|
method: "GET",
|
||||||
|
headers,
|
||||||
|
});
|
||||||
|
|
||||||
|
const data = await res.json();
|
||||||
|
const topic = data.topic.replace(regex, RELEASE_TOPIC);
|
||||||
|
if (topic === data.topic) {
|
||||||
|
console.log(roomId, "nothing to do");
|
||||||
|
}
|
||||||
|
|
||||||
|
await fetch(apiUrl, {
|
||||||
|
method: "PUT",
|
||||||
|
body: {
|
||||||
|
...data,
|
||||||
|
topic,
|
||||||
|
},
|
||||||
|
headers,
|
||||||
|
});
|
||||||
|
console.log(roomId, "topic updated");
|
||||||
|
}
|
||||||
|
|
||||||
|
await updateReleaseInTopic(LOBBY_ROOM_ID);
|
||||||
|
|
||||||
|
# await updateReleaseInTopic(PUBLIC_ROOM_ID);
|
||||||
|
# await updateReleaseInTopic(ANNOUNCEMENT_ROOM_ID);
|
Loading…
Reference in a new issue