Source Code Continuous Integration
Overview
Our continuous integration is all done by calling the make command. Docker is used for image building, and docker-compose is used for unit testing. The current continuous integration solution for the code repository is GitHub Actions. If you need to adapt to other continuous integration systems, you need to customize them. The overall idea can be used.
Example of make command for image building
Here are some make commands for building service images. Please refer to the workflow at the bottom for specific details.
# backend-server
make _enterprise-copy
make buildpush-backendserver
# room-server
make _enterprise-copy
make buildpush-roomserver
# web-server
make _enterprise-copy
make buildpush-webserver-op
# init-settings
make _enterprise-copy
export EDITION=apitable-ee
make buildpush-init-settings
# init-db
make buildpush-init-db
make buildpush-init-db-enterprise
# databus-server (Release/1.2.0 and later versions support )
cd databus
make buildpush
Makefile path
Makefile: Makefile for enterprise-level code
apitable/Makefile: Same as Makefile in the open source repository
Dockerfile path
The following are the Dockerfile paths corresponding to the services. Please refer to the workflow entry and Makefile for specific compilation steps and execution directories.
backend-server: apitable/packaging/Dockerfile.backend-server
room-server: apitable/packaging/Dockerfile.room-server
web-server: apitable/packaging/Dockerfile.web-server
init-db/init-db-enterprise: apitable/init-db/Dockerfile
init-settings: init-settings/Dockerfile
databus-server: databus/Dockerfile.databus-server
GitHub Actions
Official documentation:
GitHub-hosted runners:
Self-hosted runners:
Continuous Integration Workflow Entry
Currently, self-hosted runners are associated with workflows. Sample code:
runs-on: [self-hosted]
The workflows are all located in the .github/workflows directory of the code repository. The following is the correspondence between services and workflows:
backend-server: backend-server.yml
room-server: room-server.yaml
web-server: web-server.yaml
init-db/init-db-enterprise: init-db.yml
init-settings: init-settings.yaml
Continuous Integration Environment Variables
For environment variables referenced in workflows, actions variables and actions secrets are used, and you can add them according to the type of variable.
Variable Name | Description |
|---|---|
CR_PAT | GitHub PAT, used to push images to ghcr.io. |
REGISTRY_SERVER | Third-party container image repository address. |
REGISTRY_USERNAME | Third-party container image repository username. |
REGISTRY_PASSWORD | Third-party container image repository password. |
REGISTRY_NAMESPACE | Third-party container image repository namespace. |
DEFUALT_SEMVER_EDITION | Default semver version identifier. |