diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..be29699 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,63 @@ +name: Dockerize and Deploy + +on: + push: + branches: + - production + +jobs: + dockerize: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + - + name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - + name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - + name: Build and push + uses: docker/build-push-action@v6 + with: + push: true + tags: nwplus/dinubot:latest + - + name: Upload systemd service file + uses: actions/upload-artifact@v3 + with: + name: dinubot-service-file + path: ./dinubot.service + + deploy: + runs-on: self-hosted + needs: dockerize + + steps: + - name: Download systemd service file + uses: actions/download-artifact@v3 + with: + name: dinubot-service-file + path: . + + - name: Pull Docker image + run: docker pull nwplus/dinubot:latest + + - name: Copy systemd service file + run: sudo cp dinubot.service /etc/systemd/system/dinubot.service + + - name: Reload systemd daemon + run: sudo systemctl daemon-reload + + - name: Enable and start Dinubot service + run: | + sudo systemctl enable dinubot + sudo systemctl start dinubot + diff --git a/dinubot.service b/dinubot.service new file mode 100644 index 0000000..5b46c58 --- /dev/null +++ b/dinubot.service @@ -0,0 +1,18 @@ +[Unit] +Description=DinuBot, nwPlus's internal donut bot +After=network.target + +[Service] +Type=simple +User=ubuntu +Group=ubuntu +WorkingDirectory=/home/ubuntu/DinuBot +ExecStart=/usr/bin/docker compose up +ExecStop=/usr/bin/docker compose down +Restart=always + +[Install] +WantedBy=multi-user.target + +[Service] +Restart=always diff --git a/docker-compose.yml b/docker-compose.yml index 70f242a..ea4cace 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,6 @@ services: dinubot: - image: lsha0730/dinubot + image: nwplus/dinubot build: . env_file: - .env