Compare commits

...

8 commits

Author SHA1 Message Date
9e2510ec09
prepare release v3.23.1 2023-12-20 21:00:02 +01:00
552e7c9f10
[CI] Fix: Prevent tag collision in CI
Signed-off-by: Knut Ahlers <knut@ahlers.me>
2023-12-20 20:59:21 +01:00
d8cd131edd
prepare release v3.23.0 2023-12-20 20:39:47 +01:00
24aa1b5d67
[quote] Fix: Add primary key to quote table
in order to allow migrating them using copy-database

Signed-off-by: Knut Ahlers <knut@ahlers.me>
2023-12-17 14:39:33 +01:00
2772286b71
[editor] Improve wording and visibility for bot connection
Signed-off-by: Knut Ahlers <knut@ahlers.me>
2023-12-17 13:29:53 +01:00
8b3d3bdc98
[eventsub] Fix: Stop subscription-retries when client is closed
Signed-off-by: Knut Ahlers <knut@ahlers.me>
2023-12-16 12:52:54 +01:00
12f16db1ac
[ci] Update checkout action
Signed-off-by: Knut Ahlers <knut@ahlers.me>
2023-12-15 14:08:45 +01:00
7da8b9ffa4
[ci] Replace build script with more simple version
Signed-off-by: Knut Ahlers <knut@ahlers.me>
2023-12-15 13:49:01 +01:00
7 changed files with 102 additions and 17 deletions

View file

@ -36,6 +36,7 @@ jobs:
curl \
diffutils \
git \
git-lfs \
go \
golangci-lint-bin \
make \
@ -47,22 +48,20 @@ jobs:
which \
zip
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
lfs: true
show-progress: false
- name: Marking workdir safe
run: git config --global --add safe.directory /__w/twitch-bot/twitch-bot
run: |
git config --global --add safe.directory /__w/twitch-bot/twitch-bot
- name: Lint and test code
run: make lint test frontend_lint
- name: Build release
run: make publish
env:
FORCE_SKIP_UPLOAD: 'true'
MOD_MODE: readonly
NODE_ENV: production
NO_TESTS: 'true'
PACKAGES: '.'
- name: Execute Trivy scan
run: make trivy

View file

@ -1,3 +1,20 @@
# 3.23.1 / 2023-12-20
* Bugfixes
* [CI] Fix: Prevent tag collision in CI
# 3.23.0 / 2023-12-20
> [!NOTE]
> This release slightly changes the way release binaries are packaged: The binary is now named `twitch-bot` instead of i.e. `twitch-bot_linux_amd64` within the archives.
* Improvements
* [editor] Improve wording and visibility for bot connection
* Bugfixes
* [quote] Fix: Add primary key to quote table
* [eventsub] Fix: Stop subscription-retries when client is closed
# 3.22.0 / 2023-12-14
* Improvements

View file

@ -13,8 +13,7 @@ lint:
golangci-lint run
publish: frontend_prod
curl -sSLo golang.sh https://raw.githubusercontent.com/Luzifer/github-publish/master/golang.sh
bash golang.sh
bash ./ci/build.sh
test:
go test -cover -v ./...

63
ci/build.sh Normal file
View file

