mirror of
https://github.com/gentoo-mirror/guru.git
synced 2026-10-13 02:01:25 -04:00
This commit replicates the CI/CD behavior we currently have on GitHub
by making the following changes:
- Jobs that used Actions were replaced with in-repo scripts. This
removes the dependency on GitHub and makes the overall pipeline more
forge-agnostic.
- rectalogic/notify-irc replaced with ./scripts/irc_notify.py
- pkgcore/pkgcheck-action replaced with ./scripts/pkgcheck.sh
- Actions that used `gh` (the GitHub CLI) were replaced with in-repo
scripts that perform the same action but with the Forgejo API.
- ./scripts/last_status.py to get the last status of a completed job
(e.g. succeeded, failed, canceled)
- ./scripts/last_successful_commit.py to get the last commit that had
a successful job
- Forgejo-specific changes
- Variables renamed from "github" to "forgejo" where appropriate
(though Forgejo lets you get away with keeping them as "github" to
make migration easier)
- Use ./.forgejo/ instead of ./.github/ -- this will simultaneously
keep the GitHub actions intact while also disabling the GitHub
actions from running in Forgejo
- Codeberg-specific changes
- Use codeberg-tiny-lazy shared runner for {duplicates,emails}.yml
- Use codeberg-medium-lazy shared runner for pkgcheck.yml
Signed-off-by: Dustin Smith <d.usty360@gmail.com>
Part-of: https://codeberg.org/gentoo/guru/pulls/30
Merges: https://codeberg.org/gentoo/guru/pulls/30
Signed-off-by: Thomas Bracht Laumann Jespersen <laumann@gentoo.org>
53 lines
1.6 KiB
Python
Executable File
53 lines
1.6 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
# A quick and dirty Python script to send a message to an IRC channel.
|
|
|
|
import os
|
|
import socket
|
|
import ssl
|
|
|
|
nick = bytes(os.getenv("IRC_NICK", "notguru-cicd"), "ascii")
|
|
host = os.getenv("IRC_HOST", "irc.libera.chat")
|
|
port = int(os.getenv("IRC_PORT", "6697"))
|
|
channel = bytes(os.getenv("IRC_CHANNEL", "##notgentoo-guru"), "ascii")
|
|
message = bytes(os.getenv("IRC_MESSAGE", "Howdy!"), "ascii")
|
|
context = ssl.create_default_context()
|
|
|
|
def main():
|
|
print("Connecting to IRC network...")
|
|
sock = socket.create_connection((host, port))
|
|
ssock = context.wrap_socket(sock, server_hostname=host)
|
|
|
|
# Let the server speak up first before we send anything
|
|
buf = ssock.recv()
|
|
if len(buf) == 0:
|
|
raise Exception("Unexpected disconnect")
|
|
|
|
# Identify ourselves to the server, then join a channel to send a message.
|
|
# We send VERSION last since the response (351) is predictable and used as
|
|
# an indicator that everything was received.
|
|
print("Sending commands...")
|
|
command = (
|
|
b"NICK " + nick + b"\n" +
|
|
b"USER " + nick + b" 0 0 :" + nick + b"\n" +
|
|
b"JOIN " + channel + b"\n" +
|
|
b"PRIVMSG " + channel + b" :" + message + b"\n" +
|
|
b"VERSION\n"
|
|
)
|
|
ssock.sendall(command)
|
|
|
|
print("Waiting for response...")
|
|
while True:
|
|
buf = ssock.recv()
|
|
if len(buf) == 0:
|
|
raise Exception("Unexpected disconnect")
|
|
|
|
lines = buf.split(b"\n")
|
|
for line in lines:
|
|
parts = line.split()
|
|
if len(parts) > 1 and parts[1] == b"351":
|
|
print("Message sent!")
|
|
return
|
|
|
|
main()
|