-
Notifications
You must be signed in to change notification settings - Fork 0
81 lines (75 loc) · 3 KB
/
delete-preview-environment.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
name: Look for closed PR with label preview-environment
on:
workflow_dispatch:
schedule:
- cron: "0 * * * *"
concurrency: check_pr
jobs:
checks:
name: Check whether a closed PR has label preview-environment
runs-on: ubuntu-latest
steps:
- uses: actions/setup-node@v3
with:
node-version: 16
- name: Helm Installation
uses: azure/setup-helm@v3
- name: Install kubectl
uses: azure/setup-kubectl@v3
- name: install npm packages and kubernetes
run: |
npm install @kubernetes/client-node nodejs-helm bluebird git-clone
mkdir -p ~/.kube
echo "$KUBECONFIG_TEXT" > ~/.kube/config
chmod 600 ~/.kube/config
helm repo add searxng https://charts.searxng.org
helm repo update
env:
KUBECONFIG_TEXT: ${{secrets.KUBECONFIG_TEXT}}
- name: Check whether a closed PR has label preview-environment
uses: actions/github-script@v6
with:
github-token: ${{ secrets.GH_PAT }}
script: |
const k8s = require('@kubernetes/client-node');
const clone = require('git-clone/promise');
let Promise = require("bluebird");
const Helm = require("nodejs-helm").Helm;
let helm = Promise.promisifyAll(new Helm({helmCommand: "helm"}));
const kc = new k8s.KubeConfig();
kc.loadFromDefault();
const k8sApi = kc.makeApiClient(k8s.CoreV1Api);
const pullrequests = await github.rest.pulls.list({
owner: "searxng",
repo: "searxng",
per_page: 100,
state: "closed",
})
for (const pullrequest of pullrequests.data) {
if (pullrequest.labels.some(item => item.name === 'preview-environment')
|| pullrequest.labels.some(item => item.name === 'preview-environment-commented')) {
const prNumber = pullrequest.number;
var options = {
releaseName: 'searxng-preview',
namespace: `searxng-${prNumber}`
}
await helm.uninstallAsync(options);
await k8sApi.deleteNamespace(`searxng-${prNumber}`, {});
if (pullrequest.labels.some(item => item.name === 'preview-environment')) {
await github.rest.issues.removeLabel({
issue_number: prNumber,
owner: "searxng",
repo: "searxng",
name: 'preview-environment'
});
}
if (pullrequest.labels.some(item => item.name === 'preview-environment-commented')) {
await github.rest.issues.removeLabel({
issue_number: prNumber,
owner: "searxng",
repo: "searxng",
name: 'preview-environment-commented'
})
}
}
}