@ -0,0 +1,63 @@
#!/usr/bin/env bash
set -euo pipefail
osarch=(
darwin/amd64
darwin/arm64
linux/amd64
linux/arm
linux/arm64
windows/amd64
)
function go_package() {
cd "${4}"
local outname="${3}"
[[ $1 == windows ]] && outname="${3}.exe"
log "=> Building ${3} for ${1}/${2}..."
CGO_ENABLED=0 GOARCH=$2 GOOS=$1 go build \
-ldflags "-s -w -X main.version=${version}" \
-mod=readonly \
-trimpath \
-o "${outname}"
if [[ $1 == linux ]]; then
log "=> Packging ${3} as ${3}_${1}_${2}.tgz..."
tar -czf "${builddir}/${3}_${1}_${2}.tgz" "${outname}"
else
log "=> Packging ${3} as ${3}_${1}_${2}.zip..."
zip "${builddir}/${3}_${1}_${2}.zip" "${outname}"
fi
rm "${outname}"
}
function go_package_all() {
for oa in "${osarch[@]}"; do
local os=$(cut -d / -f 1 <<<"${oa}")
local arch=$(cut -d / -f 2 <<<"${oa}")
(go_package "${os}" "${arch}" "${1}" "${2}")
done
}
function log() {
echo "[$(date +%H:%M:%S)] $@" >&2
}
root=$(pwd)
builddir="${root}/.build"
version="$(git describe --tags --always || echo dev)"
log "Building version ${version}..."
log "Resetting output directory..."
rm -rf "${builddir}"
mkdir -p "${builddir}"
log "Building Bot..."
go_package_all "twitch-bot" "."
log "Generating SHA256SUMS file..."
(cd "${builddir}" && sha256sum * | tee SHA256SUMS)

View file

@ -13,6 +13,7 @@ import (
type (
quote struct {
ID uint64 `gorm:"primaryKey"`
Channel string `gorm:"not null;uniqueIndex:ensure_sort_idx;size:32"`
CreatedAt int64 `gorm:"uniqueIndex:ensure_sort_idx"`
Quote string
@ -22,7 +23,7 @@ type (
func AddQuote(db database.Connector, channel, quoteStr string) error {
return errors.Wrap(
helpers.RetryTransaction(db.DB(), func(tx *gorm.DB) error {
return tx.Create(quote{
return tx.Create(&quote{
Channel: channel,
CreatedAt: time.Now().UnixNano(),
Quote: quoteStr,
@ -121,7 +122,7 @@ func SetQuotes(db database.Connector, channel string, quotes []string) error {
t := time.Now()
for _, quoteStr := range quotes {
if err := tx.Create(quote{
if err := tx.Create(&quote{
Channel: channel,
CreatedAt: t.UnixNano(),
Quote: quoteStr,

View file

@ -421,6 +421,12 @@ func (e *EventSubSocketClient) retryBackgroundSubscribe(st eventSubSocketSubscri
WithMaxTotalTime(retrySubscribeMaxTotal).
WithMinIterationTime(retrySubscribeMinWait).
Retry(func() error {
if err := e.runCtx.Err(); err != nil {
// Our run-context was cancelled, stop retrying to subscribe
// to topics as this client was closed
return backoff.NewErrCannotRetry(err)
}
return e.subscribe(st)
})
if err != nil {

View file

@ -273,24 +273,24 @@
<b-card-body>
<p>
Here you can manage your bots auth-token: it's required to communicate with Twitch Chat and APIs. This will override the token you might have provided when starting the bot and will be automatically renewed as long as you don't change your password or revoke the apps permission on your bot account.
Here you can manage your bots auth-token: it's required to communicate with Twitch Chat and APIs. The access will be valid as long as you don't change the password or revoke the apps permission in your bot account.
</p>
<ul>
<li>Copy the URL provided below</li>
<li>Open an inkognito tab or different browser you are not logged into Twitch or are logged in with your bot account</li>
<li><strong>Open an inkognito tab or different browser you are not logged into Twitch or are logged in with your bot account</strong></li>
<li>Open the copied URL, sign in with the bot account and accept the permissions</li>
<li>The bot will display a message containing the authorized account. If this account is wrong, just start over, the token will be overwritten.</li>
<li>You will see a message containing the authorized account. If this account is wrong, just start over, the token will be overwritten.</li>
</ul>
<p
v-if="botMissingScopes > 0"
class="text-warning"
class="alert alert-warning"
>
<font-awesome-icon
fixed-width
class="mr-1"
:icon="['fas', 'exclamation-triangle']"
/>
Bot is missing {{ botMissingScopes }} of its default scopes, please re-authorize the bot.
Bot is missing {{ botMissingScopes }} of its required scopes which will cause features not to work properly. Please re-authorize the bot using the URL below.
</p>
<b-input-group>
<b-form-input