-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
- Loading branch information
There are no files selected for viewing
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 }}" |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
FROM ubuntu:focal as app | ||
Check warning on line 1 in dockerfiles/xqueue.Dockerfile GitHub Actions / build-and-push-imageThe 'as' keyword should match the case of the 'from' keyword
|
||
|
||
# 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 | ||
Check warning on line 15 in dockerfiles/xqueue.Dockerfile GitHub Actions / build-and-push-imageLegacy key/value format with whitespace separator should not be used
|
||
ENV LANGUAGE en_US:en | ||
Check warning on line 16 in dockerfiles/xqueue.Dockerfile GitHub Actions / build-and-push-imageLegacy key/value format with whitespace separator should not be used
|
||
ENV LC_ALL en_US.UTF-8 | ||
Check warning on line 17 in dockerfiles/xqueue.Dockerfile GitHub Actions / build-and-push-imageLegacy key/value format with whitespace separator should not be used
|
||
|
||
|
||
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/xqueue/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 | ||
Check warning on line 44 in dockerfiles/xqueue.Dockerfile GitHub Actions / build-and-push-imageThe 'as' keyword should match the case of the 'from' keyword
|
||
|
||
# xqueue service config commands below | ||
RUN pip install -r ${XQUEUE_CODE_DIR}/requirements/dev.txt | ||
|
||
ENV DJANGO_SETTINGS_MODULE xqueue.devstack | ||
Check warning on line 49 in dockerfiles/xqueue.Dockerfile GitHub Actions / build-and-push-imageLegacy key/value format with whitespace separator should not be used
|
||
|
||
CMD while true; do python ./manage.py runserver 0.0.0.0:8040; sleep 2; done | ||
Check warning on line 51 in dockerfiles/xqueue.Dockerfile GitHub Actions / build-and-push-imageJSON arguments recommended for ENTRYPOINT/CMD to prevent unintended behavior related to OS signals
|
||
|
||
FROM app as production | ||
Check warning on line 53 in dockerfiles/xqueue.Dockerfile GitHub Actions / build-and-push-imageThe 'as' keyword should match the case of the 'from' keyword
|
||
|
||
# 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 |