Skip to content

docker compose up --build --force-recreate --detach --wait #43

docker compose up --build --force-recreate --detach --wait

docker compose up --build --force-recreate --detach --wait #43

Workflow file for this run

name: CI
on: [push]
jobs:
test:
name: Test code base
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Install packages
run: npm install
- name: Lint
run: npm run lint
- name: Setup database
env:
DATABASE_URL: ${{ secrets.DATABASE_URL }}
run: |
npm run prisma:migrate:deploy
- name: Unit Tests (Jest, React Test Library and Mock Service Worker UI tests)
run: npm run test:ui
- name: API Integration Tests (Jest and next-test-api-route-handler API tests)
env:
DATABASE_URL: ${{ secrets.DATABASE_URL }}
run: npm run test:api
- name: create .env
run: |
touch .env.test.local
echo CYPRESS_baseUrl=${{ secrets.NEXTAUTH_URL }} >> .env.test.local
echo DATABASE_URL=${{ secrets.DATABASE_URL }} >> .env.test.local
echo NODE_ENV='test' >> .env.test.local
echo REVALIDATION_SECRET=${{ secrets.REVALIDATION_SECRET }} >> .env.test.local
echo APP_ENV='test' >> .env.test.local
echo NEXTAUTH_SECRET=${{ secrets.NEXTAUTH_SECRET }} >> .env.test.local
echo NEXTAUTH_URL=${{ secrets.NEXTAUTH_URL }} >> .env.test.local
echo NEXT_PUBLIC_BASE_URL=${{ secrets.NEXT_PUBLIC_BASE_URL }} >> .env.test.local
echo TEST_USER_EMAIL=${{ secrets.TEST_USER_EMAIL }} >> .env.test.local
echo TEST_USER_PASSWORD=${{ secrets.TEST_USER_PASSWORD }} >> .env.test.local
- name: Cypress run
uses: cypress-io/github-action@v6
with:
build: npm run build:test
start: npm run cypress:start #npm run cypress:run
wait-on: http://localhost:3000
config: baseUrl=http://localhost:3000
wait-on-timeout: 120
env:
DATABASE_URL: ${{ secrets.DATABASE_URL }}
REVALIDATION_SECRET: ${{ secrets.REVALIDATION_SECRET }}
TEST_USER_EMAIL: ${{ secrets.TEST_USER_EMAIL }}
TEST_USER_PASSWORD: ${{ secrets.TEST_USER_PASSWORD }}
# npm run cypress:run
docker:
name: Docker Build, Tag and Push
runs-on: ubuntu-latest
needs: test
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: create production .env
run: |
touch .env.production.local
echo DATABASE_URL=${{ secrets.PROD_DATABASE_URL }} >> .env.production.local
echo NEXTAUTH_SECRET=${{ secrets.PROD_NEXTAUTH_SECRET }} >> .env.production.local
echo NEXTAUTH_URL=${{ secrets.PROD_NEXTAUTH_URL }} >> .env.production.local
echo NEXT_PUBLIC_BASE_URL=${{ secrets.PROD_NEXT_PUBLIC_BASE_URL }} >> .env.production.local
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Docker Build
run: docker-compose build # --no-cache #docker compose up --build --force-recreate
- name: Docker Tag
run: docker tag 168-hours-nextjs-docker:latest jarrodlilkendey/168-hours-nextjs-docker:latest
# env:
# DATABASE_URL: ${{ secrets.PROD_DATABASE_URL }}
# NEXTAUTH_SECRET: ${{ secrets.PROD_NEXTAUTH_SECRET }}
# NEXTAUTH_URL: ${{ secrets.PROD_NEXTAUTH_URL }}
# NEXT_PUBLIC_BASE_URL: ${{ secrets.PROD_NEXT_PUBLIC_BASE_URL }}
- name: Docker Push to Docker Hub
run: docker push jarrodlilkendey/168-hours-nextjs-docker:latest
deploy:
name: Deploy to Digital Ocean over SSH
needs: docker
runs-on: ubuntu-latest
steps:
- name: SSH
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.DIGITALOCEAN_IP }}
username: ${{ secrets.DIGITALOCEAN_SSH_USERNAME }}
key: ${{ secrets.DIGITALOCEAN_SSH_KEY }}
port: ${{ secrets.SSH_PORT }}
script_stop: true
debug: true
script: |
pwd
ls -l
docker ps -a
docker compose down
docker pull jarrodlilkendey/168-hours-nextjs-docker:latest
docker ps -a
docker compose up --build --force-recreate --detach --wait
docker ps -a
# docker compose up --build --force-recreate -d
# docker compose up --build -d