fix: Docker builds (#359)

* Testing: Separate RUN commands

* Test with no prune

* Copying v2 API app to test

* Added NEXT_PUBLIC_API_V2_URL

* Added default value for NEXT_PUBLIC_API_V2_URL

* add cleanup step in docker-build-push-dockerhub

* move cleanup and add directory list for directory context

* --WIP

* Setting the CWD for building the web app

* Trying a workspace command to run with --cwd

* Use action to free disk space

* combined the jobs

* Bring back app router

* Clean up

* Removed the extra push image step

* clean up

* Made the checkout more flexible

* Just testing the github.ref

* Reverted changes related to the version input

---------

Co-authored-by: Syed Ali Shahbaz <52925846+alishaz-polymath@users.noreply.github.com>
This commit is contained in:
Keith Williams
2024-05-09 13:13:00 -03:00
committed by GitHub
parent c279c189bc
commit 7924c2051a
4 changed files with 29 additions and 26 deletions

View File

@@ -20,7 +20,7 @@ on:
# Uncomment below to allow specific version workflow run
# inputs:
# version:
# description: 'Version to build'
# description: 'Version to build'
# required: true
# Leaving in example for releases. Initially we simply push to 'latest'
@@ -37,6 +37,12 @@ jobs:
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
with:
# Free about 4.5 GB, elminating our disk space issues
tool-cache: true
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it, uncomment below
# - name: Checkout code at specified version
# uses: actions/checkout@v2
@@ -66,7 +72,7 @@ jobs:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
@@ -93,7 +99,7 @@ jobs:
- name: Start database
run: |
docker compose up -d database
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
@@ -118,6 +124,7 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}
build-args: |
NEXT_PUBLIC_WEBAPP_URL=${{ env.NEXT_PUBLIC_WEBAPP_URL }}
NEXT_PUBLIC_API_V2_URL=${{ env.NEXT_PUBLIC_API_V2_URL }}
NEXT_PUBLIC_LICENSE_CONSENT=${{ env.NEXT_PUBLIC_LICENSE_CONSENT }}
NEXT_PUBLIC_TELEMETRY_KEY=${{ env.NEXT_PUBLIC_TELEMETRY_KEY }}
DATABASE_URL=postgresql://${{ env.POSTGRES_USER }}:${{ env.POSTGRES_PASSWORD }}@${{ env.DATABASE_HOST }}/${{ env.POSTGRES_DB }}
@@ -128,7 +135,7 @@ jobs:
tags="${{ steps.meta.outputs.tags }}"
IFS=',' read -ra ADDR <<< "$tags" # Convert string to array using ',' as delimiter
tag=${ADDR[0]} # Get the first tag
docker run --rm --network stack \
-p 3000:3000 \
-e DATABASE_URL=postgresql://${{ env.POSTGRES_USER }}:${{ env.POSTGRES_PASSWORD }}@database/${{ env.POSTGRES_DB }} \
@@ -136,7 +143,7 @@ jobs:
-e NEXTAUTH_SECRET=${{ env.NEXTAUTH_SECRET }} \
-e CALENDSO_ENCRYPTION_KEY=${{ env.CALENDSO_ENCRYPTION_KEY }} \
$tag &
server_pid=$!
@@ -144,7 +151,7 @@ jobs:
sleep 120
echo ${{ env.NEXT_PUBLIC_WEBAPP_URL }}/auth/login
for i in {1..60}; do
echo "Checking server health ($i/60)..."
response=$(curl -o /dev/null -s -w "%{http_code}" ${{ env.NEXT_PUBLIC_WEBAPP_URL }}/auth/login)
@@ -157,22 +164,13 @@ jobs:
fi
sleep 1
done
echo "Server health check failed"
kill $server_pid
exit 1
env:
NEXTAUTH_SECRET: 'EI4qqDpcfdvf4A+0aQEEx8JjHxHSy4uWiZw/F32K+pA='
CALENDSO_ENCRYPTION_KEY: '0zfLtY99wjeLnsM7qsa8xsT+Q0oSgnOL'
# - name: Push image
# run: |
# tags="${{ steps.meta.outputs.tags }}"
# IFS=',' read -ra ADDR <<< "$tags" # Convert string to array using ',' as delimiter
# for tag in "${ADDR[@]}"; do
# docker push $tag
# done
- name: Push image
id: docker_push
@@ -180,21 +178,22 @@ jobs:
with:
context: ./
file: ./Dockerfile
push: true
push: true
platforms: linux/amd64
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: |
NEXT_PUBLIC_WEBAPP_URL=${{ env.NEXT_PUBLIC_WEBAPP_URL }}
NEXT_PUBLIC_API_V2_URL=${{ env.NEXT_PUBLIC_API_V2_URL }}
NEXT_PUBLIC_LICENSE_CONSENT=${{ env.NEXT_PUBLIC_LICENSE_CONSENT }}
NEXT_PUBLIC_TELEMETRY_KEY=${{ env.NEXT_PUBLIC_TELEMETRY_KEY }}
DATABASE_URL=postgresql://${{ env.POSTGRES_USER }}:${{ env.POSTGRES_PASSWORD }}@${{ env.DATABASE_HOST }}/${{ env.POSTGRES_DB }}
DATABASE_DIRECT_URL=postgresql://${{ env.POSTGRES_USER }}:${{ env.POSTGRES_PASSWORD }}@${{ env.DATABASE_HOST }}/${{ env.POSTGRES_DB }}
if: ${{ !github.event.release.prerelease }}
- name: Image digest
run: echo ${{ steps.docker_build.outputs.digest }}
- name: Cleanup
run: |
docker compose down