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: Deploy Server | |
on: | |
push: | |
branches: | |
- master | |
- docker | |
paths: | |
- packages/image-search-server/src/** | |
- packages/image-search-server/package.json | |
jobs: | |
check-credentials: | |
name: Check for SSH credentials | |
runs-on: ubuntu-latest | |
environment: production | |
outputs: | |
is_set: ${{ steps.check.outputs.is_set }} | |
steps: | |
- name: Perform check | |
id: check | |
run: | | |
if [[ '${{ secrets.SSH_KEY }}' && '${{ secrets.SSH_HOST }}' && '${{ secrets.SSH_USERNAME }}' ]]; then | |
echo "is_set=true" >> "$GITHUB_OUTPUT" | |
else | |
echo "is_set=false" >> "$GITHUB_OUTPUT" | |
echo "SSH credentials are not set. Skipping deployment." | |
fi | |
check-package: | |
name: Check package | |
needs: check-credentials | |
if: ${{ needs.check-credentials.outputs.is_set == 'true' }} | |
uses: ./.github/workflows/check.yml | |
secrets: inherit | |
with: | |
cwd: packages/image-search-server | |
deploy: | |
name: Deploy server | |
runs-on: ubuntu-latest | |
needs: check-package | |
environment: production | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@cbb722410c2e876e24abbe8de2cc27693e501dcb | |
- name: Build image | |
run: | | |
docker build --platform linux/arm64 --pull --rm -f 'Dockerfile' -t image-search-server:latest '.' | |
docker save -o image-search-server.tar image-search-server:latest | |
- name: Package image | |
run: gzip image-search-server.tar | |
- name: Setup SSH | |
run: | | |
mkdir -p ~/.ssh | |
echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_rsa | |
chmod 600 ~/.ssh/id_rsa | |
echo 'StrictHostKeyChecking no' >> ~/.ssh/config | |
- name: Deploy image | |
run: scp image-search-server.tar.gz docker-compose.yml ${{ secrets.SSH_USERNAME }}@${{ secrets.SSH_HOST }}:/tmp/ | |
- name: Run container | |
uses: appleboy/ssh-action@66aa4d343bf909ac4fa0ac52f4e62a9adc354c95 | |
with: | |
host: ${{ secrets.SSH_HOST }} | |
username: ${{ secrets.SSH_USERNAME }} | |
key: ${{ secrets.SSH_KEY }} | |
script: | | |
cd | |
if [[ ! -d "image-search-server" ]]; then | |
echo "Create the image-search-server folder with the .env file in it first." >&2 | |
exit 1 | |
fi | |
cd image-search-server | |
docker compose down | |
docker rmi image-search-server:latest | |
mv -f /tmp/image-search-server.tar.gz /tmp/docker-compose.yml ./ | |
docker load -i image-search-server.tar.gz | |
docker compose up -d |