push token to woodpecker
This commit is contained in:
parent
721d134c6a
commit
d6e0d933d8
|
@ -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"])
|
|
||||||
|
|
Loading…
Reference in a new issue