Skip to content

chore: remove upstream Codespaces workflow #17

chore: remove upstream Codespaces workflow

chore: remove upstream Codespaces workflow #17

name: Build and Push Docker Images
on:
push:
branches: [master]
workflow_dispatch:
env:
REGISTRY: ${{ vars.DOCKER_REGISTRY }}
concurrency:
group: build-images-${{ github.sha }}
cancel-in-progress: true
jobs:
detect-changes:
runs-on: ubuntu-latest
outputs:
node: ${{ steps.changes.outputs.node }}
livestream: ${{ steps.changes.outputs.livestream }}
rust: ${{ steps.changes.outputs.rust }}
steps:
- uses: actions/checkout@v4
- uses: dorny/paths-filter@v3
id: changes
with:
filters: |
node:
- 'nodejs/**'
- 'common/**'
- 'Dockerfile.node'
livestream:
- 'livestream/**'
rust:
- 'rust/**'
# NOTE: main image (Dockerfile) is too large for GitHub runners (14GB disk).
# It is built locally via .husky/pre-commit hook on developer machine.
build-node:
needs: detect-changes
if: needs.detect-changes.outputs.node == 'true' || github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: docker/setup-buildx-action@v3
- uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile.node
push: true
tags: ${{ env.REGISTRY }}:node
platforms: linux/amd64
cache-from: type=gha
cache-to: type=gha,mode=max
build-livestream:
needs: detect-changes
if: needs.detect-changes.outputs.livestream == 'true' || github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: docker/setup-buildx-action@v3
- uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- uses: docker/build-push-action@v6
with:
context: ./livestream
file: ./livestream/Dockerfile
push: true
tags: ${{ env.REGISTRY }}:livestream
platforms: linux/amd64
cache-from: type=gha
cache-to: type=gha,mode=max
build-rust:
needs: detect-changes
if: needs.detect-changes.outputs.rust == 'true' || github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
strategy:
matrix:
bin: [capture, capture-logs, cyclotron-janitor, cymbal, feature-flags, property-defs-rs]
steps:
- uses: actions/checkout@v4
- uses: docker/setup-buildx-action@v3
- uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- uses: docker/build-push-action@v6
with:
context: ./rust
file: ./rust/Dockerfile
push: true
tags: ${{ env.REGISTRY }}:${{ matrix.bin }}
platforms: linux/amd64
build-args: BIN=${{ matrix.bin }}
cache-from: type=gha,scope=rust-${{ matrix.bin }}
cache-to: type=gha,mode=max,scope=rust-${{ matrix.bin }}