diff --git a/scripts/beefhaving_video.groovy b/scripts/beefhaving_video.groovy index 8ad1dfb..0231531 100644 --- a/scripts/beefhaving_video.groovy +++ b/scripts/beefhaving_video.groovy @@ -1 +1,94 @@ -//TODO +pipeline { + agent any + parameters { + string(name: 'videoname', description: "video name") + string(name: 'videodesc', description: "video description") + } + environment { + GITEATOKEN = credentials('d0e86441-2157-405f-8539-a9a9010c6ecf') + JENKINSMATRIX=credentials('040b63d1-2f14-4692-badb-114bddd7c5a5') + } + + stages { + stage("environment setup") { + steps{ + script{ + if (videoname.isEmpty()) { + error("videoname mandatory") + } + if (videoname.contains(' ')) { + error("videoname cannot have spaces. try dashes.") + } + } + } + } + stage("create gitea project"){ + steps{ + sh """ + curl -X 'POST' \ + 'https://gitea.arg.rip/api/v1/repos/beefhavers/_videotemplate/generate' \ + -H 'accept: application/json' \ + -H 'Authorization: token ${env.GITEATOKEN}' \ + -H 'Content-Type: application/json' \ + -d '{ + "description": "${videodesc}", + "git_content": true, + "git_hooks": true, + "labels": true, + "name": "${videoname}", + "owner": "beefhavers", + "private": false, + "protected_branch": true, + "topics": true, + "webhooks": true + }' + """ + } + } + stage("create matrix room"){ + steps{ + env.roomId=sh(returnStdout: true, script: """curl -X 'POST' \ + 'https://greyn.club:8448/_matrix/client/v3/createRoom' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ${JENKINSMATRIX}}' \ + -H 'Content-Type: application/json' \ + -d '{ + "creation_content": { + "m.federate": false + }, + "name": "${videoname}", + "preset": "public_chat", + "invite": ["@adam:greyn.club", "@gitea:greyn.club"], + "topic": "[link to gitea project]" + }' | jq .room_id + """).trim() + } + stage("link gitea webhook"){ + steps{ + sh """ + curl -X 'GET' 'https://gitea.arg.rip/api/v1/repos/beefhavers/${videoname}/hooks' \ + -H 'accept: application/json' \ + -H 'authorization: token ${env.GITEATOKEN}' \ + >reporesponse.json + """ + + sh """ + curl -X 'PATCH' 'https://gitea.arg.rip/api/v1/repos/beefhavers/${videoname}/hooks' \ + -H 'accept: application/json' \ + -H 'authorization: token ${env.GITEATOKEN}' \ + -H 'Content-Type: application/json' \ + -d '{ + "active": true, + "authorization_header": $$(cat reporesponse.json | jq .[0].authorization_header), + "branch_filter": "*", + "config": { + "content_type": "json", + "url": "https://greyn.club:8448/_matrix/client/r0/rooms/$$(echo ${env.roomId} | sed 's/!/%21/')/send/m.room.message" + }, + "events": $$(cat reporesponse.json | jq .[0].events) + }' + """ + } + } + } +} \ No newline at end of file