--- name: test-and-build on: push: branches-ignore: - stable tags: - 'v*' permissions: contents: write jobs: test-and-build: defaults: run: shell: bash container: image: luzifer/archlinux env: CGO_ENABLED: 0 GOPATH: /go runs-on: ubuntu-latest 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 \ awk \ curl \ diffutils \ git \ go \ golangci-lint-bin \ make \ nodejs-lts-hydrogen \ npm \ tar \ trivy \ unzip \ which \ zip - uses: actions/checkout@v3 - name: Marking workdir safe 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 - name: Extract changelog run: 'awk "/^#/ && ++c==2{exit}; /^#/f" "History.md" | tail -n +2 >release_changelog.md' - name: Update stable branch if: startsWith(github.ref, 'refs/tags/') run: | git branch -f stable ${GITHUB_SHA} git push -f origin stable - name: Release uses: ncipollo/release-action@v1 if: startsWith(github.ref, 'refs/tags/') with: artifacts: '.build/*' bodyFile: release_changelog.md 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 <