Compare commits
1 Commits
v3.7.2
...
version-2.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9847f30a9e |
7
.github/dependabot.yml
vendored
7
.github/dependabot.yml
vendored
@@ -1,7 +0,0 @@
|
|||||||
version: 2
|
|
||||||
updates:
|
|
||||||
# Maintain dependencies for GitHub Actions
|
|
||||||
- package-ecosystem: "github-actions"
|
|
||||||
directory: "/"
|
|
||||||
schedule:
|
|
||||||
interval: "daily"
|
|
||||||
60
.github/workflows/create-release.yaml
vendored
60
.github/workflows/create-release.yaml
vendored
@@ -1,60 +0,0 @@
|
|||||||
name: "Create Release"
|
|
||||||
|
|
||||||
on: # yamllint disable-line rule:truthy
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
RELEASE_TAG:
|
|
||||||
description: 'v{Major}.{Minor}.{Patch}'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
release:
|
|
||||||
name: "Release"
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
runs-on: "ubuntu-latest"
|
|
||||||
|
|
||||||
steps:
|
|
||||||
|
|
||||||
- name: Checkout source
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.ACTIONS_ACCESS_TOKEN }}
|
|
||||||
submodules: true
|
|
||||||
|
|
||||||
- name: Create branch and tag submodule
|
|
||||||
run: |
|
|
||||||
git config user.email "actions@github.com"
|
|
||||||
git config user.name "actions-user"
|
|
||||||
git submodule update --init --remote
|
|
||||||
git checkout -b 'release-${{ inputs.RELEASE_TAG }}'
|
|
||||||
(cd calcom && git fetch --tags origin && git checkout 'refs/tags/${{ inputs.RELEASE_TAG }}')
|
|
||||||
git add calcom
|
|
||||||
git commit -m "tag version Cal.com version ${{ inputs.RELEASE_TAG }}"
|
|
||||||
git push origin 'release-${{ inputs.RELEASE_TAG }}'
|
|
||||||
|
|
||||||
# note: instead of secrets.GITHUB_TOKEN here, we need to use a PAT
|
|
||||||
# so that the release creation triggers the image build workflow
|
|
||||||
- name: "Create release"
|
|
||||||
uses: "actions/github-script@v6"
|
|
||||||
with:
|
|
||||||
github-token: "${{ secrets.ACTIONS_ACCESS_TOKEN }}"
|
|
||||||
script: |
|
|
||||||
const isPreRelease = '${{ inputs.RELEASE_TAG }}'.includes('-rc');
|
|
||||||
try {
|
|
||||||
const response = await github.rest.repos.createRelease({
|
|
||||||
draft: false,
|
|
||||||
generate_release_notes: true,
|
|
||||||
body: 'For Cal.com release details, see: https://github.com/calcom/cal.com/releases/tag/${{ inputs.RELEASE_TAG }}',
|
|
||||||
name: '${{ inputs.RELEASE_TAG }}',
|
|
||||||
target_commitish: 'release-${{ inputs.RELEASE_TAG }}',
|
|
||||||
owner: context.repo.owner,
|
|
||||||
prerelease: isPreRelease,
|
|
||||||
repo: context.repo.repo,
|
|
||||||
tag_name: '${{ inputs.RELEASE_TAG }}',
|
|
||||||
});
|
|
||||||
|
|
||||||
core.exportVariable('RELEASE_ID', response.data.id);
|
|
||||||
core.exportVariable('RELEASE_UPLOAD_URL', response.data.upload_url);
|
|
||||||
} catch (error) {
|
|
||||||
core.setFailed(error.message);
|
|
||||||
}
|
|
||||||
112
.github/workflows/docker-build-push-dockerhub.yml
vendored
112
.github/workflows/docker-build-push-dockerhub.yml
vendored
@@ -17,17 +17,15 @@ on:
|
|||||||
- completed
|
- completed
|
||||||
# Allow running workflow manually from the Actions tab
|
# Allow running workflow manually from the Actions tab
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
# Uncomment below to allow specific version workflow run
|
|
||||||
# inputs:
|
|
||||||
# version:
|
|
||||||
# description: 'Version to build'
|
|
||||||
# required: true
|
|
||||||
|
|
||||||
# Leaving in example for releases. Initially we simply push to 'latest'
|
# Leaving in example for releases. Initially we simply push to 'latest'
|
||||||
# on:
|
# on:
|
||||||
# release:
|
# release:
|
||||||
# types: [ created ]
|
# types: [ created ]
|
||||||
|
|
||||||
|
# # Allows you to run this workflow manually from the Actions tab
|
||||||
|
# workflow_dispatch:
|
||||||
|
|
||||||
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
||||||
jobs:
|
jobs:
|
||||||
# This workflow contains a single job called "build"
|
# This workflow contains a single job called "build"
|
||||||
@@ -37,21 +35,16 @@ jobs:
|
|||||||
|
|
||||||
# Steps represent a sequence of tasks that will be executed as part of the job
|
# Steps represent a sequence of tasks that will be executed as part of the job
|
||||||
steps:
|
steps:
|
||||||
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it, uncomment below
|
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
||||||
# - name: Checkout code at specified version
|
|
||||||
# uses: actions/checkout@v2
|
|
||||||
# with:
|
|
||||||
# ref: ${{ github.event.inputs.version }}
|
|
||||||
|
|
||||||
- name: checkout
|
- name: checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Git submodule update
|
- name: Git submodule update
|
||||||
run: |
|
run: |
|
||||||
git submodule update --init
|
git submodule update --init
|
||||||
|
|
||||||
- name: Log in to the Docker Hub registry
|
- name: Log in to the Docker Hub registry
|
||||||
uses: docker/login-action@v2
|
uses: docker/login-action@v1.10.0
|
||||||
with:
|
with:
|
||||||
# Username used to log against the Docker registry
|
# Username used to log against the Docker registry
|
||||||
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
||||||
@@ -61,7 +54,7 @@ jobs:
|
|||||||
logout: true # optional, default is true
|
logout: true # optional, default is true
|
||||||
|
|
||||||
- name: Log in to the Github Container registry
|
- name: Log in to the Github Container registry
|
||||||
uses: docker/login-action@v2
|
uses: docker/login-action@v1.10.0
|
||||||
with:
|
with:
|
||||||
registry: ghcr.io
|
registry: ghcr.io
|
||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
@@ -75,10 +68,6 @@ jobs:
|
|||||||
docker.io/calendso/calendso
|
docker.io/calendso/calendso
|
||||||
docker.io/calcom/cal.com
|
docker.io/calcom/cal.com
|
||||||
ghcr.io/calcom/cal.com
|
ghcr.io/calcom/cal.com
|
||||||
# Add flavor latest only on full releases, not on pre-releases
|
|
||||||
flavor: |
|
|
||||||
latest=${{ !github.event.release.prerelease }}
|
|
||||||
prerelease=${{ github.event.release.prerelease }}
|
|
||||||
|
|
||||||
- name: Copy env
|
- name: Copy env
|
||||||
run: |
|
run: |
|
||||||
@@ -88,8 +77,8 @@ jobs:
|
|||||||
eval $(sed -e '/^#/d' -e 's/^/export /' -e 's/$/;/' .env) ;
|
eval $(sed -e '/^#/d' -e 's/^/export /' -e 's/$/;/' .env) ;
|
||||||
|
|
||||||
# Temporarily disable ARM build due to runner performance issues
|
# Temporarily disable ARM build due to runner performance issues
|
||||||
# - name: Set up QEMU
|
# - name: Set up QEMU
|
||||||
# uses: docker/setup-qemu-action@v2
|
# uses: docker/setup-qemu-action@v2
|
||||||
|
|
||||||
- name: Start database
|
- name: Start database
|
||||||
run: |
|
run: |
|
||||||
@@ -102,18 +91,14 @@ jobs:
|
|||||||
network=container:database
|
network=container:database
|
||||||
buildkitd-flags: |
|
buildkitd-flags: |
|
||||||
--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host
|
--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host
|
||||||
# config-inline: |
|
|
||||||
# [worker.oci]
|
|
||||||
# max-parallelism = 1
|
|
||||||
|
|
||||||
- name: Build image
|
- name: Build and push image
|
||||||
id: docker_build
|
id: docker_build
|
||||||
uses: docker/build-push-action@v4
|
uses: docker/build-push-action@v3
|
||||||
with:
|
with:
|
||||||
context: ./
|
context: ./
|
||||||
file: ./Dockerfile
|
file: ./Dockerfile
|
||||||
load: true # Load the image into the Docker daemon
|
push: ${{ github.event_name != 'pull_request' }}
|
||||||
push: false # Do not push the image at this stage
|
|
||||||
platforms: linux/amd64
|
platforms: linux/amd64
|
||||||
tags: ${{ steps.meta.outputs.tags }}
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
labels: ${{ steps.meta.outputs.labels }}
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
@@ -123,76 +108,13 @@ jobs:
|
|||||||
NEXT_PUBLIC_TELEMETRY_KEY=${{ env.NEXT_PUBLIC_TELEMETRY_KEY }}
|
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_URL=postgresql://${{ env.POSTGRES_USER }}:${{ env.POSTGRES_PASSWORD }}@${{ env.DATABASE_HOST }}/${{ env.POSTGRES_DB }}
|
||||||
|
|
||||||
- name: Test runtime
|
# - name: Build with docker compose
|
||||||
run: |
|
|
||||||
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 }} \
|
|
||||||
-e NEXTAUTH_SECRET=${{ env.NEXTAUTH_SECRET }} \
|
|
||||||
-e CALENDSO_ENCRYPTION_KEY=${{ env.CALENDSO_ENCRYPTION_KEY }} \
|
|
||||||
$tag &
|
|
||||||
|
|
||||||
server_pid=$!
|
|
||||||
|
|
||||||
|
|
||||||
echo "Waiting for the server to start..."
|
|
||||||
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)
|
|
||||||
echo "HTTP Status Code: $response"
|
|
||||||
if [[ "$response" == "200" ]] || [[ "$response" == "307" ]]; then
|
|
||||||
echo "Server is healthy"
|
|
||||||
# Now, shutdown the server
|
|
||||||
kill $server_pid
|
|
||||||
exit 0
|
|
||||||
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: |
|
# run: |
|
||||||
# tags="${{ steps.meta.outputs.tags }}"
|
# DOCKER_BUILDKIT=0 docker compose build --build-arg DATABASE_URL=postgresql://${{ env.POSTGRES_USER }}:${{ env.POSTGRES_PASSWORD }}@${{ env.DATABASE_HOST }}/${{ env.POSTGRES_DB }} calcom
|
||||||
# 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
|
|
||||||
uses: docker/build-push-action@v4
|
|
||||||
with:
|
|
||||||
context: ./
|
|
||||||
file: ./Dockerfile
|
|
||||||
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_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 }}
|
|
||||||
if: ${{ !github.event.release.prerelease }}
|
|
||||||
|
|
||||||
- name: Image digest
|
|
||||||
run: echo ${{ steps.docker_build.outputs.digest }}
|
|
||||||
|
|
||||||
- name: Cleanup
|
- name: Cleanup
|
||||||
run: |
|
run: |
|
||||||
docker compose down
|
docker compose down
|
||||||
|
|
||||||
|
- name: Image digest
|
||||||
|
run: echo ${{ steps.docker_build.outputs.digest }}
|
||||||
|
|||||||
2
.github/workflows/update-submodules.yml
vendored
2
.github/workflows/update-submodules.yml
vendored
@@ -13,7 +13,7 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
steps:
|
steps:
|
||||||
- name: checkout
|
- name: checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Git submodule update
|
- name: Git submodule update
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
44
Dockerfile
44
Dockerfile
@@ -1,7 +1,6 @@
|
|||||||
FROM node:18 as builder
|
FROM node:16 as builder
|
||||||
|
|
||||||
WORKDIR /calcom
|
WORKDIR /calcom
|
||||||
|
|
||||||
ARG NEXT_PUBLIC_LICENSE_CONSENT
|
ARG NEXT_PUBLIC_LICENSE_CONSENT
|
||||||
ARG CALCOM_TELEMETRY_DISABLED
|
ARG CALCOM_TELEMETRY_DISABLED
|
||||||
ARG DATABASE_URL
|
ARG DATABASE_URL
|
||||||
@@ -17,33 +16,30 @@ ENV NEXT_PUBLIC_WEBAPP_URL=http://NEXT_PUBLIC_WEBAPP_URL_PLACEHOLDER \
|
|||||||
CALENDSO_ENCRYPTION_KEY=${CALENDSO_ENCRYPTION_KEY} \
|
CALENDSO_ENCRYPTION_KEY=${CALENDSO_ENCRYPTION_KEY} \
|
||||||
NODE_OPTIONS=--max-old-space-size=${MAX_OLD_SPACE_SIZE}
|
NODE_OPTIONS=--max-old-space-size=${MAX_OLD_SPACE_SIZE}
|
||||||
|
|
||||||
COPY calcom/package.json calcom/yarn.lock calcom/.yarnrc.yml calcom/playwright.config.ts calcom/turbo.json calcom/git-init.sh calcom/git-setup.sh ./
|
COPY calcom/package.json calcom/yarn.lock calcom/turbo.json calcom/git-init.sh calcom/git-setup.sh ./
|
||||||
COPY calcom/.yarn ./.yarn
|
|
||||||
COPY calcom/apps/web ./apps/web
|
COPY calcom/apps/web ./apps/web
|
||||||
COPY calcom/packages ./packages
|
COPY calcom/packages ./packages
|
||||||
COPY calcom/tests ./tests
|
|
||||||
|
|
||||||
RUN yarn config set httpTimeout 1200000 && \
|
RUN yarn global add turbo && \
|
||||||
npx turbo prune --scope=@calcom/web --docker && \
|
yarn config set network-timeout 1000000000 -g && \
|
||||||
yarn install && \
|
turbo prune --scope=@calcom/web --docker && \
|
||||||
yarn db-deploy && \
|
yarn install
|
||||||
yarn --cwd packages/prisma seed-app-store
|
|
||||||
|
|
||||||
RUN yarn turbo run build --filter=@calcom/web
|
RUN yarn turbo run build --filter=@calcom/web
|
||||||
|
|
||||||
# RUN yarn plugin import workspace-tools && \
|
FROM node:16 as runner
|
||||||
# yarn workspaces focus --all --production
|
|
||||||
RUN rm -rf node_modules/.cache .yarn/cache apps/web/.next/cache
|
|
||||||
|
|
||||||
FROM node:18 as builder-two
|
|
||||||
|
|
||||||
WORKDIR /calcom
|
WORKDIR /calcom
|
||||||
ARG NEXT_PUBLIC_WEBAPP_URL=http://localhost:3000
|
ARG NEXT_PUBLIC_WEBAPP_URL=http://localhost:3000
|
||||||
|
|
||||||
ENV NODE_ENV production
|
ENV NODE_ENV production
|
||||||
|
|
||||||
COPY calcom/package.json calcom/.yarnrc.yml calcom/yarn.lock calcom/turbo.json ./
|
RUN apt-get update && \
|
||||||
COPY calcom/.yarn ./.yarn
|
apt-get -y install netcat && \
|
||||||
|
rm -rf /var/lib/apt/lists/* && \
|
||||||
|
npm install --global prisma
|
||||||
|
|
||||||
|
COPY calcom/package.json calcom/yarn.lock calcom/turbo.json ./
|
||||||
COPY --from=builder /calcom/node_modules ./node_modules
|
COPY --from=builder /calcom/node_modules ./node_modules
|
||||||
COPY --from=builder /calcom/packages ./packages
|
COPY --from=builder /calcom/packages ./packages
|
||||||
COPY --from=builder /calcom/apps/web ./apps/web
|
COPY --from=builder /calcom/apps/web ./apps/web
|
||||||
@@ -57,19 +53,5 @@ ENV NEXT_PUBLIC_WEBAPP_URL=$NEXT_PUBLIC_WEBAPP_URL \
|
|||||||
|
|
||||||
RUN scripts/replace-placeholder.sh http://NEXT_PUBLIC_WEBAPP_URL_PLACEHOLDER ${NEXT_PUBLIC_WEBAPP_URL}
|
RUN scripts/replace-placeholder.sh http://NEXT_PUBLIC_WEBAPP_URL_PLACEHOLDER ${NEXT_PUBLIC_WEBAPP_URL}
|
||||||
|
|
||||||
FROM node:18 as runner
|
|
||||||
|
|
||||||
|
|
||||||
WORKDIR /calcom
|
|
||||||
COPY --from=builder-two /calcom ./
|
|
||||||
ARG NEXT_PUBLIC_WEBAPP_URL=http://localhost:3000
|
|
||||||
ENV NEXT_PUBLIC_WEBAPP_URL=$NEXT_PUBLIC_WEBAPP_URL \
|
|
||||||
BUILT_NEXT_PUBLIC_WEBAPP_URL=$NEXT_PUBLIC_WEBAPP_URL
|
|
||||||
|
|
||||||
ENV NODE_ENV production
|
|
||||||
EXPOSE 3000
|
EXPOSE 3000
|
||||||
|
|
||||||
HEALTHCHECK --interval=30s --timeout=30s --retries=5 \
|
|
||||||
CMD wget --spider http://localhost:3000 || exit 1
|
|
||||||
|
|
||||||
CMD ["/calcom/scripts/start.sh"]
|
CMD ["/calcom/scripts/start.sh"]
|
||||||
@@ -27,6 +27,8 @@
|
|||||||
|
|
||||||
# Docker
|
# Docker
|
||||||
|
|
||||||
|
NOTE: DockerHub organization has not yet been renamed.
|
||||||
|
|
||||||
This image can be found on DockerHub at [https://hub.docker.com/r/calcom/cal.com](https://hub.docker.com/r/calcom/cal.com)
|
This image can be found on DockerHub at [https://hub.docker.com/r/calcom/cal.com](https://hub.docker.com/r/calcom/cal.com)
|
||||||
|
|
||||||
The Docker configuration for Cal.com is an effort powered by people within the community. Cal.com, Inc. does not yet provide official support for Docker, but we will accept fixes and documentation at this time. Use at your own risk.
|
The Docker configuration for Cal.com is an effort powered by people within the community. Cal.com, Inc. does not yet provide official support for Docker, but we will accept fixes and documentation at this time. Use at your own risk.
|
||||||
|
|||||||
2
calcom
2
calcom
Submodule calcom updated: df91dacc3f...865663646a
Reference in New Issue
Block a user