| name: 🚂 Deploy Core Python | |
| on: | |
| push: | |
| branches: [main] | |
| paths: | |
| - "core-python/**" | |
| - ".github/workflows/core-python-deploy.yml" | |
| workflow_dispatch: | |
| inputs: | |
| github_environment: | |
| description: "GitHub environment ar Railway secrets" | |
| required: false | |
| type: environment | |
| permissions: | |
| contents: read | |
| env: | |
| FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true | |
| concurrency: | |
| group: railway-core-python-deploy | |
| cancel-in-progress: true | |
| jobs: | |
| deploy: | |
| name: Deploy Core Python to Railway | |
| if: ${{ (github.event_name == 'push' && !vars.RAILWAY_GITHUB_ENVIRONMENT) || (github.event_name == 'workflow_dispatch' && !(inputs.github_environment || vars.RAILWAY_GITHUB_ENVIRONMENT)) }} | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: core-python | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "20" | |
| - name: Install Railway CLI | |
| run: npm install -g @railway/cli | |
| - name: Deploy to Railway | |
| env: | |
| RAILWAY_PROJECT_ID: ${{ vars.RAILWAY_CORE_PYTHON_PROJECT_ID || vars.RAILWAY_PROJECT_ID }} | |
| RAILWAY_SERVICE: ${{ vars.RAILWAY_CORE_PYTHON_SERVICE || vars.RAILWAY_SERVICE }} | |
| RAILWAY_TOKEN: ${{ secrets.RAILWAY_CORE_PYTHON_TOKEN || secrets.RAILWAY_TOKEN }} | |
| RAILWAY_ENVIRONMENT: ${{ secrets.RAILWAY_CORE_PYTHON_ENVIRONMENT || secrets.RAILWAY_ENVIRONMENT }} | |
| run: | | |
| if [ -z "$RAILWAY_TOKEN" ]; then | |
| echo "Missing required GitHub secret: RAILWAY_TOKEN" | |
| exit 1 | |
| fi | |
| service="${RAILWAY_SERVICE:-maris-core-python}" | |
| args=(up . --detach --path-as-root --service "$service") | |
| if [ -n "$RAILWAY_PROJECT_ID" ]; then | |
| args+=(--project "$RAILWAY_PROJECT_ID") | |
| fi | |
| if [ -n "$RAILWAY_ENVIRONMENT" ]; then | |
| args+=(--environment "$RAILWAY_ENVIRONMENT") | |
| fi | |
| echo "Deploying Railway service: $service" | |
| railway "${args[@]}" | |
| deploy-with-environment: | |
| name: Deploy Core Python to Railway | |
| if: ${{ (github.event_name == 'push' && vars.RAILWAY_GITHUB_ENVIRONMENT) || (github.event_name == 'workflow_dispatch' && (inputs.github_environment || vars.RAILWAY_GITHUB_ENVIRONMENT)) }} | |
| runs-on: ubuntu-latest | |
| environment: | |
| name: ${{ github.event_name == 'workflow_dispatch' && inputs.github_environment || vars.RAILWAY_GITHUB_ENVIRONMENT }} | |
| defaults: | |
| run: | |
| working-directory: core-python | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "20" | |
| - name: Install Railway CLI | |
| run: npm install -g @railway/cli | |
| - name: Deploy to Railway | |
| env: | |
| RAILWAY_PROJECT_ID: ${{ vars.RAILWAY_CORE_PYTHON_PROJECT_ID || vars.RAILWAY_PROJECT_ID }} | |
| RAILWAY_SERVICE: ${{ vars.RAILWAY_CORE_PYTHON_SERVICE || vars.RAILWAY_SERVICE }} | |
| RAILWAY_TOKEN: ${{ secrets.RAILWAY_CORE_PYTHON_TOKEN || secrets.RAILWAY_TOKEN }} | |
| RAILWAY_ENVIRONMENT: ${{ secrets.RAILWAY_CORE_PYTHON_ENVIRONMENT || secrets.RAILWAY_ENVIRONMENT }} | |
| run: | | |
| if [ -z "$RAILWAY_TOKEN" ]; then | |
| echo "Missing required GitHub secret: RAILWAY_TOKEN" | |
| exit 1 | |
| fi | |
| service="${RAILWAY_SERVICE:-maris-core-python}" | |
| args=(up . --detach --path-as-root --service "$service") | |
| if [ -n "$RAILWAY_PROJECT_ID" ]; then | |
| args+=(--project "$RAILWAY_PROJECT_ID") | |
| fi | |
| if [ -n "$RAILWAY_ENVIRONMENT" ]; then | |
| args+=(--environment "$RAILWAY_ENVIRONMENT") | |
| fi | |
| echo "Deploying Railway service: $service" | |
| railway "${args[@]}" | |