{"id":15726294,"url":"https://github.com/lirantal/github-actions-hackathon-actionshackathon21","last_synced_at":"2026-01-08T15:15:53.981Z","repository":{"id":45852741,"uuid":"433345946","full_name":"lirantal/github-actions-hackathon-actionshackathon21","owner":"lirantal","description":"Repository for GitHub Actions Hackathon on Dev.to 2021 [actionshackathon21]","archived":false,"fork":false,"pushed_at":"2021-12-03T19:41:18.000Z","size":20,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-06T06:48:33.675Z","etag":null,"topics":["actionshackathon21"],"latest_commit_sha":null,"homepage":"https://dev.to/lirantal/the-maintainers-ci-workflows-recipe-for-a-peaceful-open-source-life-157m","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lirantal.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}},"created_at":"2021-11-30T08:10:24.000Z","updated_at":"2021-12-03T19:41:21.000Z","dependencies_parsed_at":"2022-09-05T05:21:13.349Z","dependency_job_id":null,"html_url":"https://github.com/lirantal/github-actions-hackathon-actionshackathon21","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lirantal%2Fgithub-actions-hackathon-actionshackathon21","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lirantal%2Fgithub-actions-hackathon-actionshackathon21/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lirantal%2Fgithub-actions-hackathon-actionshackathon21/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lirantal%2Fgithub-actions-hackathon-actionshackathon21/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lirantal","download_url":"https://codeload.github.com/lirantal/github-actions-hackathon-actionshackathon21/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246403362,"owners_count":20771464,"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":["actionshackathon21"],"created_at":"2024-10-03T22:26:38.024Z","updated_at":"2026-01-08T15:15:53.936Z","avatar_url":"https://github.com/lirantal.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# GitHub Actions Hackathon 2021\n\nThis repository demonstrates the workflows recipe for the GitHub Actions Hackathon with Dev.to 2021\n\n\n---\ntitle: The maintainer's CI workflows recipe for a peaceful open source life\npublished: true\ndescription: My submission to the GitHub Actions x DEV Hackathon 2021!\ntags: actionshackathon21, github, opensource\n---\n\n### My Workflow\n\nMy GitHub Actions hackathon application entry is about all the small things that would contribute to a better maintainer life.\n\nMaintainers usually get a good grip on the important things, like making sure they have a workflow that run code style checkers, tests, and that publishes a package to the registry.\n\nBusy with these, they end up forgetting about the small things that are the details, but as important, for example: having a markdown linter in place to ensure no broken documentation.\n\nCan we reach open source maintainer nirvana?\nI can't promise you that, but I can promise I will do everything I can to put us on that direction.\n\nWith that in mind, I'm suggesting a recipe of several GitHub Actions CI workflows that you can add to your open source repositories at GitHub. I've segmented them into specific areas too.\n\n#### Markdown documentation\n\nThis recipe will introduce the following workflows:\n- **Markdown Style linter** - Making sure your documentation like the `README.md` has proper \n- **Markdown Links linter** - Making sure your documentation has no broken links\n\n#### Dependency management\n\n- **New dependencies advisor** - Add a comment in a Pull Request informing of newly added dependencies and their package health\n\n#### Pull Request engagement\n\n- **Pull Request title update** - Do you manage multiple base branches with PRs to? If you manually updated your PR titles to include this information then now this is automated for you\n\n- **Pull Request contribution fun note** - Welcome contributors to your project by adding a comment that thanks them and embeds an image of a cute animal\n\n### Submission Category: \n\n- Maintainer Must-Haves\n\n### Repository\n\nThe following repository demonstrates the workflow this application suggests:\n\n{% github https://github.com/lirantal/github-actions-hackathon-actionshackathon21 %}\n\n\n### Additional Resources / Info\n\nThe recipe makes use of the following GitHub Actions from the marketplace:\n\n- [ruzickap/action-my-markdown-linter](https://github.com/marketplace/actions/my-markdown-linter)\n- [lirantal/github-action-new-dependencies-alerts](https://github.com/marketplace/actions/new-dependencies-advisor)\n- [ruzickap/action-my-markdown-link-checker](https://github.com/marketplace/actions/my-markdown-link-checker)\n- [circa10a/animal-action](https://github.com/marketplace/actions/animal-action)\n- [lirantal/github-action-pr-title-update-branch](https://github.com/marketplace/actions/pull-request-title-update-to-include-base-branch)\n\n## Demo\n\nLet's put all of it together and see how they add to an overall better experience for both maintainers and contributors alike.\n\n### Pull Request title update\n\n![PR title update with base branch](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g8j6tk3d8efhqd5xcxoc.png)\n\nAs you can see, a few minutes after creating the pull request, the action kicks in and updates the title so that it includes a base branch prefix (the text `[main]`).\n\nTo make that magic happen, we create a brand new GitHub Action workflow file and add this:\n\n\n```yaml\nname: \"PR title update with base branch\"\non: [pull_request]\n\njobs:\n  pr_title_update:\n    runs-on: ubuntu-latest\n    name: \"PR title update with base branch\"\n    steps:\n      - name: \"PR title update with base branch\"\n        uses: lirantal/github-action-pr-title-update-branch@main\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n```\n \n\n### Pull Request contribution fun note\n\n![Pull Request contribution fun note](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a6k92dcbak1ts6g4bn12.png)\n\nAin't it cute to get that nice little note? I think so too ;-)\n\nTo make that magic happen, we create a brand new GitHub Action workflow file and add this:\n\n\n```yaml\n```\n \n\n### New dependency advisor\n\nI can't stress enough how important is making sure you are using healthy dependencies, and those without security vulnerabilities. How can you tell if a new one someone adds to your project is a liability or a gift? \n\n![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zd8nqp52v4ubryjua42w.png)\n \nLuckily, we have the Snyk Advisor, and this handy GitHub Action helping us vet it:\n\n```yaml\nname: \"Deps: show dependencies metadata\"\non:\n  - pull_request\n\njobs:\n  deps_check_new_dependencies:\n    runs-on: ubuntu-latest\n    steps:\n      - name: \"Checkout repo for a local instance\"\n        uses: actions/checkout@v2\n        \n      - name: \"Deps: show dependencies metadata\"\n        uses: lirantal/github-action-new-dependencies-alerts@v1.1.0\n        with:\n          token: ${{ secrets.GITHUB_TOKEN }}\n```\n\n\n### Markdown Style linter\n\nIf a markdown file doesn't confirm to proper style conventions then we can find out about it in the Pull Request CI phase rather than after we see it \"in production\", or in other words, showing up to the whole world as the face of the repository:\n\n![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p50ksjc8aa2oa5wnzjh5.png) \n\nTo make that magic happen, we create a brand new GitHub Action workflow file and add this:\n\n```yaml\non:\n  push:\n\nname: \"Markdown: style\"\njobs:\n  markdown_lint:\n    name: \"Markdown: style\"\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v2\n      - name: \"Markdown: style\"\n        uses: ruzickap/action-my-markdown-linter@v1\n        with:\n          config_file: .github/markdown-style-config.yml\n          #debug: true\n          search_paths: |\n            ./\n            docs/\n          exclude: |\n            node_modules/\n            coverage/\n            dist/\n            tests/\n            CHANGELOG.md\n```\n\nAnd make sure that you have the accompanying configuration file for it as such:\n\n```yml\n# Default state for all rules\ndefault: true\n\n# MD033/no-inline-html - Inline HTML\nMD033:\n  # Allowed elements\n  allowed_elements: ['p', 'br', 'h1', 'h2', 'h3', 'h4', 'a', 'img']\n  \n# Don't fail on line length limit of 80 chars\nMD013: false\n\n# Don't fail on first line of the file not being a markdown heading (maintainers like beautiful READMEs)\nMD041: false\n```\n\n### Markdown Links linter\n\nWant to avoid broken links in your README? Me too\n\nThat's why I can now find out about it when it happens in the CI process when I push a change via a pull request rather than after the fact:\n\n![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5ohpwmtaceomwoxv153u.png)\n \nTo make that magic happen, we create a brand new GitHub Action workflow file and add this:\n\n```yaml\non:\n  push:\n\nname: \"Markdown: broken links\"\njobs:\n  markdown-link-check:\n    name: \"Markdown: broken links\"\n    runs-on: ubuntu-latest\n    steps:\n      - name: \"Checkout project\"\n        uses: actions/checkout@v2\n\n      - name: \"Markdown: broken links\"\n        uses: ruzickap/action-my-markdown-link-checker@v1\n```\n\nThat's it, have fun!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flirantal%2Fgithub-actions-hackathon-actionshackathon21","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flirantal%2Fgithub-actions-hackathon-actionshackathon21","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flirantal%2Fgithub-actions-hackathon-actionshackathon21/lists"}