name: Badgey Deployment run-name: Deploy to prod on: push: branches: - main jobs: build: runs-on: rust container: image: xyonofcalhoun/manifold:latest env: GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} steps: - name: Checkout uses: actions/checkout@v3 - name: Build (Release) run: cargo build --release --color=always - name: Archive artifact uses: actions/upload-artifact@v3 with: name: badgey path: target/release/badgey deploy: runs-on: rust container: options: --dns 172.16.255.254 strategy: matrix: bot: [ BADGEY, M5_COMPUTER ] steps: - name: Checkout uses: actions/checkout@v3 - name: Download artifact uses: actions/download-artifact@v3 with: name: badgey - name: Seed config file uses: cschleiden/replace-tokens@v1.2 with: files: config/production.badgey.json env: BOT_NICKNAME: ${{ vars[format('{0}_BOT_NICKNAME', matrix.bot) }} LOG_CHANNEL_ID: ${{ vars[format('{0}_LOG_CHANNEL_ID', matrix.bot) }} POSTGRES_HOST: ${{ vars.POSTGRES_HOST }} POSTGRES_USER: ${{ vars.POSTGRES_USER }} POSTGRES_DATABASE_NAME: ${{ vars[format('{0}_POSTGRES_DATABASE_NAME', matrix.bot) }} POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }} WEATHER_API_KEY: ${{ secrets.WEATHER_API_KEY }} DOGPICS_API_KEY: ${{ secrets.DOGPICS_API_KEY }} CATPICS_API_KEY: ${{ secrets.CATPICS_API_KEY }} - name: ssh-scp-ssh-pipelines uses: cross-the-world/ssh-scp-ssh-pipelines@v1.1.4 env: BOT_NAME: ${{ vars[format('{0}_SERVER_HOSTNAME', matrix.bot) }} with: host: ${{ vars[format('{0}_SERVER_HOSTNAME', matrix.bot) }} user: badgey key: ${{ secrets.DEPLOY_KEY }} first_ssh: | sudo /usr/bin/systemctl stop $BOT_NAME scp: | ./badgey => /srv/$BOT_NAME/$BOT_NAME ./config => /srv/$BOT_NAME/ ./txt => /srv/$BOT_NAME/ last_ssh: | sudo /usr/bin/systemctl start $BOT_NAME