Skip to content

Add bindmount for static files in production #22

Add bindmount for static files in production

Add bindmount for static files in production #22

Workflow file for this run

name: Build client
on:
push:
branches:
- main
jobs:
build_docker_image_track_base_client_builder:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Paths Changes Filter
uses: dorny/paths-filter@v2
id: changes
with:
filters: |
lock:
- 'web-client/Dockerfile.base-builder'
- name: Authenticate with GCP service account
if: steps.changes.outputs.lock == 'true'
uses: google-github-actions/auth@v1
with:
credentials_json: ${{ secrets.GCP_SA_KEY }}
- name: Set up Cloud SDK
if: steps.changes.outputs.lock == 'true'
uses: google-github-actions/setup-gcloud@v1
- name: Configure Docker to use Google Artifact Registry
if: steps.changes.outputs.lock == 'true'
run: gcloud auth configure-docker us-central1-docker.pkg.dev
- name: Build Base Builder Image
if: steps.changes.outputs.lock == 'true'
run: |
docker build -f web-client/Dockerfile.base-builder --target base-builder -t us-central1-docker.pkg.dev/hubs-dev-333333/ocho-osai/johnshaughnessy/track/track-client-base-builder .
docker push us-central1-docker.pkg.dev/hubs-dev-333333/ocho-osai/johnshaughnessy/track/track-client-base-builder
build_docker_image_track_client_builder:
runs-on: ubuntu-latest
needs: build_docker_image_track_base_client_builder
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Paths Changes Filter
uses: dorny/paths-filter@v2
id: changes
with:
filters: |
lock:
- 'web-client/Cargo.lock'
- 'web-client/Dockerfile.builder'
- 'web-client/Dockerfile.base-builder'
- name: Authenticate with GCP service account
if: steps.changes.outputs.lock == 'true'
uses: google-github-actions/auth@v1
with:
credentials_json: ${{ secrets.GCP_SA_KEY }}
- name: Set up Cloud SDK
if: steps.changes.outputs.lock == 'true'
uses: google-github-actions/setup-gcloud@v1
- name: Configure Docker to use Google Artifact Registry
if: steps.changes.outputs.lock == 'true'
run: gcloud auth configure-docker us-central1-docker.pkg.dev
- name: Build Base Builder Image
if: steps.changes.outputs.lock == 'true'
run: |
docker build -f web-client/Dockerfile.builder --target builder -t us-central1-docker.pkg.dev/hubs-dev-333333/ocho-osai/johnshaughnessy/track/track-client-builder .
docker push us-central1-docker.pkg.dev/hubs-dev-333333/ocho-osai/johnshaughnessy/track/track-client-builder
build_client:
runs-on: ubuntu-latest
needs: build_docker_image_track_client_builder
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Authenticate with GCP
uses: google-github-actions/auth@v1
with:
credentials_json: ${{ secrets.GCP_SA_KEY }}
- name: Set up Cloud SDK
uses: google-github-actions/setup-gcloud@v1
- name: Configure Docker to use Google Artifact Registry
run: gcloud auth configure-docker us-central1-docker.pkg.dev
- name: Generate short SHA
run: echo "SHORT_SHA=${GITHUB_SHA:0:7}" >> $GITHUB_ENV
- name: Build web-client
run: |
docker run --rm -v $PWD:/track -w /track us-central1-docker.pkg.dev/hubs-dev-333333/ocho-osai/johnshaughnessy/track/track-client-builder sh -c "trunk build web-client/index.html"
- name: Build static files
run: |
ls -l web-client/dist
tar -czvf web-client.tar.gz -C web-client/dist .
mv web-client.tar.gz "web-client-${{ env.SHORT_SHA }}.tar.gz"
- name: Upload to GCS
uses: google-github-actions/upload-cloud-storage@v1
with:
path: "web-client-${{ env.SHORT_SHA }}.tar.gz"
destination: "ocho-osai/track/web-client-builds/"