{"id":17859868,"url":"https://github.com/gurneesh9/cloudrunify","last_synced_at":"2025-10-15T10:40:12.705Z","repository":{"id":259634312,"uuid":"875926711","full_name":"gurneesh9/cloudrunify","owner":"gurneesh9","description":"A Comprehensive, user-friendly tool that enables declarative deployments for CloudRun","archived":false,"fork":false,"pushed_at":"2024-12-20T15:54:46.000Z","size":19961,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-08T10:34:01.746Z","etag":null,"topics":["bun","cloudrun","declerative","gcp","iac","serverless","typescript","yaml"],"latest_commit_sha":null,"homepage":"https://runify-lp.vercel.app/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gurneesh9.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-21T05:36:55.000Z","updated_at":"2024-12-20T15:54:49.000Z","dependencies_parsed_at":"2024-10-27T01:32:30.952Z","dependency_job_id":"ed9721be-30f3-4e30-83f2-69116646c952","html_url":"https://github.com/gurneesh9/cloudrunify","commit_stats":null,"previous_names":["gurneesh9/cloudrunify"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gurneesh9%2Fcloudrunify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gurneesh9%2Fcloudrunify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gurneesh9%2Fcloudrunify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gurneesh9%2Fcloudrunify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gurneesh9","download_url":"https://codeload.github.com/gurneesh9/cloudrunify/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246884769,"owners_count":20849554,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bun","cloudrun","declerative","gcp","iac","serverless","typescript","yaml"],"created_at":"2024-10-28T07:03:46.646Z","updated_at":"2025-10-15T10:40:07.685Z","avatar_url":"https://github.com/gurneesh9.png","language":"TypeScript","readme":"Made with ❤️ using TypeScript and Deno by [Gurneesh](https://github.com/gurneesh9)\n# Vision: CloudRunify - Declarative Deployment Tool for Google Cloud Run\n\n## 1. Problem Statement\n\nDevelopers using Google Cloud Run lack a streamlined, declarative deployment tool similar to Wrangler for Cloudflare Workers. This gap results in complex deployment processes, increased potential for configuration errors, and reduced developer productivity.\n\n## 2. Solution Overview\n\nCreate a comprehensive, user-friendly tool that enables declarative deployments for Google Cloud Run, simplifying the process and improving developer experience.\n\n## 3. Key Objectives\n\n1. Simplify Cloud Run deployments\n2. Provide a declarative configuration approach\n3. Enhance version control for service configurations\n4. Enable easy management of multiple environments\n5. Improve CI/CD integration for Cloud Run services\n\n## 4. Core Features\n\n### 4.1 Declarative Configuration\n\n- Use a single YAML file (`cloudrun.yaml`) to define entire service configuration\n- Support multiple environment definitions within one file\n\n### 4.2 CLI Interface\n\n- Develop an intuitive command-line interface for deployments and management\n- Implement commands like `deploy`, `rollback`, and `status`\n\n### 4.3 Version Management\n\n- Enable uploading and managing different versions of services\n- Provide easy rollback functionality\n\n### 4.4 Traffic Management\n\n- Support gradual rollouts and traffic splitting between versions\n- Allow percentage-based traffic allocation\n\n### 4.5 Environment Management\n\n- Facilitate easy switching between development, staging, and production environments\n- Support environment-specific configurations\n\n## 5. Additional Features\n\n### 5.1 Secrets Management\n\n- Integrate with Google Secret Manager for secure handling of sensitive data\n\n### 5.2 Custom Domain Management\n\n- Allow declarative configuration of custom domain mappings\n\n### 5.3 Monitoring and Alerting\n\n- Enable setting up Cloud Monitoring alerts and dashboards via configuration\n\n### 5.4 CI/CD Integration\n\n- Provide plugins or actions for popular CI/CD platforms (e.g., GitHub Actions, GitLab CI)\n\n## 6. User Experience\n\n- Design an intuitive, developer-friendly interface\n- Prioritize clear, helpful error messages and logs\n- Develop comprehensive documentation and examples\n\n## 7. Technical Architecture\n\n- Implement the tool using a modern, maintainable programming language (e.g., TypeScript with Deno)\n- Utilize Google Cloud APIs for interacting with Cloud Run and related services\n- Design a modular architecture to allow for future expansions\n\n## 8. Adoption Strategy\n\n1. Open-source the tool to encourage community contributions and adoption\n2. Create tutorials and blog posts to showcase the tool's capabilities\n3. Engage with the Google Cloud community to gather feedback and iterate on features\n4. Explore potential integration or partnership opportunities with Google Cloud\n\n## 9. Success Metrics\n\n- Number of active users and deployments\n- Reduction in deployment time and errors for Cloud Run services\n- Community engagement (GitHub stars, forks, contributions)\n- User satisfaction and feedback\n\n## 10. Roadmap\n\n### Phase 1: MVP (3 months)\n- Implement core declarative configuration and deployment features\n- Develop basic CLI interface\n- Release initial version and gather early adopter feedback\n\n### Phase 2: Enhancement (3 months)\n- Add version management and traffic splitting features\n- Implement secrets management integration\n- Improve CI/CD integration capabilities\n\n### Phase 3: Advanced Features (6 months)\n- Develop custom domain management\n- Implement monitoring and alerting configuration\n- Enhance user experience based on community feedback\n\n### Phase 4: Ecosystem Growth (Ongoing)\n- Continuously improve and expand features based on user needs\n- Foster community contributions and plugins\n- Explore advanced use cases and integrations\n\n## 11. Conclusion\n\nCloudRunify aims to significantly improve the developer experience, streamline deployments, and bring the simplicity of tools like Wrangler to the Cloud Run ecosystem. By focusing on user needs and leveraging the power of declarative configurations, we can create a valuable asset for the Google Cloud community.\n\n---\n# Example Usage Github Actions\n\n* Save service account secret in GOOGLE_CREDENTIALS\n\nname: CloudRunify Deployment\n\non:\n  push:\n    branches:\n      - main  # Change to the branch you want to trigger the deployment\n\njobs:\n  deploy:\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Checkout Code\n        uses: actions/checkout@v3\n\n      - name: Authenticate to Google Cloud\n        uses: google-github-actions/auth@v1\n        with:\n          credentials_json: ${{ secrets.GOOGLE_CREDENTIALS }}\n\n      - name: Set Google Cloud Project\n        run: |\n          gcloud config set project scrape-429402\n          curl -L -o cloudrunify.cjs \"https://github.com/gurneesh9/cloudrunify/releases/download/v0.0.1/cloudrunify.cjs\"\n          node cloudrunify.cjs deploy\n\n\u003cimg width=\"1111\" alt=\"Screenshot 2024-10-26 at 11 20 20 PM\" src=\"https://github.com/user-attachments/assets/11eeee41-5ca7-42ef-a3a1-1db550a6ae52\"\u003e\n\n\n# Example usage local\n* Download cloudrunify.cjs\n* cp cloudrunify.cjs /usr/local/bin/cloudrunify\n* cloudrunify init / package / deploy\n\n* Eample YAML for simple service deployment\n\u003cimg width=\"1002\" alt=\"Screenshot 2024-10-26 at 11 31 40 PM\" src=\"https://github.com/user-attachments/assets/254a8d6c-dec2-4321-8838-91997d74086a\"\u003e\n\n### Secret Management\n\nCloudRunify provides commands to manage secrets in Google Cloud Secret Manager.  These secrets can then be used in your Cloud Run deployments.\n\n#### Create Secret\n\n```bash\ncloudrunify secret create -p [PROJECT_ID] -n [SECRET_NAME] -r [REGION] -k [KEY_FILE_PATH]\n```\n\nThis command creates a new secret in Google Cloud Secret Manager.  It prompts you for the secret value.\n\n*   `-p, --project \u003cprojectId\u003e`: Google Cloud Project ID (required)\n*   `-n, --name \u003csecretName\u003e`: Secret Name (required)\n*   `-r, --region \u003cregion\u003e`: Region (required, defaults to us-central1)\n*   `-k, --key \u003cpath\u003e`: Path to service account key file or 'json' for GitHub Actions (optional)\n\n#### Delete Secret\n\n```bash\ncloudrunify secret delete -p [PROJECT_ID] -n [SECRET_NAME] -r [REGION] -k [KEY_FILE_PATH]\n```\n\nThis command deletes a secret from Google Cloud Secret Manager. It prompts for confirmation.\n\n*   `-p, --project \u003cprojectId\u003e`: Google Cloud Project ID (required)\n*   `-n, --name \u003csecretName\u003e`: Secret Name (required)\n*   `-r, --region \u003cregion\u003e`: Region (required, defaults to us-central1)\n*   `-k, --key \u003cpath\u003e`: Path to service account key file or 'json' for GitHub Actions (optional)\n\n#### List Secrets\n\n```bash\ncloudrunify secret list -p [PROJECT_ID] -k [KEY_FILE_PATH]\n```\n\nThis command lists all secrets in the specified project.\n\n*   `-p, --project \u003cprojectId\u003e`: Google Cloud Project ID (required)\n*   `-k, --key \u003cpath\u003e`: Path to service account key file or 'json' for GitHub Actions (optional)\n\n\n### Using Secrets with Cloud Run Deployments\n\nTo use secrets in your Cloud Run deployments, add a `secrets` section to your `cloudrun.yaml` file:\n\n```yaml\nversion: \"1.0\"\nproject_id: \"your-project-id\"\nregion: \"us-central1\"\nservice:\n  name: \"your-service-name\"\n  allow_unauthenticated: false\ncontainer:\n  image: \"your-image-name\"\n  port: 8080\n  env_vars:\n    - name: MY_SECRET_ENV\n      value: \"$(MY_SECRET)\"\n  resources:\n    cpu: \"1\"\n    memory: \"256Mi\"\n  scaling:\n    min_instances: 1\n    max_instances: 2\n    concurrency: 100\nsecrets:\n  - name: MY_SECRET\n    version: \"1\"\n    mount_path: \"/secrets/my-secret\"\ntraffic:\n  - tag: \"latest\"\n    percent: 100\n```\n\nRemember to create the secret using the `secret create` command before deploying.  The `value` field in `env_vars` uses the syntax `$(SECRET_NAME)` to reference the secret.\n\n\n## Contributing\n\nContributions are welcome! Please open an issue or submit a pull request.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgurneesh9%2Fcloudrunify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgurneesh9%2Fcloudrunify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgurneesh9%2Fcloudrunify/lists"}