Skip to content

Merge pull request #93 #21

Merge pull request #93

Merge pull request #93 #21

# build, publish and deploy an API docker image
name: production - build, publish & deploy docker image
on:
push:
tags:
- '*'
jobs:
push_to_registry:
name: push docker image to docker hub
runs-on: ubuntu-latest
steps:
- name: check out the repo
uses: actions/checkout@master
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22.x'
cache: 'npm'
cache-dependency-path: package-lock.json
- name: Install dependencies
run: npm ci
- name: log in to docker hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: extract metadata (tags, labels) for docker
id: meta
uses: docker/metadata-action@v5
with:
images: gendercomics/website
tags: |
type=ref,event=branch
type=ref,event=tag
flavor: |
latest=true
- name: build and push docker image
uses: docker/build-push-action@v6
with:
file: ./Dockerfile
build-args: |
NODE_VERSION=22
VUE_APP_API_URL=https://api.gendercomics.net/
push: true
tags: ${{ steps.meta.outputs.tags }}
deploy_stage:
needs: push_to_registry
name: stage deployment to digitalocean.com
runs-on: ubuntu-latest
steps:
- name: check out the repo
uses: actions/checkout@master
- name: deploy stage
uses: alinz/ssh-scp-action@master
with:
key: ${{ secrets.DEPLOY_KEY }}
host: ${{ secrets.APP_HOST }}
user: ${{ secrets.DEPLOY_USER }}
# runs this on remove server
ssh_before: |
echo 'STAGE: deploying ${{ github.ref }}'
cd /var/gendercomics/website
ls -lath
# then upload docker-compose.yml
scp: |
./docker-compose.yml ${{ secrets.DEPLOY_USER }}@${{ secrets.APP_HOST }}:/var/gendercomics/website
# then run these commands
ssh_after: |
echo 'running docker-compose'
docker pull gendercomics/website:${{ steps.meta.outputs.tags }}
cd /var/gendercomics/website
docker-compose up -d gendercomics-website
echo 'DONE!!!'