From 331e2cd480a06c64de6da578f90575f24278f662 Mon Sep 17 00:00:00 2001 From: nadeemshahzad Date: Wed, 23 Sep 2020 04:44:08 +0000 Subject: [PATCH] add github action for edxapp db dump --- .../workflows/docker-compose.yml.mysqldbdump | 24 +++++++++++++++ .github/workflows/init/01.sql | 3 ++ .github/workflows/mysqldbdump.yml | 20 +++++++++++++ .github/workflows/mysqldbdump_pr.sh | 29 +++++++++++++++++++ 4 files changed, 76 insertions(+) create mode 100644 .github/workflows/docker-compose.yml.mysqldbdump create mode 100644 .github/workflows/init/01.sql create mode 100644 .github/workflows/mysqldbdump.yml create mode 100755 .github/workflows/mysqldbdump_pr.sh diff --git a/.github/workflows/docker-compose.yml.mysqldbdump b/.github/workflows/docker-compose.yml.mysqldbdump new file mode 100644 index 0000000000..f5f7610c93 --- /dev/null +++ b/.github/workflows/docker-compose.yml.mysqldbdump @@ -0,0 +1,24 @@ +version: '3' +services: + mysql: + image: mysql:5.6 + container_name: edx.devstack.mysql + ports: + - '3306:3306' + environment: + MYSQL_ROOT_PASSWORD: "" + MYSQL_ALLOW_EMPTY_PASSWORD: "yes" + volumes: + - ./init:/docker-entrypoint-initdb.d + healthcheck: + test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"] + timeout: 20s + retries: 10 + edxapp: + image: edxops/edxapp:latest + command: bash -c 'source /edx/app/edxapp/edxapp_env && cd /edx/app/edxapp/edx-platform/ && /edx/app/edxapp/venvs/edxapp/bin/python manage.py lms migrate && /edx/app/edxapp/venvs/edxapp/bin/python manage.py cms migrate' + volumes: + - ../../:/edx/app/edxapp/edx-platform + depends_on: + mysql: + condition: service_healthy diff --git a/.github/workflows/init/01.sql b/.github/workflows/init/01.sql new file mode 100644 index 0000000000..93d3a107e3 --- /dev/null +++ b/.github/workflows/init/01.sql @@ -0,0 +1,3 @@ +CREATE DATABASE IF NOT EXISTS `edxapp`; +CREATE DATABASE IF NOT EXISTS `edxapp_csmh`; +GRANT ALL PRIVILEGES ON *.* TO 'edxapp001'@'%' IDENTIFIED BY 'password'; diff --git a/.github/workflows/mysqldbdump.yml b/.github/workflows/mysqldbdump.yml new file mode 100644 index 0000000000..75be24d019 --- /dev/null +++ b/.github/workflows/mysqldbdump.yml @@ -0,0 +1,20 @@ +name: mysqldbdump +on: + push: + branches: + - 'master' +jobs: + mysqldbdump: + name: mysqldbdump + runs-on: ubuntu-latest + steps: + - name: Checkout repo + uses: actions/checkout@v2 + - name: Migrate + run: docker-compose -f ./.github/workflows/docker-compose.yml.mysqldbdump up -d + - name: Dump database + run: docker exec -i edx.devstack.mysql mysqldump -u'edxapp001' -p'password' edxapp > edxapp.sql + - name: Commit dump file to repo. + run: ./.github/workflows/mysqldbdump_pr.sh + env: + GH_ACCESS_TOKEN: ${{ secrets.EDX_DEPLOYMENT_GH_TOKEN }} diff --git a/.github/workflows/mysqldbdump_pr.sh b/.github/workflows/mysqldbdump_pr.sh new file mode 100755 index 0000000000..893cc52bbc --- /dev/null +++ b/.github/workflows/mysqldbdump_pr.sh @@ -0,0 +1,29 @@ +#! /usr/bin/env bash + +export GITHUB_USER='edx-deployment' +export GITHUB_TOKEN=$GH_ACCESS_TOKEN +export GITHUB_EMAIL='edx-deployment@edx.org' +export REPO_NAME='edx-platform' +export DB_NAME='edxapp' + +cd .. + +# install hub +curl -L -o hub.tgz https://github.com/github/hub/releases/download/v2.14.2/hub-linux-amd64-2.14.2.tgz +tar -zxvf hub.tgz + +cd "$REPO_NAME" + +git config --global user.name "${GITHUB_USER}" +git config --global user.email "${GITHUB_EMAIL}" + +obsolete_dump_pr=`../hub-linux*/bin/hub pr list -s open | grep 'github-actions-mysqldbdump' | awk '{print $1}' | sed 's/\#//g'` +if [[ ! -z $obsolete_dump_pr ]]; then + ../hub-linux*/bin/hub issue update $obsolete_dump_pr -s closed +fi + +git checkout -b github-actions-mysqldbdump/$GITHUB_SHA +git add "${DB_NAME}".sql +git commit -m "MySQLdbdump" --author "GitHub Actions MySQLdbdump automation " +git push --set-upstream origin github-actions-mysqldbdump/$GITHUB_SHA +../hub-linux*/bin/hub pull-request -m "${DB_NAME} MySQL database dump" -m "MySQL database dump" -l github-actions-mysqldbdump