Merge pull request #182 from cuappdev/capacity-rework-fix #54
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
name: Docker Build & Push and Deploy to uplift-dev | |
on: | |
push: | |
branches: [master] | |
jobs: | |
path-context: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v1 | |
- name: Login to DockerHub | |
uses: docker/login-action@v1 | |
with: | |
username: ${{ secrets.DOCKER_USERNAME }} | |
password: ${{ secrets.DOCKER_PASSWORD }} | |
- name: Get SHA | |
id: vars | |
run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)" | |
- name: Docker Build & Push | |
uses: docker/build-push-action@v2 | |
with: | |
context: ./ | |
file: ./Dockerfile | |
push: true | |
tags: cornellappdev/uplift-dev:${{ steps.vars.outputs.sha_short }} | |
- name: Remote SSH and Deploy | |
uses: appleboy/ssh-action@master | |
env: | |
IMAGE_TAG: ${{ steps.vars.outputs.sha_short }} | |
with: | |
host: ${{ secrets.DEV_SERVER_HOST }} | |
username: ${{ secrets.SERVER_USERNAME }} | |
key: ${{ secrets.DEV_SERVER_KEY }} | |
script: | | |
touch tags | |
source tags | |
export IMAGE_TAG=${{ steps.vars.outputs.sha_short }} | |
cd docker-compose | |
docker stack rm the-stack | |
sleep 20s | |
sudo systemctl stop nginx | |
sudo systemctl restart nginx | |
docker stack deploy -c docker-compose.yml the-stack --with-registry-auth | |
sleep 60s | |
docker exec $(docker ps -q -f name=the-stack_web) psql $DB_URL -c "DELETE FROM alembic_version;" | |
docker exec $(docker ps -q -f name=the-stack_web) /bin/sh -c "FLASK_MIGRATE=true flask db stamp head" | |
attempt=1 | |
max_attempts=3 | |
until docker exec $(docker ps -q -f name=the-stack_web) /bin/sh -c "FLASK_MIGRATE=true flask db upgrade" || [ $attempt -eq $max_attempts ] | |
do | |
echo "Migration attempt $attempt failed. Retrying..." | |
sleep 15 | |
attempt=$((attempt + 1)) | |
done | |
if [ $attempt -eq $max_attempts ]; then | |
echo "Migration failed after $max_attempts attempts" | |
exit 1 | |
fi | |
yes | docker system prune -a |