Skip to content

Commit

Permalink
Add basics for the CI/CD rig
Browse files Browse the repository at this point in the history
  • Loading branch information
korlaxxalrok committed Oct 8, 2024
1 parent f69282f commit ce30164
Show file tree
Hide file tree
Showing 3 changed files with 96 additions and 0 deletions.
22 changes: 22 additions & 0 deletions .ci.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# This file is used to allow CI to start the compose services. It will typcially
# not need to be modified.

MYSQL_DATABASE=mysql_database
MYSQL_USER=mysql_user
MYSQL_PASSWORD=mysql_password
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=test123!
MYSQL_HOST=db

ALLOWED_HOSTS='127.0.0.1,localhost'
CORS_ORIGIN_WHITELIST='http://127.0.0.1:3000,http://localhost:3000'
CSRF_TRUSTED_ORIGINS='http://127.0.0.1:8000,http://localhost:8000'

SECRET_KEY='secret_key'
DEBUG='True'

# Add the following to your local .env file. They will be used in the CI process
# and you can largely forget about them, but including them in your .env file
# will act like a safe default and help suppress warnings.
REGISTRY=""
TAG=""
60 changes: 60 additions & 0 deletions .github/workflows/build-and-deploy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: 'Build and deploy application containers'
on:
push:
jobs:
build-tag-push-deploy:
runs-on: ubuntu-latest
# CI/CD will run on these branches
if: >
github.ref == 'refs/heads/main' ||
github.ref == 'refs/heads/staging' ||
github.ref == 'refs/heads/development'
strategy:
matrix:
# Specify the docker-compose services to build images from. These should match the service
# names in the docker-compose.yml file.
service: [sdwebapp, sdnginx]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Login to GitHub container registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: cmu-delphi-deploy-machine
password: ${{ secrets.CMU_DELPHI_DEPLOY_MACHINE_PAT }}
- name: Create container image tags
id: image-tag
run: |
baseRef="${GITHUB_REF#*/}"
baseRef="${baseRef#*/}"
case "${baseRef}" in
main)
image_tag="latest"
;;
*)
image_tag="${baseRef//\//_}" # replace `/` with `_` in branch name
;;
esac
echo "IMAGE_TAG=${image_tag}" >> $GITHUB_OUTPUT
- name: Copy env file
run: |
cp ./.ci.env ./.env
- name: Set up docker-compose
uses: ndeloof/install-compose-action@v0.0.1
- name: docker-compose build --push
run: |
docker-compose build --push ${{ matrix.service }}
env:
TAG: ":${{ steps.image-tag.outputs.IMAGE_TAG }}"
REGISTRY: "ghcr.io/${{ github.repository_owner }}/"
- name: docker-compose down
run: |
docker-compose down
- name: Trigger smee.io webhook to pull new container images
run: |
curl -H "Authorization: Bearer ${{ secrets.DELPHI_DEPLOY_WEBHOOK_TOKEN }}" \
-X POST ${{ secrets.DELPHI_DEPLOY_WEBHOOK_URL }} \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "repository=ghcr.io/${{ github.repository }}-${{ matrix.service }}&tag=${{ steps.image-tag.outputs.IMAGE_TAG }}"
14 changes: 14 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
.env
.secrets
/.vscode/
/src/media/
/src/staticfiles/
*log
*.mo
*.pyc
htmlcov/
.coverage
.coverage.*
coverage.xml
*.cover
celerybeat-schedule.*

0 comments on commit ce30164

Please sign in to comment.