diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index 6127c18..c09eabc 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -1,6 +1,11 @@ name: Build Docker run-name: Build Docker Images -on: [push] +on: + push: + branches: + - '*' + tags-ignore: + - '*' jobs: Build Master: @@ -21,10 +26,12 @@ jobs: run : | cd master echo "${{ secrets.DOCKERGIT_TOKEN }}" | docker login git.woodburn.au -u nathanwoodburn --password-stdin - tag_num=$(git rev-parse --short HEAD) echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" tag=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}} tag=${tag//\//-} + tag_num=${GITHUB_RUN_NUMBER} + echo "tag_num=$tag_num" + if [[ "$tag" == "main" ]]; then tag="latest" else @@ -60,10 +67,10 @@ jobs: run : | cd discord-bot echo "${{ secrets.DOCKERGIT_TOKEN }}" | docker login git.woodburn.au -u nathanwoodburn --password-stdin - tag_num=$(git rev-parse --short HEAD) echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" tag=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}} tag=${tag//\//-} + tag_num=${GITHUB_RUN_NUMBER} if [[ "$tag" == "main" ]]; then tag="latest" else @@ -74,5 +81,4 @@ jobs: docker tag hnshosting-bot:$tag_num git.woodburn.au/nathanwoodburn/hnshosting-bot:$tag_num docker push git.woodburn.au/nathanwoodburn/hnshosting-bot:$tag_num docker tag hnshosting-bot:$tag_num git.woodburn.au/nathanwoodburn/hnshosting-bot:$tag - docker push git.woodburn.au/nathanwoodburn/hnshosting-bot:$tag - \ No newline at end of file + docker push git.woodburn.au/nathanwoodburn/hnshosting-bot:$tag \ No newline at end of file diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml new file mode 100644 index 0000000..ce4c7e5 --- /dev/null +++ b/.gitea/workflows/release.yml @@ -0,0 +1,63 @@ +name: Build Docker for Release +run-name: Build Docker Images + +on: + push: + tags: + - '*' + +Build Master: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Install Docker + run : | + apt-get install ca-certificates curl gnupg + install -m 0755 -d /etc/apt/keyrings + curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg + chmod a+r /etc/apt/keyrings/docker.gpg + echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null + apt-get update + apt-get install docker-ce-cli -y + - name: Build Docker image + run : | + cd master + echo "${{ secrets.DOCKERGIT_TOKEN }}" | docker login git.woodburn.au -u nathanwoodburn --password-stdin + tag=${GITHUB_REF#refs/tags/} + + docker build -t hnshosting-master:release-$tag . + docker tag hnshosting-master:release-$tag git.woodburn.au/nathanwoodburn/hnshosting-master:release-$tag + docker push git.woodburn.au/nathanwoodburn/hnshosting-master:release-$tag + docker tag hnshosting-master:release-$tag git.woodburn.au/nathanwoodburn/hnshosting-master:release + docker push git.woodburn.au/nathanwoodburn/hnshosting-master:release + + + + + + Build Bot: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Install Docker + run : | + apt-get install ca-certificates curl gnupg + install -m 0755 -d /etc/apt/keyrings + curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg + chmod a+r /etc/apt/keyrings/docker.gpg + echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null + apt-get update + apt-get install docker-ce-cli -y + - name: Build Docker image + run : | + cd discord-bot + echo "${{ secrets.DOCKERGIT_TOKEN }}" | docker login git.woodburn.au -u nathanwoodburn --password-stdin + tag=${GITHUB_REF#refs/tags/} + + docker build -t hnshosting-bot:release-$tag . + docker tag hnshosting-bot:release-$tag git.woodburn.au/nathanwoodburn/hnshosting-bot:release-$tag + docker push git.woodburn.au/nathanwoodburn/hnshosting-bot:release-$tag + docker tag hnshosting-bot:release-$tag git.woodburn.au/nathanwoodburn/hnshosting-bot:release + docker push git.woodburn.au/nathanwoodburn/hnshosting-bot:release \ No newline at end of file diff --git a/discord-bot/bot.py b/discord-bot/bot.py index b7969a9..0450dbc 100644 --- a/discord-bot/bot.py +++ b/discord-bot/bot.py @@ -3,6 +3,7 @@ from dotenv import load_dotenv import discord from discord import app_commands import requests +import asyncio load_dotenv() TOKEN = os.getenv('DISCORD_TOKEN') @@ -69,7 +70,22 @@ async def createsite(ctx, domain: str, licence: str): if r.status_code == 200: json = r.json() if json['success'] == "true": - await ctx.response.send_message(f"Site {domain} creating...\nPlease wait a few minutes and then send /siteinfo domain:{domain}") + await ctx.response.send_message(f"Site {domain} creating...\nI'll send you a message when it's ready") + + ready = False + while ready == False: + ready = await check_site_ready(domain) + if ready == False: + await asyncio.sleep(5) + + r = requests.get(f"http://{Master_IP}:{Master_Port}/site-info?domain={domain}") + json = r.json() + if json['success'] == "true": + await ctx.user.send(f"Site {domain} is ready!\nHere is the site info for {json['domain']}\nA: `{json['ip']}`\nTLSA: `{json['tlsa']}`\nMake sure you put the TLSA in either `_443._tcp.{domain}` or `*.{domain}`") + else: + await ctx.user.send(f"Error getting site info\n" + json['error']) + + else: await ctx.response.send_message(f"Error creating site\n" + json['error']) else: @@ -88,6 +104,17 @@ async def siteinfo(ctx, domain: str): else: await ctx.response.send_message(f"Error getting site info\n" + r.text) +async def check_site_ready(domain): + r = requests.get(f"http://{Master_IP}:{Master_Port}/site-info?domain={domain}") + if r.status_code == 200: + json = r.json() + if json['success'] == "true": + return True + else: + return False + else: + return False + # When the bot is ready @client.event async def on_ready(): diff --git a/worker/install.sh b/worker/install.sh index 7a1a95b..04ca556 100644 --- a/worker/install.sh +++ b/worker/install.sh @@ -11,6 +11,7 @@ KERNEL_VERSION=$(uname -r) sudo apt-mark hold linux-image-generic linux-headers-generic linux-generic linux-image-$KERNEL_VERSION linux-headers-$KERNEL_VERSION # Install Docker +sudo apt update sudo apt install apt-transport-https ca-certificates curl software-properties-common python3-pip nginx -y curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null