49 lines
1.5 KiB
YAML
49 lines
1.5 KiB
YAML
name: Build and deploy
|
|
|
|
on:
|
|
push:
|
|
# branches: "**"
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Login to registry
|
|
run: echo "${{ secrets.TOKEN }}" | docker login ${{ secrets.GIT_HOST }} -u ${{ secrets.USERNAME }} --password-stdin
|
|
|
|
- name: Build and push app
|
|
run: |
|
|
docker build -t ${{ secrets.GIT_HOST }}/${{ gitea.repository }}:app -f app/Dockerfile ./app
|
|
docker push ${{ secrets.GIT_HOST }}/${{ gitea.repository }}:app
|
|
|
|
deploy:
|
|
runs-on: ubuntu-latest
|
|
needs: build
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Instasll SSH key
|
|
uses: webfactory/ssh-agent@v0.9.0
|
|
with:
|
|
ssh-private-key: ${{ secrets.DEPLOY_SSH_KEY }}
|
|
|
|
- name: Add host to known_hosts
|
|
run: ssh-keyscan -H ${{ secrets.LXC_HOST }} >> ~/.ssh/known_hosts
|
|
|
|
- name: Deploy docker-compose-ci.yml
|
|
run: scp docker-compose-ci.yml ${{ secrets.LXC_USER }}@${{ secrets.LXC_HOST }}:/srv/app/docker-compose.yml
|
|
|
|
- name: Restart services:
|
|
run: |
|
|
ssh ${{ secrets.LXC_USER }}@${{ secrets.LXC_HOST }} << 'EOF'
|
|
echo "${{ secrets.TOKEN }}" | docker login ${{ secrets.GIT_HOST }} -u ${{ secrets.USERNAME }} --password-stdin
|
|
docker pull ${{ secrets.GIT_HOST }}/${{ gitea.repository }}:app
|
|
cd /srv/app
|
|
docker compose up -d --force-recreate
|
|
docker image prune -f
|
|
EOF |