Skip to content

try printf

try printf #272

Workflow file for this run

name: CI/CD
on:
push:
branches:
- main
env:
IMAGE: ${{ secrets.DOCKER_USERNAME }}/pecuny:latest
jobs:
ci:
secrets: inherit
uses: ./.github/workflows/ci.yml
build-and-publish:
needs: [ci]
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4.1.1
- name: build docker image
run: docker build --tag=${{ env.IMAGE }} .
- name: login to container registry
uses: docker/login-action@v3.0.0
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}
- name: publish docker image
run: docker push ${{ env.IMAGE }}
deploy:
needs: [build-and-publish]
runs-on: ubuntu-22.04
env:
SSH_HOST: webserver
CONTAINER: pecuny
SSH_CMD: ssh -o "StrictHostKeyChecking=no"
steps:
- uses: actions/checkout@v4.1.1
- name: create ssh dir
run: mkdir --parents ~/.ssh
- name: create ssh key
run: |
set -e
echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
- name: config ssh
run: echo -e 'Host ${{ env.SSH_HOST }}\n HostName ${{ vars.HOSTNAME }}\n Port 22\n User root\n IdentityFile ~/.ssh/id_rsa' > ~/.ssh/config
- name: copy docker-compose files
run: scp -o "StrictHostKeyChecking=no" docker-compose.prod.yml ${{ env.SSH_HOST }}:docker-compose.yml
- name: create .env file
run: |
printf 'ENVIRONMENT=%s\n' "${{ vars.ENVIRONMENT }}" > .env
printf 'DOMAIN=%s\n' "${{ vars.DOMAIN }}" >> .env
printf 'REFRESH_TOKEN_EXPIRE_MINUTES=%s\n' "${{ vars.REFRESH_TOKEN_EXPIRE_MINUTES }}" >> .env
printf 'VERIFY_TOKEN_SECRET_KEY=%s\n' "${{ secrets.VERIFY_TOKEN_SECRET_KEY }}" >> .env
printf 'ACCESS_TOKEN_SECRET_KEY=%s\n' "${{ secrets.ACCESS_TOKEN_SECRET_KEY }}" >> .env
printf 'REFRESH_TOKEN_SECRET_KEY=%s\n' "${{ secrets.REFRESH_TOKEN_SECRET_KEY }}" >> .env
printf 'ALGORITHM=HS256\n' >> .env
printf 'CSRF_SECRET=%s\n' "${{ secrets.CSRF_SECRET }}" >> .env
printf 'SESSION_SECRET_KEY=%s\n' "${{ secrets.SESSION_SECRET_KEY }}" >> .env
printf 'ACCESS_TOKEN_EXPIRE_MINUTES=%s\n' "${{ vars.ACCESS_TOKEN_EXPIRE_MINUTES }}" >> .env
printf 'DB_NAME=%s\n' "${{ secrets.DB_NAME }}" >> .env
printf 'DB_PASSWORD=%s\n' "${{ secrets.DB_PASSWORD }}" >> .env
printf 'DB_HOST=%s\n' "${{ secrets.DB_HOST }}" >> .env
printf 'DB_PORT=%s\n' "${{ secrets.DB_PORT }}" >> .env
printf 'DB_USER=%s\n' "${{ secrets.DB_USER }}" >> .env
printf 'MAIL_USERNAME=%s\n' "${{ secrets.MAIL_USERNAME }}" >> .env
printf 'MAIL_FROM=%s\n' "${{ secrets.MAIL_FROM }}" >> .env
printf 'MAIL_SERVER=%s\n' "${{ secrets.MAIL_SERVER }}" >> .env
printf 'MAIL_PORT=%s\n' "${{ secrets.MAIL_PORT }}" >> .env
printf 'MAIL_PASSWORD=%s\n' "${{ secrets.MAIL_PASSWORD }}" >> .env
printf 'REDIS_PORT=6379\n' >> .env
printf 'CELERY_BROKER_URL=redis://redis:6379/0\n' >> .env
printf 'CELERY_RESULT_BACKEND=redis://redis:6379/0\n' >> .env
- name: copy .env file
run: scp -o "StrictHostKeyChecking=no" .env ${{ env.SSH_HOST }}:.env
- name: deploy pecuny
run: |
${{ env.SSH_CMD }} ${{ env.SSH_HOST }} docker compose pull
${{ env.SSH_CMD }} ${{ env.SSH_HOST }} docker compose down
${{ env.SSH_CMD }} ${{ env.SSH_HOST }} docker compose up -d --build --no-deps
- name: upgrade database
run: ${{ env.SSH_CMD }} ${{ env.SSH_HOST }} docker compose exec ${{ env.CONTAINER }} alembic upgrade head