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: Debug output target hostname value run: echo "getting key for ${{ vars[format('{0}_SERVER_HOSTNAME', matrix.bot) }}" - name: Create SSH dir run: mkdir -pv ~/.ssh - name: Seed SSH known_hosts file run: ssh-keyscan -t rsa ${{ vars[format('{0}_SERVER_HOSTNAME', matrix.bot) }} > ~/.ssh/known_hosts - name: Seed SSH key for deploy run: echo "${{ secrets.DEPLOY_KEY }}" | tr -d '\r' > ~/.ssh/id_rsa && chmod 0600 ~/.ssh/id_rsa - name: Deploy run: bash cicd/deploy.sh ${{ vars[format('{0}_SERVER_HOSTNAME', matrix.bot) }}