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