diff --git a/.github/workflows/test-and-build.yml b/.github/workflows/test-and-build.yml index d8fb820..6b83d26 100644 --- a/.github/workflows/test-and-build.yml +++ b/.github/workflows/test-and-build.yml @@ -85,4 +85,106 @@ jobs: draft: false generateReleaseNotes: false + database-integration: + # Only execute db-server integration tests when sqlite based tests did run successfully + needs: [test-and-build] + + defaults: + run: + shell: bash + + container: + image: luzifer/archlinux + env: + CGO_ENABLED: 0 + GOPATH: /go + + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + database: [mariadb, mysql, postgres] + + services: + mariadb: + image: mariadb:11 + env: + MYSQL_PASSWORD: twitch-bot-pass + MYSQL_ROOT_PASSWORD: root-pass + MYSQL_USER: twitch-bot + + mysql: + image: mysql:8 + env: + MYSQL_PASSWORD: twitch-bot-pass + MYSQL_ROOT_PASSWORD: root-pass + MYSQL_USER: twitch-bot + + postgres: + image: postgres:15 + env: + POSTGRES_PASSWORD: twitch-bot-pass + + steps: + - name: Enable custom AUR package repo + run: echo -e "[luzifer]\nSigLevel = Never\nServer = https://archrepo.hub.luzifer.io/\$arch" >>/etc/pacman.conf + + - name: Install required packages + run: | + pacman -Syy --noconfirm \ + docker \ + git \ + go \ + make \ + mariadb-clients + + - uses: actions/checkout@v3 + + - name: Marking workdir safe + run: git config --global --add safe.directory /__w/twitch-bot/twitch-bot + + # --- MySQL + + - name: Set up MySQL service + if: matrix.database == 'mysql' + run: | + mariadb -h mysql -u root --password=root-pass <