Update release.yml #12
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
# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node | |
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions | |
name: Release | |
on: | |
workflow_dispatch: | |
push: | |
branches: | |
- release | |
jobs: | |
deploy: | |
name: Deploy to Production | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout 🛎️ | |
uses: actions/checkout@v4 | |
- name: Setup SSH Key | |
run: | | |
mkdir ~/.ssh/ | |
echo "${{ secrets.PRODUCTION_KEY }}" > ~/.ssh/id_rsa | |
chmod 600 ~/.ssh/id_rsa | |
- name: Setup env file ⚙ | |
run: | | |
echo "# tool hosting information" > .env | |
echo "HTTP_PORT=80" >> .env | |
echo "DOMAIN=snnap.app" >> .env | |
echo "WS_PROTOCOL=wss" >> .env | |
echo "WS_PORT=443" >> .env | |
echo "" >> .env | |
echo "# database information" >> .env | |
echo "MYSQL_ROOT_PASSWORD=${{ secrets.MYSQL_ROOT_PASSWORD }}" >> .env | |
echo "MYSQL_PORT=3206" >> .env | |
echo "MYSQL_DATABASE=${{ secrets.MYSQL_DATABASE }}" >> .env | |
echo "MYSQL_USER=${{ secrets.MYSQL_USER }}" >> .env | |
echo "MYSQL_PASSWORD=${{ secrets.MYSQL_PASSWORD }}" >> .env | |
echo "" >> .env | |
echo "# api information" >> .env | |
echo "API_PORT=3001" >> .env | |
echo "" >> .env | |
echo "# third party information" >> .env | |
echo "GA_TRACKING_CODE=${{ secrets.GA_TRACKING_CODE }}" >> .env | |
echo "GEOAPIFY_API_KEY=${{ secrets.GEOAPIFY_API_KEY }}" >> .env | |
echo "" >> .env | |
echo "# email info" >> .env | |
echo "EMAIL_USER=${{ secrets.EMAIL_USER }}" >> .env | |
echo "EMAIL_PASS=${{ secrets.EMAIL_PASS }}" >> .env | |
- name: Build Dockerfile 🐋 | |
run: docker compose -f docker-compose.yml build | |
- name: Copy to Production | |
run: | | |
docker save snnap_ui | gzip | ssh -p ${{ secrets.PRODUCTION_PORT }} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ${{ secrets.PRODUCTION_USERNAME }}@${{ secrets.PRODUCTION }} 'gunzip | docker load' | |
docker save snnap_api | gzip | ssh -p ${{ secrets.PRODUCTION_PORT }} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ${{ secrets.PRODUCTION_USERNAME }}@${{ secrets.PRODUCTION }} 'gunzip | docker load' | |
docker save snnap_mysql | gzip | ssh -p ${{ secrets.PRODUCTION_PORT }} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ${{ secrets.PRODUCTION_USERNAME }}@${{ secrets.PRODUCTION }} 'gunzip | docker load' | |
scp -P ${{ secrets.PRODUCTION_PORT }} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no docker-compose.yml ${{ secrets.PRODUCTION_USERNAME }}@${{ secrets.PRODUCTION }}:${{ secrets.PRODUCTION_PATH }} | |
ssh -p ${{ secrets.PRODUCTION_PORT }} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ${{ secrets.PRODUCTION_USERNAME }}@${{ secrets.PRODUCTION }} 'cd ${{ secrets.PRODUCTION_PATH }}; sed -i "/^ build:/d" docker-compose.yml' | |
ssh -p ${{ secrets.PRODUCTION_PORT }} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ${{ secrets.PRODUCTION_USERNAME }}@${{ secrets.PRODUCTION }} 'cd ${{ secrets.PRODUCTION_PATH }}; sed -i "/^ context:/d" docker-compose.yml' | |
ssh -p ${{ secrets.PRODUCTION_PORT }} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ${{ secrets.PRODUCTION_USERNAME }}@${{ secrets.PRODUCTION }} 'cd ${{ secrets.PRODUCTION_PATH }}; sed -i "/^ dockerfile:/d" docker-compose.yml' | |
ssh -p ${{ secrets.PRODUCTION_PORT }} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ${{ secrets.PRODUCTION_USERNAME }}@${{ secrets.PRODUCTION }} 'cd ${{ secrets.PRODUCTION_PATH }}; sed -i "/^ args:/d" docker-compose.yml' | |
ssh -p ${{ secrets.PRODUCTION_PORT }} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ${{ secrets.PRODUCTION_USERNAME }}@${{ secrets.PRODUCTION }} 'cd ${{ secrets.PRODUCTION_PATH }}; sed -i "/REACT_APP/d" docker-compose.yml' | |
ssh -p ${{ secrets.PRODUCTION_PORT }} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ${{ secrets.PRODUCTION_USERNAME }}@${{ secrets.PRODUCTION }} 'cd ${{ secrets.PRODUCTION_PATH }}; sed -i "s/container_name/image/g" docker-compose.yml' | |
ssh -p ${{ secrets.PRODUCTION_PORT }} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ${{ secrets.PRODUCTION_USERNAME }}@${{ secrets.PRODUCTION }} 'cd ${{ secrets.PRODUCTION_PATH }}; sed -i "/\${MYSQL_PORT}$/d" docker-compose.yml' | |
ssh -p ${{ secrets.PRODUCTION_PORT }} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ${{ secrets.PRODUCTION_USERNAME }}@${{ secrets.PRODUCTION }} 'cd ${{ secrets.PRODUCTION_PATH }}; sed -i "/^ expose:/d" docker-compose.yml' | |
- name: Launch Snnap | |
run: | | |
ssh -p ${{ secrets.PRODUCTION_PORT }} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ${{ secrets.PRODUCTION_USERNAME }}@${{ secrets.PRODUCTION }} 'cd ${{ secrets.PRODUCTION_PATH }}; docker-compose -f docker-compose.yml stop' | |
ssh -p ${{ secrets.PRODUCTION_PORT }} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ${{ secrets.PRODUCTION_USERNAME }}@${{ secrets.PRODUCTION }} 'cd ${{ secrets.PRODUCTION_PATH }}; docker-compose -f docker-compose.yml up -d' | |
ssh -p ${{ secrets.PRODUCTION_PORT }} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ${{ secrets.PRODUCTION_USERNAME }}@${{ secrets.PRODUCTION }} 'docker exec snnap_mysql_1 ./setup-database.sh' | |
ssh -p ${{ secrets.PRODUCTION_PORT }} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ${{ secrets.PRODUCTION_USERNAME }}@${{ secrets.PRODUCTION }} 'docker system prune -a -f' |