pipeline { agent any parameters { string(name: 'videoname', description: "video name") string(name: 'videodesc', description: "video description") } environment { JENKINSONGITEA=credentials('d0e86441-2157-405f-8539-a9a9010c6ecf') JENKINSONMATRIXTOKEN=credentials('17d18fd7-29eb-4957-9532-ce42aaa9b4ec') GITEAONMATRIXTOKEN=credentials('10bc888a-cb19-456e-b793-f85ee465d58e') } 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{ script{ env.giteaCreateEvent=sh(returnStdout: true, script: """ curl -X 'POST' \ 'https://gitea.arg.rip/api/v1/repos/beefhavers/_videotemplate/generate' \ -H 'accept: application/json' \ -H 'Authorization: token ${env.JENKINSONGITEA}' \ -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 }' """).trim() if (!env.giteaCreateEvent?.trim()) { error "couldn't make gitea repo, apparently" } } } } stage("create matrix room"){ steps{ script{ env.roomcreationevent=sh(returnStdout: true, script: """ curl -X 'POST' \ 'https://greyn.club:8448/_matrix/client/v3/createRoom' \ -H 'accept: application/json' \ -H 'Authorization: Bearer ${JENKINSONMATRIXTOKEN}' \ -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]" }' """ ).trim() if (!env.roomcreationevent?.trim()) { error "couldn't make matrix room, apparently" } echo "roomcreationevent:" echo env.roomcreationevent def jsonObj = readJSON text: env.roomcreationevent env.room_id =jsonObj.room_id if(!env.room_id?.trim()){ error "couldn't make matrix room, apparently" } env.spaceaddevent=sh(returnStdout: true, script: """ curl -X 'PUT' 'https://greyn.club:8448/_matrix/client/r0/rooms/!xLgVvcqtVzquTkCQGx:greyn.club/state/m.space.child/${env.room_id}' \ -H 'accept: application/json' \ -H 'Authorization: Bearer ${JENKINSONMATRIXTOKEN}' \ -H 'Content-Type: application/json' \ -d '{ "via": ["greyn.club"] }' """).trim() echo "spaceaddevent:" echo env.spaceaddevent env.elevatePrivsEvent=sh(returnStdout: true, script: """ curl -X 'PUT' 'https://greyn.club:8448/_matrix/client/v3/rooms/${env.room_id}/state/m.room.power_levels' \ -H 'accept: application/json' \ -H 'Authorization: Bearer ${JENKINSONMATRIXTOKEN}' \ -H 'Content-Type: application/json' \ -d '{ "users": { "@adam:greyn.club": 100 } }' """).trim() echo "elevatePrivsEvent:" echo env.elevatePrivsEvent } } } stage("link gitea webhook"){ steps{ error "this doesn't work, idk why" sh """ curl -X 'GET' 'https://gitea.arg.rip/api/v1/repos/beefhavers/${videoname}/hooks' \ -H 'accept: application/json' \ -H 'authorization: token ${env.JENKINSONGITEA}' \ >reporesponse.json """ sh """ curl -X 'PATCH' 'https://gitea.arg.rip/api/v1/repos/beefhavers/${videoname}/hooks' \ -H 'accept: application/json' \ -H 'authorization: token ${env.JENKINSONGITEA}' \ -H 'Content-Type: application/json' \ -d '{ "active": true, "authorization_header": "Bearer ${env.GITEAONMATRIXTOKEN}", "branch_filter": "*", "config": { "content_type": "json", "url": "https://greyn.club:8448/_matrix/client/r0/rooms/\$(echo ${env.room_id} | sed 's/!/%21/')/send/m.room.message" }, "events": \$(cat reporesponse.json | jq .[0].events) }' """ } } } }