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[@]}"