# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs

name: Bun CI

on:
  push:
    branches: [ "master" ]

env:
  DOCKERHUB_SLUG: megghy/vtsuru_live
  GHCR_SLUG: ghcr.io/megghy/vtsuru_live

jobs:
  build:

    runs-on: ubuntu-latest

    permissions:
      contents: read
      packages: write

    steps:
    - uses: actions/checkout@v4

    - name: Use bun
      uses: oven-sh/setup-bun@v2

    - name: 📥 Install dependencies
      run: bun install

    - name: 📦 Build
      run: bun run build

    - name: 📦 Upload SourceMap
      run: bunx @hyperdx/cli upload-sourcemaps --serviceKey ${{ secrets.HYPERDX_SERVICE_KEY }} --path dist/assets
      
    - name: Login to GitHub Container Registry
      uses: docker/login-action@v2
      with:
        registry: ghcr.io
        username: ${{ github.actor }}
        password: ${{ secrets.GITHUB_TOKEN }}

    - name: Docker meta
      id: meta
      uses: docker/metadata-action@v4
      with:
        images: |
          ${{ env.DOCKERHUB_SLUG }}
          ${{ env.GHCR_SLUG }}

    - name: Get current time
      uses: josStorer/get-current-time@v2
      id: time
      with:
        format: YYYYMMDD_HHmmss
        utcOffset: "+08:00"

    - name: Build Docker image and push
      uses: docker/build-push-action@v4
      with:
        context: .
        push: true
        tags: |
          ${{ env.GHCR_SLUG }}:latest
          ${{ env.GHCR_SLUG }}:${{ steps.time.outputs.formattedTime }}
