-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: added dockerfile and docker image push workflow for xqueue
- Loading branch information
1 parent
f9d7a7f
commit 4bff32c
Showing
2 changed files
with
131 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
name: Build and Push Xqueue Image | ||
|
||
on: | ||
workflow_dispatch: | ||
inputs: | ||
branch: | ||
description: "Target branch from which the source dockerfile from image will be sourced" | ||
|
||
schedule: | ||
- cron: "0 4 * * 1-5" # UTC Time | ||
|
||
# Added for testing purposes. Will remove once the PR is finalised | ||
pull_request: | ||
branches: | ||
- '**' | ||
|
||
jobs: | ||
build-and-push-image: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Get tag name | ||
id: get-tag-name | ||
uses: actions/github-script@v5 | ||
with: | ||
script: | | ||
const tagName = "${{ github.event.inputs.branch }}" || 'latest'; | ||
console.log('Will use tag: ' + tagName); | ||
return tagName; | ||
result-encoding: string | ||
|
||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v3 | ||
|
||
- name: Set up QEMU | ||
uses: docker/setup-qemu-action@v3 | ||
|
||
- name: Login to DockerHub | ||
uses: docker/login-action@v3 | ||
with: | ||
username: ${{ secrets.DOCKERHUB_USERNAME }} | ||
password: ${{ secrets.DOCKERHUB_PASSWORD }} | ||
|
||
- name: Build and push Dev Docker image | ||
uses: docker/build-push-action@v6 | ||
with: | ||
file: ./dockerfiles/xqueue.Dockerfile | ||
push: true | ||
target: dev | ||
tags: edxops/xqueue-dev-test:${{ steps.get-tag-name.outputs.result }} | ||
|
||
- name: Send failure notification | ||
if: failure() | ||
uses: dawidd6/action-send-mail@v3 | ||
with: | ||
server_address: email-smtp.us-east-1.amazonaws.com | ||
server_port: 465 | ||
username: ${{secrets.edx_smtp_username}} | ||
password: ${{secrets.edx_smtp_password}} | ||
subject: Push Image to docker.io/edxops failed in Xqueue | ||
to: [email protected] | ||
from: github-actions <[email protected]> | ||
body: Push Image to docker.io/edxops for Xqueue failed! For details see "github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
FROM ubuntu:focal as app | ||
|
||
# System requirements | ||
|
||
RUN apt-get update && \ | ||
apt-get upgrade -qy && DEBIAN_FRONTEND=noninteractive apt-get install language-pack-en locales git \ | ||
python3.8-dev python3-virtualenv libmysqlclient-dev libssl-dev build-essential pkg-config wget unzip -qy && \ | ||
rm -rf /var/lib/apt/lists/* | ||
|
||
# Python is Python3. | ||
RUN ln -s /usr/bin/python3 /usr/bin/python | ||
|
||
# Use UTF-8. | ||
RUN locale-gen en_US.UTF-8 | ||
ENV LANG en_US.UTF-8 | ||
ENV LANGUAGE en_US:en | ||
ENV LC_ALL en_US.UTF-8 | ||
|
||
|
||
ARG COMMON_APP_DIR="/edx/app" | ||
ARG XQUEUE_APP_DIR="${COMMON_APP_DIR}/xqueue" | ||
ENV XQUEUE_APP_DIR="${COMMON_APP_DIR}/xqueue" | ||
ENV XQUEUE_VENV_DIR="${COMMON_APP_DIR}/xqueue/venvs/xqueue" | ||
ENV XQUEUE_CODE_DIR="${XQUEUE_APP_DIR}/xqueue" | ||
|
||
ENV PATH="$XQUEUE_VENV_DIR/bin:$PATH" | ||
|
||
# Working directory will be root of repo. | ||
WORKDIR ${XQUEUE_CODE_DIR} | ||
|
||
# Install curl | ||
RUN apt-get update && apt-get install -y curl | ||
# cloning git repo | ||
RUN curl -L https://github.com/openedx/edx-notes-api/archive/refs/heads/master.tar.gz | tar -xz --strip-components=1 | ||
|
||
RUN virtualenv -p python3.8 --always-copy ${XQUEUE_VENV_DIR} | ||
|
||
|
||
# placeholder file for the time being unless devstack provisioning scripts need it. | ||
RUN touch ${XQUEUE_APP_DIR}/xqueue_env | ||
|
||
# Expose ports. | ||
EXPOSE 8040 | ||
|
||
FROM app as dev | ||
|
||
# xqueue service config commands below | ||
RUN pip install -r ${XQUEUE_CODE_DIR}/requirements/dev.txt | ||
|
||
|
||
ENV DJANGO_SETTINGS_MODULE xqueue.devstack | ||
|
||
CMD while true; do python ./manage.py runserver 0.0.0.0:8040; sleep 2; done | ||
|
||
FROM app as production | ||
|
||
# xqueue service config commands below | ||
RUN pip install -r ${XQUEUE_APP_DIR}/requirements.txt | ||
|
||
|
||
ENV DJANGO_SETTINGS_MODULE xqueue.production | ||
|
||
CMD gunicorn \ | ||
--pythonpath=/edx/app/xqueue/xqueue \ | ||
--timeout=300 \ | ||
-b 0.0.0.0:8040 \ | ||
-w 2 \ | ||
- xqueue.wsgi:application |