This repository was archived by the owner on Jun 25, 2026. It is now read-only.
chore(deploy): drop legacy single-unit rascal service compatibility #98
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Deploy Rascal | |
| on: | |
| push: | |
| branches: | |
| - main | |
| workflow_dispatch: | |
| concurrency: | |
| group: deploy-rascal-main | |
| cancel-in-progress: true | |
| jobs: | |
| deploy: | |
| name: Deploy to server | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| env: | |
| DEPLOY_HOST: ${{ vars.RASCAL_DEPLOY_HOST || secrets.RASCAL_DEPLOY_HOST }} | |
| DEPLOY_USER: ${{ vars.RASCAL_DEPLOY_SSH_USER || secrets.RASCAL_DEPLOY_SSH_USER || 'root' }} | |
| DEPLOY_PORT: ${{ vars.RASCAL_DEPLOY_SSH_PORT || secrets.RASCAL_DEPLOY_SSH_PORT || '22' }} | |
| DEPLOY_RUNNER_IMAGE: ${{ vars.RASCAL_RUNNER_IMAGE || 'rascal-runner:latest' }} | |
| DEPLOY_DOMAIN: ${{ vars.RASCAL_DOMAIN || secrets.RASCAL_DOMAIN || '' }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version-file: go.mod | |
| cache: true | |
| - name: Run pre-deploy quality gate | |
| run: | | |
| make codegen | |
| git diff --exit-code | |
| go test ./... | |
| - name: Validate deploy config | |
| run: | | |
| if [ -z "${DEPLOY_HOST:-}" ]; then | |
| echo "Missing DEPLOY_HOST. Set vars/secrets RASCAL_DEPLOY_HOST." >&2 | |
| exit 1 | |
| fi | |
| if [ -z "${{ secrets.RASCAL_DEPLOY_SSH_KEY }}" ]; then | |
| echo "Missing secret RASCAL_DEPLOY_SSH_KEY." >&2 | |
| exit 1 | |
| fi | |
| if [ -z "${{ secrets.RASCAL_DEPLOY_KNOWN_HOSTS }}" ]; then | |
| echo "Missing secret RASCAL_DEPLOY_KNOWN_HOSTS." >&2 | |
| exit 1 | |
| fi | |
| - name: Configure SSH | |
| run: | | |
| mkdir -p "$HOME/.ssh" | |
| printf '%s\n' "${{ secrets.RASCAL_DEPLOY_SSH_KEY }}" > "$HOME/.ssh/id_ed25519" | |
| printf '%s\n' "${{ secrets.RASCAL_DEPLOY_KNOWN_HOSTS }}" > "$HOME/.ssh/known_hosts" | |
| chmod 600 "$HOME/.ssh/id_ed25519" | |
| chmod 644 "$HOME/.ssh/known_hosts" | |
| - name: Mask deploy endpoints | |
| run: | | |
| if [ -n "${DEPLOY_HOST:-}" ]; then | |
| echo "::add-mask::${DEPLOY_HOST}" | |
| fi | |
| if [ -n "${DEPLOY_DOMAIN:-}" ]; then | |
| echo "::add-mask::${DEPLOY_DOMAIN}" | |
| echo "::add-mask::https://${DEPLOY_DOMAIN}" | |
| echo "::add-mask::http://${DEPLOY_DOMAIN}" | |
| fi | |
| - name: Deploy | |
| run: | | |
| go build -o ./bin/rascal ./cmd/rascal | |
| ./bin/rascal deploy \ | |
| --host "${DEPLOY_HOST}" \ | |
| --ssh-user "${DEPLOY_USER}" \ | |
| --ssh-port "${DEPLOY_PORT}" \ | |
| --ssh-key "$HOME/.ssh/id_ed25519" \ | |
| --domain "${DEPLOY_DOMAIN}" \ | |
| --runner-image "${DEPLOY_RUNNER_IMAGE}" |