diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..1154feb --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,58 @@ +name: Deploy +on: + workflow_dispatch: + push: + branches: + - main + paths-ignore: + - '.github/**' + - '.gitignore' + - '**/*/LICENSE.md' + - '**/*/README.md' + - '**/*/Dockerfile' +jobs: + build: + name: Build and push Docker image + runs-on: ubuntu-24.04-arm + outputs: + version: ${{ steps.version.outputs.version }} + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Create version tag + id: version + run: echo "version=$(date +%Y.%m.%d.%H%M%S)" >> $GITHUB_OUTPUT + - name: Build and push server image + working-directory: src/Blog + run: | + TAG=${{ secrets.DOCKERHUB_USERNAME }}/links.stevanfreeborn.com:${{ steps.version.outputs.version }} + docker build -t $TAG . + docker push $TAG + deploy: + name: Deploy to server + runs-on: ubuntu-latest + needs: build + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Run deploy script + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.SSH_HOST }} + username: ${{ secrets.SSH_USERNAME }} + key: ${{ secrets.SSH_KEY }} + script: | + TAG=${{ secrets.DOCKERHUB_USERNAME }}/links.stevanfreeborn.com:${{ steps.version.outputs.version }} + docker stop links.stevanfreeborn.com + docker rm links.stevanfreeborn.com + docker pull $TAG + docker run --restart always -d -p 7777:7777 --name links.stevanfreeborn.com $TAG