diff --git a/.github/workflows/ci-chromatic.yaml b/.github/workflows/ci-chromatic.yaml index fa3364c57..3e34a2ee2 100644 --- a/.github/workflows/ci-chromatic.yaml +++ b/.github/workflows/ci-chromatic.yaml @@ -4,8 +4,14 @@ on: push: branches: - main + paths: + - 'package.json' + - 'packages/twenty-front/**' pull_request: types: [labeled] + paths: + - 'package.json' + - 'packages/twenty-front/**' jobs: chromatic-deployment: if: contains(github.event.pull_request.labels.*.name, 'run-chromatic') || github.event_name == 'push' diff --git a/.github/workflows/ci-chrome-extension.yaml b/.github/workflows/ci-chrome-extension.yaml index d450cc437..1251f7298 100644 --- a/.github/workflows/ci-chrome-extension.yaml +++ b/.github/workflows/ci-chrome-extension.yaml @@ -3,7 +3,13 @@ on: push: branches: - main + paths: + - 'package.json' + - 'packages/twenty-chrome-extension/**' pull_request: + paths: + - 'package.json' + - 'packages/twenty-chrome-extension/**' jobs: chrome-extension-yarn-install: runs-on: ci-8-cores diff --git a/.github/workflows/ci-docs.yaml b/.github/workflows/ci-docs.yaml index ad02f0724..40741cd21 100644 --- a/.github/workflows/ci-docs.yaml +++ b/.github/workflows/ci-docs.yaml @@ -3,7 +3,13 @@ on: push: branches: - main + paths: + - 'package.json' + - 'packages/twenty-docs/**' pull_request: + paths: + - 'package.json' + - 'packages/twenty-docs/**' jobs: docs-build: runs-on: ubuntu-latest @@ -35,4 +41,4 @@ jobs: token: ${{ github.token }} filter_mode: nofilter env: - REVIEWDOG_GITHUB_API_TOKEN: ${{ github.token }} \ No newline at end of file + REVIEWDOG_GITHUB_API_TOKEN: ${{ github.token }} diff --git a/.github/workflows/ci-front.yaml b/.github/workflows/ci-front.yaml index c7aed1746..5076176e6 100644 --- a/.github/workflows/ci-front.yaml +++ b/.github/workflows/ci-front.yaml @@ -3,7 +3,13 @@ on: push: branches: - main + paths: + - 'package.json' + - 'packages/twenty-front/**' pull_request: + paths: + - 'package.json' + - 'packages/twenty-front/**' jobs: front-yarn-install: runs-on: ci-8-cores @@ -172,4 +178,4 @@ jobs: key: root-node_modules-${{hashFiles('yarn.lock')}} restore-keys: root-node_modules- - name: Front / Run jest - run: yarn nx coverage twenty-front \ No newline at end of file + run: yarn nx coverage twenty-front diff --git a/.github/workflows/ci-server.yaml b/.github/workflows/ci-server.yaml index 9e46add8b..ac67997c8 100644 --- a/.github/workflows/ci-server.yaml +++ b/.github/workflows/ci-server.yaml @@ -3,7 +3,13 @@ on: push: branches: - main + paths: + - 'package.json' + - 'packages/twenty-server/**' pull_request: + paths: + - 'package.json' + - 'packages/twenty-server/**' jobs: server-test: runs-on: ubuntu-latest diff --git a/.github/workflows/ci-test-docker-compose.yaml b/.github/workflows/ci-test-docker-compose.yaml new file mode 100644 index 000000000..4b191e3be --- /dev/null +++ b/.github/workflows/ci-test-docker-compose.yaml @@ -0,0 +1,61 @@ +name: 'Test Docker Compose' +on: + pull_request: + paths: + - 'packages/twenty-docker/**' +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + test: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Run compose + run: | + echo "Patching docker-compose.yml..." + # change image to localbuild using yq + yq eval 'del(.services.server.image)' -i docker-compose.yml + yq eval '.services.server.build.context = "../../../"' -i docker-compose.yml + yq eval '.services.server.build.dockerfile = "./packages/twenty-docker/twenty/Dockerfile"' -i docker-compose.yml + yq eval '.services.server.restart = "no"' -i docker-compose.yml + + yq eval 'del(.services.db.image)' -i docker-compose.yml + yq eval '.services.db.build.context = "../../../"' -i docker-compose.yml + yq eval '.services.db.build.dockerfile = "./packages/twenty-docker/twenty-postgres/Dockerfile"' -i docker-compose.yml + + echo "Setting up .env file..." + cp .env.example .env + echo "Generating secrets..." + echo "# === Randomly generated secrets ===" >>.env + echo "ACCESS_TOKEN_SECRET=$(openssl rand -base64 32)" >>.env + echo "LOGIN_TOKEN_SECRET=$(openssl rand -base64 32)" >>.env + echo "REFRESH_TOKEN_SECRET=$(openssl rand -base64 32)" >>.env + echo "FILE_TOKEN_SECRET=$(openssl rand -base64 32)" >>.env + echo "POSTGRES_ADMIN_PASSWORD=$(openssl rand -base64 32)" >>.env + + echo "Starting server..." + docker compose up -d + docker compose logs db server -f & + pid=$! + + echo "Waiting for server to start..." + count=0 + while [ ! $(docker inspect --format='{{.State.Health.Status}}' twenty-server-1) = "healthy" ]; do + sleep 1; + count=$((count+1)); + if [ $(docker inspect --format='{{.State.Status}}' twenty-server-1) = "exited" ]; then + echo "Server exited" + exit 1 + fi + if [ $count -gt 300 ]; then + echo "Failed to start server" + exit 1 + fi + done + + done + working-directory: ./packages/twenty-docker/