documentation/.github/workflows/add-instance-updown.yml

117 lines
5.2 KiB
YAML
Raw Normal View History

2024-04-22 00:03:29 +02:00
name: Add instance to updown.io
on:
issues:
types: [opened, reopened]
jobs:
replycomment:
runs-on: ubuntu-latest
permissions: write-all
steps:
- uses: actions/checkout@v3
if: contains(github.event.issue.labels.*.name, 'instance-add')
- uses: actions/setup-node@v3
if: contains(github.event.issue.labels.*.name, 'instance-add')
with:
node-version: 16
2024-04-22 00:07:13 +02:00
- run: npm install request linkifyjs
if: contains(github.event.issue.labels.*.name, 'instance-add')
- uses: actions/github-script@v6
if: contains(github.event.issue.labels.*.name, 'instance-add')
with:
script: |
var issueInfo = (await github.rest.issues.get({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
})).data;
var linkify = require("linkifyjs");
var issueTitleParseUrl = linkify.find(issueInfo.title);
if (issueTitleParseUrl.length !== 0) {
if (issueInfo.title.includes(".onion") || issueInfo.title.includes(".ip2")) {
var replyComment =
['Hello! I have detected that you are requesting to add an onion or I2P URL.',
'Please create a pull request instead for adding your onion or I2P url as an alternative to your clearnet URL: https://github.com/iv-org/documentation/edit/master/docs/instances.md'
].join('\n');
await github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: replyComment
});
await github.rest.issues.update({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
state: 'closed'
});
}
else {
var instanceHostname = (new URL(issueTitleParseUrl[0].href)).hostname;
var request = require("request");
var optionsAddNewCheck = { method: 'POST',
url: 'https://updown.io/api/checks?api-key=${{ secrets.UPDOWN_API_KEY }}',
json:true,
headers:
{ 'content-type': 'application/x-www-form-urlencoded' },
form:
{ url: 'https://' + instanceHostname,
period: '300',
mute_until: 'forever',
published: 'true',
apdex_t: '1.0',
alias: instanceHostname,
string_match: 'An alternative front-end to YouTube' } };
request(optionsAddNewCheck, async function (error, response, body) {
if (error) throw new Error(error);
if (body.token) {
var replyComment =
['Hello! Your instance has been added to our monitoring system: https://updown.io/' + body.token,
'You need to wait 30 days before we add your instance, this is to evaluate that your instance will keep a good uptime for one month.',
'',
'Make sure you double checked all the mandatory checks or this will slow down the process of adding your instance!',
'',
'Please consult these two important tutorials:',
'',
'- Escaping the YouTube block ([403 errors in playback](https://github.com/iv-org/invidious/issues/4045)): https://docs.invidious.io/ipv6-rotator/',
'',
'- Improving the performance and the stability of your public instance: https://docs.invidious.io/improve-public-instance/',
'',
'It is highly recommended to follow these tutorials because it will allow the instance to stay stable and performant over the long term.',
].join('\n');
await github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: replyComment
})
await github.rest.issues.addLabels({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
labels: ['wait-30-days']
})
}
});
}
}
else {
var replyComment =
['Domain not detected in the title, please edit the title by correcting it like this:',
'Issue title example: `[New instance] https://myinstance.com`'
].join('\n');
await github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: replyComment
})
}