{"id":17465431,"url":"https://github.com/suhlig/concourse-rss-resource","last_synced_at":"2025-04-19T20:25:23.316Z","repository":{"id":12770691,"uuid":"72763298","full_name":"suhlig/concourse-rss-resource","owner":"suhlig","description":"Concourse CI resource for RSS feeds","archived":false,"fork":false,"pushed_at":"2025-04-09T09:25:27.000Z","size":459,"stargazers_count":11,"open_issues_count":4,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-18T19:14:32.615Z","etag":null,"topics":["concourse","feed","rss"],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/suhlig.png","metadata":{"files":{"readme":"README.markdown","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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":"2016-11-03T16:11:43.000Z","updated_at":"2025-04-09T09:25:25.000Z","dependencies_parsed_at":"2023-10-12T20:15:27.937Z","dependency_job_id":"fd8e2164-dacd-4701-8b70-5152087c71a9","html_url":"https://github.com/suhlig/concourse-rss-resource","commit_stats":{"total_commits":310,"total_committers":5,"mean_commits":62.0,"dds":0.4032258064516129,"last_synced_commit":"1f14a22e24186c92a161e9fa475f7e63eedda2f6"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suhlig%2Fconcourse-rss-resource","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suhlig%2Fconcourse-rss-resource/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suhlig%2Fconcourse-rss-resource/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suhlig%2Fconcourse-rss-resource/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/suhlig","download_url":"https://codeload.github.com/suhlig/concourse-rss-resource/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249793456,"owners_count":21326548,"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":["concourse","feed","rss"],"created_at":"2024-10-18T11:42:41.498Z","updated_at":"2025-04-19T20:25:23.299Z","avatar_url":"https://github.com/suhlig.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# concourse-rss-resource\n\n[Concourse](https://concourse-ci.org/ \"Concourse Homepage\") [resource](https://concourse-ci.org/implementing-resources.html \"Implementing a Resource\") for RSS feeds. See the [example](example/README.markdown) folder for a pipeline that sends a Slack notification when a new Postgres release is available.\n\n# Resource Type Configuration\n\n```yaml\nresource_types:\n  - name: rss-resource\n    type: registry-image\n    source:\n      repository: ghcr.io/suhlig/concourse-rss-resource # drop ghcr.io to fetch from docker.io\n      tag: latest\n```\n\n# Source Configuration\n\n* `url`: *Required.* The URL of the feed. Anything that can be parsed by Ruby's [RSS](https://www.rubydoc.info/gems/rss) gem should be good.\n\n# Behavior\n\n## `check`: Extract items from the feed\n\nThe resource will fetch the feed specified in `url` and will version items by their `pubDate` attribute.\n\n**Example**\n\nAs of writing this README, the [PostgreSQL versions feed](https://www.postgresql.org/versions.rss) has a number of items with a `pubDate` of \"`Thu, 27 Oct 2016 00:00:00 +0000`\" (`9.6.1`, `9.5.5`, `9.4.10`, `9.3.15`, `9.2.19`, `9.1.24`, and `9.0.23`), of which `9.6.1` is the first and is being returned from `check`.\n\n## `in`: Fetch an item from the feed\n\nThe resource will select the first item of the feed that has the requested `pubDate`. For each attribute of the that item, it writes the attribute value to a file into the destination directory.\n\n**Example**\n\nAsked for the version with a `pubDate` of \"`Thu, 27 Oct 2016 00:00:00 +0000`\" on `in`, the resource will write the following files to the destination directory:\n\n| File Name   | Content                                                       |\n| ----------- | ------------------------------------------------------------- |\n|`title`      | 9.6.1                                                         |\n|`link`       | https://www.postgresql.org/docs/9.6/static/release-9-6-1.html |\n|`description`| 9.6.1 is the latest release in the 9.6 series.                |\n|`pubDate`    | Thu, 27 Oct 2016 00:00:00 +0000                               |\n|`guid`       | https://www.postgresql.org/docs/9.6/static/release-9-6-1.html |\n\nYou can then read these files in a task and, for example, construct a [Slack notification](https://github.com/cloudfoundry-community/slack-notification-resource) saying which new PostgreSQL version is available.\n\n## `out`: Not implemented\n\nThere is no output from this resource.\n\n# Development\n\n## One-time Setup\n\n```bash\nbundle install\n```\n\n## Running the Tests\n\nTests assume you have a running docker daemon:\n\n```bash\nbundle exec rake\n```\n\n# CI\n\n```command\n$ fly -t \"$CONCOURSE_TARGET\" set-pipeline -p concourse-rss-resource -c ci/pipeline.yml -v git-branch=$GIT_BRANCH -l ci/private-config.yml\n```\n\nwhere `ci/private-config.yml` contains the secrets referenced in `pipeline.yml`.\n\n## Registry Images\n\nAfter a `git push` to the master branch, the pipeline builds the image and publishes it to Docker Hub and GHCR.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuhlig%2Fconcourse-rss-resource","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsuhlig%2Fconcourse-rss-resource","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuhlig%2Fconcourse-rss-resource/lists"}