on: push: branches: - main env: EXEC: arimelody-web REMOTE: ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} PORT: ${{ secrets.SSH_PORT }} jobs: deploy: runs-on: docker steps: - name: Checkout repository uses: actions/checkout@v4 - name: Set up Go uses: actions/setup-go@v4 with: go-version: '^1.25.1' - name: Run tests run: go test -v ./model - name: Build binary run: make build - name: Bundle tarball run: make bundle - name: Set up SSH keys uses: webfactory/ssh-agent@v0.9.0 with: ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} - name: Copy to production server run: | ssh-keyscan -p $PORT ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts scp -P $PORT ./$EXEC.tar.gz $REMOTE:~/ - name: Restart production run: | ssh -o StrictHostKeyChecking=no $REMOTE -p $PORT << EOT cd ${{ secrets.DEPLOY_DIR }} tar xzf ~/$EXEC.tar.gz /bin/bash ~/restart.sh rm ~/$EXEC.tar.gz EOT