feat: use subscriptions for community rewards page #371
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Docker v3 | |
on: | |
push: | |
branches: | |
- main | |
workflow_dispatch: | |
inputs: | |
skip-change-detect: | |
type: boolean | |
description: Skip detection of change (force build) | |
jobs: | |
build-matrix: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
folders: | |
- apps/api | |
- apps/api-gql | |
- apps/bots | |
- apps/discord | |
- apps/emotes-cacher | |
- apps/eval | |
- apps/events | |
- apps/eventsub | |
- apps/integrations | |
- apps/parser | |
- apps/scheduler | |
- apps/timers | |
- apps/tokens | |
- apps/websockets | |
- apps/ytsr | |
- frontend/dashboard | |
- frontend/overlays | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Sets the folder and application names for the build | |
id: set-folder | |
run: | | |
echo "folder=$(dirname ${{ matrix.folders }})" >> $GITHUB_ENV | |
echo "app=$(basename ${{ matrix.folders }})" >> $GITHUB_ENV | |
- name: Get changed files | |
id: changed-files | |
uses: tj-actions/changed-files@v45 | |
with: | |
files: | | |
${{ env.folder }}/${{ env.app }}/** | |
libs/** | |
- uses: oven-sh/setup-bun@v2 | |
with: | |
bun-version-file: ".bun-version" | |
- name: Cache node_modules | |
id: cache-node_modules | |
uses: actions/cache@v4 | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-node_modules-${{ hashFiles('**/bun.lock') }} | |
restore-keys: | | |
${{ runner.os }}-node_modules- | |
- name: Install JavaScript dependencies | |
if: steps.changed-files.outputs.any_changed == 'true' || github.event.inputs.skip-change-detect == 'true' | |
run: bun install | |
- name: Setup Golang dependencies | |
if: steps.changed-files.outputs.any_changed == 'true' || github.event.inputs.skip-change-detect == 'true' | |
uses: magnetikonline/action-golang-cache@v5 | |
with: | |
go-version-file: go.work | |
- name: Install binaries dependencies | |
if: steps.changed-files.outputs.any_changed == 'true' || github.event.inputs.skip-change-detect == 'true' | |
run: bun cli deps -skip-node -skip-go | |
- name: Build libraries | |
if: steps.changed-files.outputs.any_changed == 'true' || github.event.inputs.skip-change-detect == 'true' | |
run: bun cli build libs | |
- name: Build gql | |
if: steps.changed-files.outputs.any_changed == 'true' || github.event.inputs.skip-change-detect == 'true' | |
# check if app is apps/api-gql | |
run: | | |
if [ "${{ env.app }}" = "api-gql" ]; then | |
bun cli build gql | |
fi | |
- name: Build application | |
if: steps.changed-files.outputs.any_changed == 'true' || github.event.inputs.skip-change-detect == 'true' | |
run: bun cli build app ${{ env.app }} | |
- name: Set up Docker Buildx | |
if: steps.changed-files.outputs.any_changed == 'true' || github.event.inputs.skip-change-detect == 'true' | |
uses: docker/setup-buildx-action@v3 | |
- name: Login to Docker Hub | |
if: steps.changed-files.outputs.any_changed == 'true' || github.event.inputs.skip-change-detect == 'true' | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKER_REGISTRY_LOGIN }} | |
password: ${{ secrets.DOCKER_REGISTRY_TOKEN }} | |
- name: Login to Twir registry | |
if: steps.changed-files.outputs.any_changed == 'true' || github.event.inputs.skip-change-detect == 'true' | |
uses: docker/login-action@v3 | |
with: | |
registry: registry.twir.app | |
username: ${{ secrets.DOCKER_TWIR_LOGIN }} | |
password: ${{ secrets.DOCKER_TWIR_PASSWORD }} | |
- name: Build docker image | |
if: steps.changed-files.outputs.any_changed == 'true' || github.event.inputs.skip-change-detect == 'true' | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
file: ./${{ env.folder }}/${{ env.app }}/Dockerfile | |
push: true | |
tags: | | |
twirapp/${{ env.app }}:latest | |
registry.twir.app/twirapp/${{ env.app }}:latest | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
migrations: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Get changed files | |
id: changed-files | |
uses: tj-actions/changed-files@v45 | |
with: | |
files: | | |
libs/migrations/** | |
- name: Set up Docker Buildx | |
if: steps.changed-files.outputs.any_changed == 'true' || github.event.inputs.skip-change-detect == 'true' | |
uses: docker/setup-buildx-action@v3 | |
- name: Login to Docker Hub | |
if: steps.changed-files.outputs.any_changed == 'true' || github.event.inputs.skip-change-detect == 'true' | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKER_REGISTRY_LOGIN }} | |
password: ${{ secrets.DOCKER_REGISTRY_TOKEN }} | |
- name: Login to Twir registry | |
if: steps.changed-files.outputs.any_changed == 'true' || github.event.inputs.skip-change-detect == 'true' | |
uses: docker/login-action@v3 | |
with: | |
registry: registry.twir.app | |
username: ${{ secrets.DOCKER_TWIR_LOGIN }} | |
password: ${{ secrets.DOCKER_TWIR_PASSWORD }} | |
- name: Build docker image | |
if: steps.changed-files.outputs.any_changed == 'true' || github.event.inputs.skip-change-detect == 'true' | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
file: ./libs/migrations/Dockerfile | |
push: true | |
tags: | | |
twirapp/migrations:latest | |
registry.twir.app/twirapp/migrations:latest | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
web: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Get changed files | |
id: changed-files | |
uses: tj-actions/changed-files@v45 | |
with: | |
files: | | |
web/** | |
libs/** | |
- name: Set up Docker Buildx | |
if: steps.changed-files.outputs.any_changed == 'true' || github.event.inputs.skip-change-detect == 'true' | |
uses: docker/setup-buildx-action@v3 | |
- name: Login to Docker Hub | |
if: steps.changed-files.outputs.any_changed == 'true' || github.event.inputs.skip-change-detect == 'true' | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKER_REGISTRY_LOGIN }} | |
password: ${{ secrets.DOCKER_REGISTRY_TOKEN }} | |
- name: Login to Twir registry | |
if: steps.changed-files.outputs.any_changed == 'true' || github.event.inputs.skip-change-detect == 'true' | |
uses: docker/login-action@v3 | |
with: | |
registry: registry.twir.app | |
username: ${{ secrets.DOCKER_TWIR_LOGIN }} | |
password: ${{ secrets.DOCKER_TWIR_PASSWORD }} | |
- name: Build docker image | |
if: steps.changed-files.outputs.any_changed == 'true' || github.event.inputs.skip-change-detect == 'true' | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
file: ./web/Dockerfile | |
push: true | |
tags: | | |
twirapp/web:latest | |
registry.twir.app/twirapp/web:latest | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |