push token to woodpecker

This commit is contained in:
Histausse 2023-05-23 12:57:07 +02:00
parent 721d134c6a
commit d6e0d933d8

View file

@ -2,6 +2,7 @@ import subprocess
import http.client import http.client
import json import json
import os import os
from base64 import b64encode
REMOVE_PATHS = [ REMOVE_PATHS = [
{% if cookiecutter.open_source_license == "Proprietary" %} "LICENSE", {% endif %} {% if cookiecutter.open_source_license == "Proprietary" %} "LICENSE", {% endif %}
@ -66,10 +67,46 @@ def get_new_gitea_token(
print( print(
f"\033[38;2;255;0;0mInvalid response from gitea while creating a new token: {status} ({response.reason})\033[0m" f"\033[38;2;255;0;0mInvalid response from gitea while creating a new token: {status} ({response.reason})\033[0m"
) )
print(response.read())
exit(1) exit(1)
data = json.load(response) data = json.load(response)
return data["sha1"] return data["sha1"]
def push_woodpecker_secret(
connection: http.client.HTTPSConnection,
repo: str,
secret_name: str,
secret: str,
woodpecker_token: str,
images: list[str] | None = None
):
if images is None: images = []
connection.request(
"POST",
f"/api/repos/{repo}/secrets",
json.dumps(
{
"name": secret_name,
"value": secret,
"image": images,
"event": ["push", "tag"],
}
),
{
"Authorization": f"Bearer {woodpecker_token}",
"content-type": "application/json",
},
)
response = connection.getresponse()
status = response.status
if status != 200:
print(
f"\033[38;2;255;0;0mInvalid response from woodpecker when sending a new secret: {status} ({response.reason})\033[0m"
)
print(response.read())
exit(1)
response.read()
if {{cookiecutter.generate_gitea_project}}: if {{cookiecutter.generate_gitea_project}}:
try: try:
@ -100,15 +137,16 @@ if {{cookiecutter.generate_gitea_project}} and {{cookiecutter.configure_ci}}:
) )
connection_gitea = http.client.HTTPSConnection("git.pains-perdus.fr") connection_gitea = http.client.HTTPSConnection("git.pains-perdus.fr")
GITEA_API_KEY = get_new_gitea_token(connection_gitea, "CI {{ cookiecutter.git_user }}/{{ cookiecutter.project_slug }}", "{{ cookiecutter.git_user }}", GITEA_API_KEY) GITEA_API_KEY = get_new_gitea_token(connection_gitea, "CI {{ cookiecutter.git_user }}/{{ cookiecutter.project_slug }}", "{{ cookiecutter.git_user }}", GITEA_API_KEY)
API_KEY = get_secret("Woodpecker Token") WOODPECKER_API_KEY = get_secret("Woodpecker Token")
WOODPECKER_SERVER = "{{ cookiecutter.woodpecker_server }}".removeprefix("https://") WOODPECKER_SERVER = "{{ cookiecutter.woodpecker_server }}".removeprefix("https://")
origin = "{{ cookiecutter.git_origin }}" origin = "{{ cookiecutter.git_origin }}"
repo = "/".join(origin.removesuffix(".git").split(":")[-1].split("/")[-2:]) repo = "/".join(origin.removesuffix(".git").split(":")[-1].split("/")[-2:])
connection = http.client.HTTPSConnection(WOODPECKER_SERVER) connection = http.client.HTTPSConnection(WOODPECKER_SERVER)
connection.request( connection.request(
"GET", "GET",
"/api/user/repos?all=true&flush=true", "/api/user/repos?all=true&flush=true",
headers={"Authorization": f"Bearer {API_KEY}"}, headers={"Authorization": f"Bearer {WOODPECKER_API_KEY}"},
) )
response = connection.getresponse() response = connection.getresponse()
status = response.status status = response.status
@ -123,7 +161,7 @@ if {{cookiecutter.generate_gitea_project}} and {{cookiecutter.configure_ci}}:
"POST", "POST",
f"/api/repos/{repo}", f"/api/repos/{repo}",
headers={ headers={
"Authorization": f"Bearer {API_KEY}", "Authorization": f"Bearer {WOODPECKER_API_KEY}",
"referer": f"https://{WOODPECKER_SERVER}/repo/add", "referer": f"https://{WOODPECKER_SERVER}/repo/add",
}, },
) )
@ -133,25 +171,17 @@ if {{cookiecutter.generate_gitea_project}} and {{cookiecutter.configure_ci}}:
print( print(
f"\033[38;2;255;0;0mInvalid response from woodpecker while linking repo: {status} ({response.reason})\033[0m" f"\033[38;2;255;0;0mInvalid response from woodpecker while linking repo: {status} ({response.reason})\033[0m"
) )
print(response.read())
exit(1) exit(1)
response.read()
push_woodpecker_secret(
connection,
repo,
"gitea_token",
GITEA_API_KEY,
WOODPECKER_API_KEY
)
if {{cookiecutter.generate_gitea_project}}: if {{cookiecutter.generate_gitea_project}}:
subprocess.call(["git", "remote", "add", "origin", "{{ cookiecutter.git_origin }}"]) subprocess.call(["git", "remote", "add", "origin", "{{ cookiecutter.git_origin }}"])
subpr def get_new_gitea_token(): subprocess.call(["git", "push", "-u", "origin", "main"])
""""""
connection.request(
"POST",
f"/api/repos/{repo}/secrets",
json.dumps(
{
"name": "test_token",
"value": "loren ispum",
"image": ["test"],
"event": ["push", "tag"],
}
),
{
"Authorization": f"Bearer {API_KEY}",
"content-type": "application/json",
},
)ocess.call(["git", "push", "-u", "origin", "main"])