Merge pull request #633 from lexesjan/renovate/node-20.x #570
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: CD | |
env: | |
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} | |
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }} | |
HOST: ${{ secrets.HOST }} | |
USERNAME: ${{ secrets.USERNAME }} | |
KEY: ${{ secrets.KEY }} | |
PORT: ${{ secrets.PORT }} | |
REPO_PATH: ${{ secrets.REPO_PATH }} | |
on: | |
push: | |
branches: | |
- main | |
paths: | |
- .github/workflows/cd.yml | |
- src/** | |
- sql_scripts/** | |
- docker/** | |
- package.json | |
# add manual trigger | |
workflow_dispatch: | |
jobs: | |
continuous-delivery: | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: ./docker | |
steps: | |
- name: Checkout repo and submodules | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Docker login | |
run: docker login --username ${{ env.DOCKER_USERNAME }} --password ${{ env.DOCKER_TOKEN }} | |
- name: Docker pull latest images | |
run: docker-compose pull | |
- name: Docker build | |
run: docker-compose -f ./docker-compose.yml -f ./docker-compose.prod.yml build | |
- name: Determine api tag by version | |
if: env.API_TAG == '' | |
run: echo "API_TAG=$(jq -r .version ../package.json)" >> $GITHUB_ENV | |
- name: Determine db tag by version | |
if: env.DB_TAG == '' | |
run: echo "DB_TAG=$(grep -oP '(\d+\.){2}\d+' ../sql_scripts/init.sql)" >> $GITHUB_ENV | |
- name: Docker tag | |
run: | | |
docker tag ${{ env.DOCKER_USERNAME }}/aniskip-database:latest ${{ env.DOCKER_USERNAME }}/aniskip-database:${{ env.DB_TAG }} | |
docker tag ${{ env.DOCKER_USERNAME }}/aniskip-api:latest ${{ env.DOCKER_USERNAME }}/aniskip-api:${{ env.API_TAG }} | |
- name: Docker push with tag | |
run: | | |
docker push ${{ env.DOCKER_USERNAME }}/aniskip-database:${{ env.DB_TAG }} | |
docker push ${{ env.DOCKER_USERNAME }}/aniskip-api:${{ env.API_TAG }} | |
- name: Docker push with latest tag | |
run: docker-compose -f ./docker-compose.yml -f ./docker-compose.prod.yml push | |
- name: Deploy to production | |
uses: appleboy/ssh-action@master | |
with: | |
host: ${{ env.HOST }} | |
username: ${{ env.USERNAME }} | |
KEY: ${{ env.KEY }} | |
port: ${{ env.PORT }} | |
script: | | |
cd ${{ env.REPO_PATH }}/docker | |
git checkout main | |
git pull --recurse-submodules | |
docker-compose pull | |
./stop.sh | |
./start.sh prod |