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) }' """ } } } }