{"id":22498340,"url":"https://github.com/iotaledger/gh-tangle-release","last_synced_at":"2025-08-03T04:32:50.771Z","repository":{"id":40345195,"uuid":"229022913","full_name":"iotaledger/gh-tangle-release","owner":"iotaledger","description":"GitHub Action to publish release details to the Tangle","archived":false,"fork":false,"pushed_at":"2025-07-22T09:54:57.000Z","size":1927,"stargazers_count":15,"open_issues_count":53,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-07-22T11:43:39.574Z","etag":null,"topics":["action","github","release","tangle"],"latest_commit_sha":null,"homepage":"","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/iotaledger.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"zenodo":null}},"created_at":"2019-12-19T09:42:52.000Z","updated_at":"2025-04-09T10:15:11.000Z","dependencies_parsed_at":"2023-01-11T17:21:52.763Z","dependency_job_id":"3aae5559-558a-47c3-b538-514646681e21","html_url":"https://github.com/iotaledger/gh-tangle-release","commit_stats":{"total_commits":67,"total_committers":4,"mean_commits":16.75,"dds":"0.23880597014925375","last_synced_commit":"a7506b3d4e7928ee3683a4d561d1e1ade6b558cd"},"previous_names":[],"tags_count":37,"template":false,"template_full_name":null,"purl":"pkg:github/iotaledger/gh-tangle-release","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iotaledger%2Fgh-tangle-release","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iotaledger%2Fgh-tangle-release/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iotaledger%2Fgh-tangle-release/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iotaledger%2Fgh-tangle-release/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iotaledger","download_url":"https://codeload.github.com/iotaledger/gh-tangle-release/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iotaledger%2Fgh-tangle-release/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268369546,"owners_count":24239648,"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","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["action","github","release","tangle"],"created_at":"2024-12-06T21:06:30.179Z","updated_at":"2025-08-03T04:32:50.410Z","avatar_url":"https://github.com/iotaledger.png","language":"JavaScript","readme":"# GitHub Action to Add Release Metadata to The IOTA Tangle\n\nThis GitHub Action will take the contents of your GitHub tagged release and create an associated transaction on the IOTA Tangle. This way the data associated with the release becomes immutable.\n\nThe action will perform the following steps:\n\n* Load the release tagged by the input `tag_name`\n* Create a signature for the content of `tarball_url`\n* Create a signature for the content of `zipball_url`\n* Create a signature for each of the attached assets\n* Attach a payload to the IOTA Tangle with information about the release and the hashes\n\n### Inputs\n\n- `tag_name`: The name of the tag for this release\n- `comment`: An optional comment to include in the Tangle payload\n\n### Outputs\n\n- `tx_hash`: The hash of the transaction on the Tangle\n- `tx_explore_url`: A url which can be used to explore the transaction on the Tangle\n\n\n## Example Payload\n\n```json\n{\n   \"owner\": \"an-owner\",\n   \"repo\": \"test-repo\",\n   \"tag_name\": \"v0.1.0\",\n   \"name\": \"First full release\",\n   \"comment\": \"My Awesome Release\",\n   \"body\": \"This is the body of the description.\",\n   \"tarball_url\": \"https://api.github.com/repos/an-owner/test-repo/tarball/v0.1.0\",\n   \"tarball_sig\": \"Me3ouGni0h50TOHQklopu3sJdLFh/ZVlPJom3aDRFVQ=\",\n   \"zipball_url\": \"https://api.github.com/repos/an-owner/test-repo/zipball/v0.1.0\",\n   \"zipball_sig\": \"jyQ8U1T4oMSEbT3e9NTuFyoMskwAvti3nmiYKtuh8LU=\",\n   \"assets\": [\n      {\n         \"name\": \"attach-1.zip\",\n         \"size\": 150752,\n         \"url\": \"https://github.com/an-owner/test-repo/releases/download/v0.1.0/attach-1.zip\",\n         \"sig\": \"YQylonV2i+5KtwVN0FxTU7ssWflX+6fC29COSbFOmfQ=\"\n      },\n      {\n         \"name\": \"attach-2.zip\",\n         \"size\": 153054,\n         \"url\": \"https://github.com/an-owner/test-repo/releases/download/v0.1.0/attach-2.zip\",\n         \"sig\": \"a+Rgpf5gs0lpCJ8wt+eymkTdo99RbcP0o1PgLCIT2NE=\"\n      }\n   ]\n}\n```\n\n## Usage\n\nCreate a GitHub workflow in you repo e.g. `/.github/workflows/tangle-release.yml`.\n Most of the environment variables are optional, except for the `IOTA_SEED` which must be 81 trytes in length. For more details on creating a seed see [IOTA Docs - Getting Started - Creating A Seed](https://docs.iota.org/docs/getting-started/0.1/tutorials/create-a-seed)\n\n```yaml\non:\n  push:\n    tags:\n      - 'v*' # Push events to matching v*\n\nname: Create Immutable Release\n\njobs:\n  build:\n    name: Create Immutable Release\n    runs-on: ubuntu-latest\n    steps:\n      - name: Tangle Release\n        id: tangle_release\n        uses: iotaledger/gh-tangle-release@v0.7.2\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n          IOTA_SEED: ${{ secrets.IOTA_SEED }}\n          IOTA_NODE: ${{ secrets.IOTA_NODE }} # Optional, defaults to https://nodes.iota.cafe:443\n          IOTA_ADDRESS_INDEX: ${{ secrets.IOTA_ADDRESS_INDEX }} # Optional, defaults to 0\n          IOTA_DEPTH: ${{ secrets.IOTA_DEPTH }} # Optional, defaults to 3\n          IOTA_MWM: ${{ secrets.IOTA_MWM }} # Optional, defaults to 14\n          IOTA_TAG: ${{ secrets.IOTA_TAG }} # Optional, defaults to GITHUB9RELEASE\n          IOTA_EXPLORE_URL: ${{ secrets.IOTA_EXPLORE_URL }} # Optional, defaults to https://utils.iota.org/transaction/:hash\n        with:\n          tag_name: ${{ github.ref }}\n          comment: My Awesome Release\n\n```\n\n## CLI\n\nThe core features are also available to use as a CLI independently of GitHub Actions.\n\nIf you install the npm package with:\n\n```shell\nnpm install @iota/gh-tangle-release\n```\n\nYou can then execute the following script.\n\n```shell\ngh-tangle-release\n```\n\nYou will then be presented with the following options.\n\n```shell\nGitHub Tangle Release v0.7.2 🚀\n\nUsage: gh-tangle-release [options]\n\nAn application for creating a transaction on the IOTA Tangle from a GitHub release.\n\nOptions:\n  -v, --version               output the current version\n  --github-token \u003cstring\u003e     GitHub token for accessing your repository (required)\n  --owner \u003cstring\u003e            GitHub repository owner (required)\n  --repository \u003cstring\u003e       GitHub repository (required)\n  --release-tag \u003cstring\u003e      The release tag from the GitHub repository (required)\n  --node \u003cstring\u003e             Url of the node to use for attaching the transaction to the tangle (default:\n                              \"https://nodes.iota.cafe:443\")\n  --depth \u003cnumber\u003e            Depth to use for attaching the transaction to the tangle (default: \"3\")\n  --mwm \u003cnumber\u003e              Minimum weight magnitude to use for attaching the transaction to the tangle (default: \"14\")\n  --seed \u003cstring\u003e             81 Tryte seed used to generate addresses (required)\n  --address-index \u003cnumber\u003e    Index number used to generate addresses (default: \"0\")\n  --transaction-tag \u003cstring\u003e  Tag to apply to the Tangle transaction (default: \"GITHUB9RELEASE\")\n  --comment \u003cstring\u003e          An optional comment to include in the Tangle transaction payload\n  --explorer-url \u003cstring\u003e     Url of the explorer to use for exploration link (default: \"https://utils.iota.org/transaction/:hash\")\n  --no-color                  Disable colored output\n  --help                      Display help\n\nYou can also supply some of the options through environment variables:\n   --github-token: GITHUB_TOKEN\n   --owner: GITHUB_REPOSITORY[0]\n   --repository: GITHUB_REPOSITORY[1]\n        where GITHUB_REPOSITORY is formatted owner/repository\n   --release-tag: GITHUB_REF\n   --seed: GTR_SEED\n\n\nExample: gh-tangle-release --github-token a4d936470cb3d66f5434f787c2500bde9764f --owner my-org --repository my-repo --release-tag v1.0.1 --seed AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n  ```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiotaledger%2Fgh-tangle-release","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiotaledger%2Fgh-tangle-release","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiotaledger%2Fgh-tangle-release/lists"}