{"id":26578827,"url":"https://github.com/infraspecdev/terraform-module-gcs-publisher","last_synced_at":"2026-04-29T22:04:33.102Z","repository":{"id":283863271,"uuid":"953131804","full_name":"infraspecdev/terraform-module-gcs-publisher","owner":"infraspecdev","description":"This action helps you automate the process of publishing Terraform modules to GCS buckets, which can be used as a private Terraform module registry.","archived":false,"fork":false,"pushed_at":"2025-03-22T16:44:46.000Z","size":0,"stargazers_count":0,"open_issues_count":9,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-22T17:32:11.180Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/infraspecdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2025-03-22T16:35:20.000Z","updated_at":"2025-03-22T16:44:50.000Z","dependencies_parsed_at":"2025-03-22T20:00:10.367Z","dependency_job_id":null,"html_url":"https://github.com/infraspecdev/terraform-module-gcs-publisher","commit_stats":null,"previous_names":["infraspecdev/terraform-module-gcs-publisher"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infraspecdev%2Fterraform-module-gcs-publisher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infraspecdev%2Fterraform-module-gcs-publisher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infraspecdev%2Fterraform-module-gcs-publisher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infraspecdev%2Fterraform-module-gcs-publisher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/infraspecdev","download_url":"https://codeload.github.com/infraspecdev/terraform-module-gcs-publisher/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245056902,"owners_count":20553856,"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":[],"created_at":"2025-03-23T05:17:10.363Z","updated_at":"2026-04-29T22:04:33.097Z","avatar_url":"https://github.com/infraspecdev.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Terraform Module GCS Publisher\n\nA GitHub Action for publishing Terraform modules to Google Cloud Storage (GCS)\nbuckets with proper versioning.\n\n[![GitHub Marketplace](https://img.shields.io/badge/Marketplace-Terraform%20Module%20GCS%20Publisher-blue.svg?colorA=24292e\u0026colorB=0366d6\u0026style=flat\u0026longCache=true\u0026logo=github)](https://github.com/marketplace/actions/terraform-module-gcs-publisher)\n\n## Overview\n\nThis action helps you automate the process of publishing Terraform modules to\nGCS buckets, which can be used as a private Terraform module registry. It\nhandles:\n\n- Packaging Terraform modules into zip files\n- Uploading modules to GCS with proper versioning\n- Optional cleanup of old versions\n- Cryptographic hash verification\n\n## Security Features\n\n- Minimized dependencies to reduce attack surface\n- All dependencies pinned to specific versions\n- Credentials handled securely with proper cleanup\n- Input validation to prevent injection attacks\n- Uses Google Cloud Storage signed URLs for secure access\n- Proper error handling and logging\n\n## Usage\n\n```yaml\nname: Publish Terraform Module\n\non:\n  release:\n    types: [created]\n\njobs:\n  publish:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v3\n\n      - name: Publish Terraform Module\n        uses: infraspecdev/terraform-module-gcs-publisher@v1\n        with:\n          gcs-bucket: 'your-terraform-modules-bucket'\n          module-name: 'vpc'\n          module-version: ${{ github.event.release.tag_name }}\n          module-path: '.'\n          google-credentials: ${{ secrets.GOOGLE_CREDENTIALS }}\n          delete-old-versions: 'true'\n          keep-versions: '5'\n```\n\n## Inputs\n\n| Input                 | Description                                               | Required | Default |\n| --------------------- | --------------------------------------------------------- | -------- | ------- |\n| `gcs-bucket`          | GCS bucket name where Terraform modules will be stored    | Yes      |         |\n| `module-name`         | Name of the Terraform module                              | Yes      |         |\n| `module-version`      | Version of the Terraform module (semver format)           | Yes      |         |\n| `module-path`         | Path to the Terraform module directory                    | Yes      | `.`     |\n| `google-credentials`  | Google Cloud service account credentials (JSON)           | Yes      |         |\n| `delete-old-versions` | Whether to delete old versions of the module              | No       | `false` |\n| `keep-versions`       | Number of old versions to keep when deleting old versions | No       | `5`     |\n\n## Outputs\n\n| Output       | Description                              |\n| ------------ | ---------------------------------------- |\n| `module-url` | URL of the uploaded Terraform module     |\n| `version`    | Version of the uploaded Terraform module |\n\n## Using Published Modules\n\nYou can reference the modules in your Terraform code by specifying the exact\nversion:\n\n```hcl\nmodule \"vpc\" {\n  source = \"gcs::https://storage.googleapis.com/your-terraform-modules-bucket/modules/vpc/vpc-1.0.0.zip\"\n}\n```\n\nThis approach ensures consistent and predictable deployments by pinning to\nspecific module versions.\n\n## Setting Up GCP Permissions\n\nThe service account used by this GitHub Action needs the following permissions:\n\n- `storage.objects.create`\n- `storage.objects.delete` (if using `delete-old-versions`)\n- `storage.objects.get`\n- `storage.objects.list`\n\n## Contributing\n\nContributions are welcome. Please see [DEVELOPMENT.md](DEVELOPMENT.md) for\ndevelopment setup, guidelines, and workflow information. Submit a Pull Request\nto contribute to this project.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file\nfor details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finfraspecdev%2Fterraform-module-gcs-publisher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finfraspecdev%2Fterraform-module-gcs-publisher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finfraspecdev%2Fterraform-module-gcs-publisher/lists"}