{"id":7051,"date":"2023-09-14T07:54:58","date_gmt":"2023-09-13T23:54:58","guid":{"rendered":"https:\/\/i007.vip:15443\/wordpress\/?p=7051"},"modified":"2023-09-14T07:54:58","modified_gmt":"2023-09-13T23:54:58","slug":"10-%e4%b8%aa%e4%bd%a0%e8%af%a5%e4%ba%86%e8%a7%a3%e7%9a%84-github-actions-%e8%bf%9b%e9%98%b6%e6%8a%80%e5%b7%a7","status":"publish","type":"post","link":"https:\/\/i007.cc\/wordpress\/archives\/7051","title":{"rendered":"10 \u4e2a\u4f60\u8be5\u4e86\u89e3\u7684 GitHub Actions \u8fdb\u9636\u6280\u5de7"},"content":{"rendered":"<p class=\"single__title\" data-ani=\"true\"><a href=\"https:\/\/www.chenshaowen.com\/blog\/10-tips-of-github-action.html\">cc from<\/a><\/p>\n<h3 class=\"single__subtitle\"><\/h3>\n<div class=\"single__meta\">\n<div class=\"single__infos\"><time class=\"single__info\" title=\"\u521b\u5efa\u65e5\u671f\">?\u00a02021\u5e7401\u670831\u65e5<\/time>\u00a0\u00b7\u00a0<span class=\"single__info\" title=\"\u9605\u8bfb\u65f6\u957f\">\u2615\u00a05\u00a0\u5206\u949f<\/span><\/div>\n<ul class=\"single__tags caption\">?\ufe0f<\/p>\n<li><a class=\"single__tag\" title=\"\u535a\u6587\" href=\"https:\/\/www.chenshaowen.com\/tags\/%E5%8D%9A%E6%96%87\/\">#\u535a\u6587<\/a><\/li>\n<li><a class=\"single__tag\" title=\"GitHub\" href=\"https:\/\/www.chenshaowen.com\/tags\/github\/\">#GitHub<\/a><\/li>\n<li><a class=\"single__tag\" title=\"Actions\" href=\"https:\/\/www.chenshaowen.com\/tags\/actions\/\">#Actions<\/a><\/li>\n<li><a class=\"single__tag\" title=\"CICD\" href=\"https:\/\/www.chenshaowen.com\/tags\/cicd\/\">#CICD<\/a><\/li>\n<li><a class=\"single__tag\" title=\"DevOps\" href=\"https:\/\/www.chenshaowen.com\/tags\/devops\/\">#DevOps<\/a><\/li>\n<\/ul>\n<\/div>\n<article class=\"single__contents\" data-dir=\"ltr\" data-ani=\"true\"><img decoding=\"async\" src=\"https:\/\/www.chenshaowen.com\/blog\/images\/2021\/01\/10-tips-github-action.png\" alt=\"\" \/><\/p>\n<blockquote><p>\u5982\u679c\u4f60\u5df2\u7ecf\u5728\u4f7f\u7528 GitHub Actions \uff0c\u90a3\u4e48\u9605\u8bfb\u672c\u6587\u4f60\u5c06\u83b7\u5f97\u66f4\u591a\u6709\u8da3\u800c\u6709\u7528\u7684\u6253\u5f00\u65b9\u5f0f\u3002\u9605\u8bfb\u5b8c\uff0c\u6211\u53c8\u7ed9\u4ed3\u5e93\u65b0\u589e\u4e86\u51e0\u4e2a workflow \u3002<\/p><\/blockquote>\n<h2 id=\"1-workflow-\u6267\u884c\u65f6\u4f20\u5165\u53c2\u6570\">1. workflow \u6267\u884c\u65f6\uff0c\u4f20\u5165\u53c2\u6570<\/h2>\n<p>\u5728\u6267\u884c workflow \u65f6, \u5141\u8bb8\u5728 GitHub Actions \u9875\u9762\u8f93\u5165\u53c2\u6570\uff0c\u63a7\u5236\u6267\u884c\u903b\u8f91\u3002\u6211\u4eec\u53ef\u4ee5\u5c06\u4eba\u5de5\u5904\u7406\u7684\u903b\u8f91\uff0c\u5728 GitHub Actions \u53c2\u6570\u5316\u6267\u884c\uff0c\u9002\u7528\u4e8e\u6301\u7eed\u90e8\u7f72\u573a\u666f\u3002<\/p>\n<div class=\"highlight\">\n<div class=\"chroma\">\n<table class=\"lntable\">\n<tbody>\n<tr>\n<td class=\"lntd\">\n<div class=\"language-code\" data-lang=\"Code\">\n<pre class=\"chroma\" tabindex=\"0\"><code><span class=\"lnt\"> 1\r\n<\/span><span class=\"lnt\"> 2\r\n<\/span><span class=\"lnt\"> 3\r\n<\/span><span class=\"lnt\"> 4\r\n<\/span><span class=\"lnt\"> 5\r\n<\/span><span class=\"lnt\"> 6\r\n<\/span><span class=\"lnt\"> 7\r\n<\/span><span class=\"lnt\"> 8\r\n<\/span><span class=\"lnt\"> 9\r\n<\/span><span class=\"lnt\">10\r\n<\/span><span class=\"lnt\">11\r\n<\/span><span class=\"lnt\">12\r\n<\/span><span class=\"lnt\">13\r\n<\/span><span class=\"lnt\">14\r\n<\/span><span class=\"lnt\">15\r\n<\/span><span class=\"lnt\">16\r\n<\/span><\/code><\/pre>\n<\/div>\n<\/td>\n<td class=\"lntd\">\n<pre class=\"chroma\" tabindex=\"0\"><code class=\"language-yaml\" data-lang=\"yaml\"><span class=\"line\"><span class=\"cl\"><span class=\"nt\">on<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">workflow_dispatch<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">inputs<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">      <span class=\"nt\">logLevel<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">        <span class=\"nt\">description<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Log level\"<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">        <span class=\"nt\">required<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">        <span class=\"nt\">default<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"warning\"<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">      <span class=\"nt\">tags<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">        <span class=\"nt\">description<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Test scenario tags\"<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"nt\">jobs<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">printInputs<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">runs-on<\/span><span class=\"p\">:<\/span> <span class=\"l\">ubuntu-latest<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">steps<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">      - <span class=\"nt\">run<\/span><span class=\"p\">:<\/span> <span class=\"p\">|<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"sd\">          echo \"Log level: ${{ github.event.inputs.logLevel }}\"\r\n<\/span><\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"sd\">          echo \"Tags: ${{ github.event.inputs.tags }}\"<\/span>          \r\n<\/span><\/span><\/code><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u4e0a\u9762\u7684 workflow \u6267\u884c\u65f6\uff0c\u4f1a\u5f39\u51fa\u5982\u4e0b\u5bf9\u8bdd\u6846\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.chenshaowen.com\/blog\/images\/2021\/01\/github-action-parameter.png\" alt=\"\" \/><\/p>\n<h2 id=\"2-job-\u7f16\u6392\u63a7\u5236\u6267\u884c\u987a\u5e8f\">2. Job \u7f16\u6392\u63a7\u5236\u6267\u884c\u987a\u5e8f<\/h2>\n<p>\u4e00\u4e2a workflow \u7531\u5f88\u591a\u4e2a job \u7ec4\u6210\uff0c\u501f\u52a9\u4e8e needs \u53c2\u6570\uff0c\u6211\u4eec\u53ef\u4ee5\u7ba1\u7406\u8fd9\u4e9b job \u4e4b\u95f4\u7684\u4f9d\u8d56\uff0c\u63a7\u5236\u5176\u6267\u884c\u6d41\u7a0b\u3002<\/p>\n<div class=\"highlight\">\n<div class=\"chroma\">\n<table class=\"lntable\">\n<tbody>\n<tr>\n<td class=\"lntd\">\n<div class=\"language-code\" data-lang=\"Code\">\n<pre class=\"chroma\" tabindex=\"0\"><code><span class=\"lnt\"> 1\r\n<\/span><span class=\"lnt\"> 2\r\n<\/span><span class=\"lnt\"> 3\r\n<\/span><span class=\"lnt\"> 4\r\n<\/span><span class=\"lnt\"> 5\r\n<\/span><span class=\"lnt\"> 6\r\n<\/span><span class=\"lnt\"> 7\r\n<\/span><span class=\"lnt\"> 8\r\n<\/span><span class=\"lnt\"> 9\r\n<\/span><span class=\"lnt\">10\r\n<\/span><span class=\"lnt\">11\r\n<\/span><span class=\"lnt\">12\r\n<\/span><span class=\"lnt\">13\r\n<\/span><span class=\"lnt\">14\r\n<\/span><span class=\"lnt\">15\r\n<\/span><span class=\"lnt\">16\r\n<\/span><span class=\"lnt\">17\r\n<\/span><span class=\"lnt\">18\r\n<\/span><span class=\"lnt\">19\r\n<\/span><span class=\"lnt\">20\r\n<\/span><span class=\"lnt\">21\r\n<\/span><\/code><\/pre>\n<\/div>\n<\/td>\n<td class=\"lntd\">\n<pre class=\"chroma\" tabindex=\"0\"><code class=\"language-yaml\" data-lang=\"yaml\"><span class=\"line\"><span class=\"cl\"><span class=\"nt\">on<\/span><span class=\"p\">:<\/span> <span class=\"l\">push<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"nt\">jobs<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">job1<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">runs-on<\/span><span class=\"p\">:<\/span> <span class=\"l\">ubuntu-latest<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">steps<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">      - <span class=\"nt\">run<\/span><span class=\"p\">:<\/span> <span class=\"l\">echo \"job1\"<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">job2<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">runs-on<\/span><span class=\"p\">:<\/span> <span class=\"l\">ubuntu-latest<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">steps<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">      - <span class=\"nt\">run<\/span><span class=\"p\">:<\/span> <span class=\"l\">sleep 5<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">needs<\/span><span class=\"p\">:<\/span> <span class=\"l\">job1<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">job3<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">runs-on<\/span><span class=\"p\">:<\/span> <span class=\"l\">ubuntu-latest<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">steps<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">      - <span class=\"nt\">run<\/span><span class=\"p\">:<\/span> <span class=\"l\">sleep 10<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">needs<\/span><span class=\"p\">:<\/span> <span class=\"l\">job1<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">job4<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">runs-on<\/span><span class=\"p\">:<\/span> <span class=\"l\">ubuntu-latest<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">steps<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">      - <span class=\"nt\">run<\/span><span class=\"p\">:<\/span> <span class=\"l\">echo \"job4\"<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">needs<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"l\">job2, job3]<\/span>\r\n<\/span><\/span><\/code><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u4e0a\u9762\u7684 workflows \u6267\u884c\u65f6\uff0cjob2 \u548c job3 \u4f1a\u7b49 job1 \u6267\u884c\u6210\u529f\u65f6\u624d\u6267\u884c\uff0cjob4 \u4f1a\u7b49 job2 \u548c job3 \u6267\u884c\u6210\u529f\u65f6\u624d\u6267\u884c\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.chenshaowen.com\/blog\/images\/2021\/01\/github-action-needs.png\" alt=\"\" \/><\/p>\n<h2 id=\"3-\u7528\u4e8e\u9879\u76ee\u7ba1\u7406\">3. \u7528\u4e8e\u9879\u76ee\u7ba1\u7406<\/h2>\n<p>Kubernetes \u57fa\u4e8e ChatOps \u4f7f\u7528 Prow \u534f\u8c03\u793e\u533a\u6709\u5e8f\u534f\u4f5c\u3002\u4f46\u5e76\u4e0d\u662f\u6bcf\u4e2a\u56e2\u961f\uff0c\u90fd\u613f\u610f\u642d\u5efa\u5e76\u7ef4\u62a4\u4e00\u5957 Prow \u673a\u5668\u4eba\u7cfb\u7edf\u3002ChatOps \u5b9e\u73b0\u7684\u6838\u5fc3\u662f\u4e8b\u4ef6\u9a71\u52a8\uff0c\u8fd9\u5728 GitHub \u4e2d\u4f7f\u7528 Actions \u4e5f\u80fd\u5b9e\u73b0\u3002<\/p>\n<p>\u4e0b\u9762\u662f\u51e0\u4e2a\u9879\u76ee\u7ba1\u7406\u76f8\u5173\u7684 action<\/p>\n<ul>\n<li>\u6839\u636e\u4fee\u6539\u7684\u76ee\u5f55\u6dfb\u52a0\u6807\u7b7e<\/li>\n<\/ul>\n<div class=\"highlight\">\n<div class=\"chroma\">\n<table class=\"lntable\">\n<tbody>\n<tr>\n<td class=\"lntd\">\n<div class=\"language-code\" data-lang=\"Code\">\n<pre class=\"chroma\" tabindex=\"0\"><code><span class=\"lnt\">1\r\n<\/span><span class=\"lnt\">2\r\n<\/span><span class=\"lnt\">3\r\n<\/span><\/code><\/pre>\n<\/div>\n<\/td>\n<td class=\"lntd\">\n<pre class=\"chroma\" tabindex=\"0\"><code class=\"language-yaml\" data-lang=\"yaml\"><span class=\"line\"><span class=\"cl\">- <span class=\"nt\">uses<\/span><span class=\"p\">:<\/span> <span class=\"l\">actions\/labeler@main<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">with<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">repo-token<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${{ secrets.GITHUB_TOKEN }}\"<\/span>\r\n<\/span><\/span><\/code><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u5728\u914d\u7f6e\u6587\u4ef6\u00a0<code>.github\/workflows\/labeler.yml<\/code>\u00a0\u4e2d\u6dfb\u52a0\u89c4\u5219\uff0c\u7ed9\u5bf9 docs \u76ee\u5f55\u8fdb\u884c\u4fee\u6539\u7684 Pull Requests(\u4ee5\u4e0b\u7b80\u79f0 PR) \u81ea\u52a8\u6dfb\u52a0\u00a0<code>docs_label<\/code>\u00a0\u6807\u7b7e:<\/p>\n<div class=\"highlight\">\n<div class=\"chroma\">\n<table class=\"lntable\">\n<tbody>\n<tr>\n<td class=\"lntd\">\n<div class=\"language-code\" data-lang=\"Code\">\n<pre class=\"chroma\" tabindex=\"0\"><code><span class=\"lnt\">1\r\n<\/span><span class=\"lnt\">2\r\n<\/span><\/code><\/pre>\n<\/div>\n<\/td>\n<td class=\"lntd\">\n<pre class=\"chroma\" tabindex=\"0\"><code class=\"language-yaml\" data-lang=\"yaml\"><span class=\"line\"><span class=\"cl\"><span class=\"nt\">docs_label<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  - <span class=\"l\">.\/docs\/*<\/span>\r\n<\/span><\/span><\/code><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<ul>\n<li>\u6839\u636e\u6807\u7b7e\u6dfb\u52a0 Issues \u5230 Projects<\/li>\n<\/ul>\n<p>\u4f7f\u7528\u00a0<code>srggrs\/assign-one-project-github-action<\/code>\u00a0, \u6211\u4eec\u53ef\u4ee5\u5c06\u65b0\u589e\u7684 Issues \u6216\u8005 PR \u6dfb\u52a0\u5230\u6307\u5b9a\u7684 Projects \u4e2d\u3002<\/p>\n<div class=\"highlight\">\n<div class=\"chroma\">\n<table class=\"lntable\">\n<tbody>\n<tr>\n<td class=\"lntd\">\n<div class=\"language-code\" data-lang=\"Code\">\n<pre class=\"chroma\" tabindex=\"0\"><code><span class=\"lnt\">1\r\n<\/span><span class=\"lnt\">2\r\n<\/span><span class=\"lnt\">3\r\n<\/span><span class=\"lnt\">4\r\n<\/span><span class=\"lnt\">5\r\n<\/span><\/code><\/pre>\n<\/div>\n<\/td>\n<td class=\"lntd\">\n<pre class=\"chroma\" tabindex=\"0\"><code class=\"language-yaml\" data-lang=\"yaml\"><span class=\"line\"><span class=\"cl\">- <span class=\"nt\">name<\/span><span class=\"p\">:<\/span> <span class=\"l\">Assign NEW issues and NEW pull requests to project 2<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">uses<\/span><span class=\"p\">:<\/span> <span class=\"l\">srggrs\/assign-one-project-github-action@1.2.0<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">if<\/span><span class=\"p\">:<\/span> <span class=\"l\">github.event.action == 'opened'<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">with<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">project<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"https:\/\/github.com\/srggrs\/assign-one-project-github-action\/projects\/2\"<\/span>\r\n<\/span><\/span><\/code><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u4e5f\u53ef\u4ee5\u5c06\u5305\u542b\u6307\u5b9a\u6807\u7b7e\u7684 Issues \u6216 PR \u6dfb\u52a0\u5230\u6307\u5b9a Project \u7684\u6307\u5b9a Column \u4e2d\u3002<\/p>\n<div class=\"highlight\">\n<div class=\"chroma\">\n<table class=\"lntable\">\n<tbody>\n<tr>\n<td class=\"lntd\">\n<div class=\"language-code\" data-lang=\"Code\">\n<pre class=\"chroma\" tabindex=\"0\"><code><span class=\"lnt\">1\r\n<\/span><span class=\"lnt\">2\r\n<\/span><span class=\"lnt\">3\r\n<\/span><span class=\"lnt\">4\r\n<\/span><span class=\"lnt\">5\r\n<\/span><span class=\"lnt\">6\r\n<\/span><span class=\"lnt\">7\r\n<\/span><span class=\"lnt\">8\r\n<\/span><\/code><\/pre>\n<\/div>\n<\/td>\n<td class=\"lntd\">\n<pre class=\"chroma\" tabindex=\"0\"><code class=\"language-yaml\" data-lang=\"yaml\"><span class=\"line\"><span class=\"cl\">- <span class=\"nt\">name<\/span><span class=\"p\">:<\/span> <span class=\"l\">Assign issues and pull requests with `bug` label to project 3<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">uses<\/span><span class=\"p\">:<\/span> <span class=\"l\">srggrs\/assign-one-project-github-action@1.2.0<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">if<\/span><span class=\"p\">:<\/span> <span class=\"p\">|<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"sd\">    contains(github.event.issue.labels.*.name, 'bug') ||\r\n<\/span><\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"sd\">    contains(github.event.pull_request.labels.*.name, 'bug')<\/span>    \r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">with<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">project<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"https:\/\/github.com\/srggrs\/assign-one-project-github-action\/projects\/3\"<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">column_name<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Labeled\"<\/span>\r\n<\/span><\/span><\/code><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<ul>\n<li>\u6e05\u7406\u957f\u65f6\u95f4\u65e0\u4eba\u8ddf\u8fdb\u7684 Issues<\/li>\n<\/ul>\n<p>\u5982\u679c\u4e00\u4e2a Issue \u957f\u8fbe 30 \u5929\u6ca1\u6709\u66f4\u65b0\uff0c\u90a3\u4e48\u4e0b\u9762\u7684 workflow \u5c06\u4f1a\u518d\u7b49 5 \u5929\uff0c\u7136\u540e\u5c06\u5176\u5173\u95ed\u3002<\/p>\n<div class=\"highlight\">\n<div class=\"chroma\">\n<table class=\"lntable\">\n<tbody>\n<tr>\n<td class=\"lntd\">\n<div class=\"language-code\" data-lang=\"Code\">\n<pre class=\"chroma\" tabindex=\"0\"><code><span class=\"lnt\"> 1\r\n<\/span><span class=\"lnt\"> 2\r\n<\/span><span class=\"lnt\"> 3\r\n<\/span><span class=\"lnt\"> 4\r\n<\/span><span class=\"lnt\"> 5\r\n<\/span><span class=\"lnt\"> 6\r\n<\/span><span class=\"lnt\"> 7\r\n<\/span><span class=\"lnt\"> 8\r\n<\/span><span class=\"lnt\"> 9\r\n<\/span><span class=\"lnt\">10\r\n<\/span><span class=\"lnt\">11\r\n<\/span><span class=\"lnt\">12\r\n<\/span><span class=\"lnt\">13\r\n<\/span><span class=\"lnt\">14\r\n<\/span><\/code><\/pre>\n<\/div>\n<\/td>\n<td class=\"lntd\">\n<pre class=\"chroma\" tabindex=\"0\"><code class=\"language-yaml\" data-lang=\"yaml\"><span class=\"line\"><span class=\"cl\"><span class=\"nt\">name<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Close stale issues and PRs\"<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"nt\">on<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">schedule<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    - <span class=\"nt\">cron<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"30 1 * * *\"<\/span>\r\n<\/span><\/span>\r\n<span class=\"line\"><span class=\"cl\"><span class=\"nt\">jobs<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">stale<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">runs-on<\/span><span class=\"p\">:<\/span> <span class=\"l\">ubuntu-latest<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">steps<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">      - <span class=\"nt\">uses<\/span><span class=\"p\">:<\/span> <span class=\"l\">actions\/stale@v3<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">        <span class=\"nt\">with<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">          <span class=\"nt\">stale-issue-message<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.\"<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">          <span class=\"nt\">days-before-stale<\/span><span class=\"p\">:<\/span> <span class=\"m\">30<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">          <span class=\"nt\">days-before-close<\/span><span class=\"p\">:<\/span> <span class=\"m\">5<\/span>\r\n<\/span><\/span><\/code><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>GitHub \u4e0a\u7684\u9879\u76ee\u7ba1\u7406\uff0c\u4e3b\u8981\u662f\u56f4\u7ed5 Issues\u3001Projects\u3001Labels\u3001Pull Requests \u5c55\u5f00\uff0c\u53ef\u4ee5\u5728 GitHub Actions \u7684 Marketplace \u4e2d\u641c\u7d22\u76f8\u5173\u7684 Action \u4f7f\u7528\u3002<\/p>\n<h2 id=\"4-\u5728\u7ebf\u8c03\u8bd5\">4. \u5728\u7ebf\u8c03\u8bd5<\/h2>\n<p>\u5728\u4f7f\u7528 GitHub Actions \u7684\u8fc7\u7a0b\u4e2d\uff0c\u5982\u679c\u9700\u8981\u767b\u5f55\u5230 Runner \u4e0a\u8c03\u8bd5\u547d\u4ee4\uff0c\u90a3\u4e48\u4e0b\u9762\u8fd9\u4e2a\u6280\u5de7\u4f60\u4e00\u5b9a\u4f1a\u611f\u5174\u8da3\u3002<\/p>\n<div class=\"highlight\">\n<div class=\"chroma\">\n<table class=\"lntable\">\n<tbody>\n<tr>\n<td class=\"lntd\">\n<div class=\"language-code\" data-lang=\"Code\">\n<pre class=\"chroma\" tabindex=\"0\"><code><span class=\"lnt\">1\r\n<\/span><span class=\"lnt\">2\r\n<\/span><span class=\"lnt\">3\r\n<\/span><span class=\"lnt\">4\r\n<\/span><span class=\"lnt\">5\r\n<\/span><span class=\"lnt\">6\r\n<\/span><\/code><\/pre>\n<\/div>\n<\/td>\n<td class=\"lntd\">\n<pre class=\"chroma\" tabindex=\"0\"><code class=\"language-yaml\" data-lang=\"yaml\"><span class=\"line\"><span class=\"cl\">- <span class=\"nt\">uses<\/span><span class=\"p\">:<\/span> <span class=\"l\">shaowenchen\/debugger-action@v2<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">name<\/span><span class=\"p\">:<\/span> <span class=\"l\">debugger<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">timeout-minutes<\/span><span class=\"p\">:<\/span> <span class=\"m\">30<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">continue-on-error<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">with<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">ngrok_token<\/span><span class=\"p\">:<\/span> <span class=\"l\">${{ secrets.NGROK_TOKEN }}<\/span>\r\n<\/span><\/span><\/code><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u53ea\u9700\u8981\u53bb Ngrok \u5b98\u7f51\u7533\u8bf7\u4e00\u4e2a token\uff0c\u5c31\u53ef\u4ee5\u901a\u8fc7 ssh \u8fdc\u7a0b\u767b\u5f55\u5230 Runner\u3002\u5f53\u7136\uff0c\u4e5f\u53ef\u4ee5\u66b4\u9732 Runner \u4e0a\u7684\u670d\u52a1\uff0c\u63d0\u4f9b\u5916\u7f51\u8bbf\u95ee\u7684\u94fe\u63a5\uff0c\u6700\u957f\u53ef\u8fbe 6 \u5c0f\u65f6\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.chenshaowen.com\/blog\/images\/2021\/01\/actions-k8s-access.png\" alt=\"\" \/><\/p>\n<p>\u5728\u6267\u884c\u65e5\u5fd7\u4e2d\uff0c\u6211\u4eec\u53ef\u4ee5\u627e\u5230 ssh \u7684\u767b\u5f55\u94fe\u63a5\uff0c\u4f7f\u7528 root\/root \u5373\u53ef\u767b\u5f55 Runner\u3002\u5982\u679c\u914d\u7f6e\u4e86 web \u7684\u7aef\u53e3\u6620\u5c04\uff0c\u8fd8\u53ef\u4ee5\u67e5\u770b\u5230\u76f8\u5173\u7684\u670d\u52a1\u94fe\u63a5\u3002<\/p>\n<h2 id=\"5-\u8bbe\u7f6e\u7f13\u5b58\">5. \u8bbe\u7f6e\u7f13\u5b58<\/h2>\n<p>\u7f13\u5b58\u80fd\u6709\u6548\u5730\u52a0\u5feb\u6784\u5efa\u901f\u5ea6\uff0c\u51cf\u5c11\u7f51\u7edc\u8bf7\u6c42\uff0c\u590d\u7528\u4e2d\u95f4\u7801\u3002\u8fd9\u5bf9\u4e8e Java\u3001Nodejs\u3001Python \u7b49\u9879\u76ee\uff0c\u975e\u5e38\u6709\u7528\u3002<\/p>\n<div class=\"highlight\">\n<div class=\"chroma\">\n<table class=\"lntable\">\n<tbody>\n<tr>\n<td class=\"lntd\">\n<div class=\"language-code\" data-lang=\"Code\">\n<pre class=\"chroma\" tabindex=\"0\"><code><span class=\"lnt\"> 1\r\n<\/span><span class=\"lnt\"> 2\r\n<\/span><span class=\"lnt\"> 3\r\n<\/span><span class=\"lnt\"> 4\r\n<\/span><span class=\"lnt\"> 5\r\n<\/span><span class=\"lnt\"> 6\r\n<\/span><span class=\"lnt\"> 7\r\n<\/span><span class=\"lnt\"> 8\r\n<\/span><span class=\"lnt\"> 9\r\n<\/span><span class=\"lnt\">10\r\n<\/span><span class=\"lnt\">11\r\n<\/span><\/code><\/pre>\n<\/div>\n<\/td>\n<td class=\"lntd\">\n<pre class=\"chroma\" tabindex=\"0\"><code class=\"language-yaml\" data-lang=\"yaml\"><span class=\"line\"><span class=\"cl\">- <span class=\"nt\">name<\/span><span class=\"p\">:<\/span> <span class=\"l\">Get yarn cache directory path<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">id<\/span><span class=\"p\">:<\/span> <span class=\"l\">yarn-cache-dir-path<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">run<\/span><span class=\"p\">:<\/span> <span class=\"l\">echo \"::set-output name=dir::$(yarn cache dir)\"<\/span>\r\n<\/span><\/span>\r\n<span class=\"line\"><span class=\"cl\">- <span class=\"nt\">uses<\/span><span class=\"p\">:<\/span> <span class=\"l\">actions\/cache@v2<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">id<\/span><span class=\"p\">:<\/span> <span class=\"l\">yarn-cache<\/span> <span class=\"c\"># use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">with<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">path<\/span><span class=\"p\">:<\/span> <span class=\"l\">${{ steps.yarn-cache-dir-path.outputs.dir }}<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">key<\/span><span class=\"p\">:<\/span> <span class=\"l\">${{ runner.os }}-yarn-${{ hashFiles('**\/yarn.lock') }}<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">restore-keys<\/span><span class=\"p\">:<\/span> <span class=\"p\">|<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">            <span class=\"l\">${{ runner.os }}-yarn-<\/span>\r\n<\/span><\/span><\/code><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h2 id=\"6-\u68c0\u6d4b\u9879\u76ee\u4e2d\u7684\u95ee\u9898\u94fe\u63a5\">6. \u68c0\u6d4b\u9879\u76ee\u4e2d\u7684\u95ee\u9898\u94fe\u63a5<\/h2>\n<p>\u9879\u76ee\u7ef4\u62a4\u65f6\u95f4\u957f\u4e86\u4e4b\u540e\uff0c\u6700\u4ee4\u4eba\u5934\u75bc\u7684\u5c31\u662f\u6587\u6863\u3002\u7814\u53d1\u3001\u6d4b\u8bd5\u8ddf\u8fdb\u7684\u662f\u4ee3\u7801\u3001\u529f\u80fd\uff0c\u800c\u6587\u6863\u5374\u65f6\u5e38\u65e0\u4eba\u66f4\u65b0\u3002\u7f3a\u5c11\u7ef4\u62a4\u7684\u6587\u6863\uff0c\u4f1a\u8ba9\u6f5c\u5728\u53c2\u4e0e\u8005\u6d41\u5931\u3002\u4e0b\u9762\u8fd9\u4e2a Action \u80fd\u68c0\u6d4b\u6587\u6863\u4e2d\u7684 Broken \u94fe\u63a5\u3002<\/p>\n<div class=\"highlight\">\n<div class=\"chroma\">\n<table class=\"lntable\">\n<tbody>\n<tr>\n<td class=\"lntd\">\n<div class=\"language-code\" data-lang=\"Code\">\n<pre class=\"chroma\" tabindex=\"0\"><code><span class=\"lnt\"> 1\r\n<\/span><span class=\"lnt\"> 2\r\n<\/span><span class=\"lnt\"> 3\r\n<\/span><span class=\"lnt\"> 4\r\n<\/span><span class=\"lnt\"> 5\r\n<\/span><span class=\"lnt\"> 6\r\n<\/span><span class=\"lnt\"> 7\r\n<\/span><span class=\"lnt\"> 8\r\n<\/span><span class=\"lnt\"> 9\r\n<\/span><span class=\"lnt\">10\r\n<\/span><span class=\"lnt\">11\r\n<\/span><span class=\"lnt\">12\r\n<\/span><span class=\"lnt\">13\r\n<\/span><span class=\"lnt\">14\r\n<\/span><\/code><\/pre>\n<\/div>\n<\/td>\n<td class=\"lntd\">\n<pre class=\"chroma\" tabindex=\"0\"><code class=\"language-yaml\" data-lang=\"yaml\"><span class=\"line\"><span class=\"cl\"><span class=\"nt\">name<\/span><span class=\"p\">:<\/span> <span class=\"l\">Check Markdown links<\/span>\r\n<\/span><\/span>\r\n<span class=\"line\"><span class=\"cl\"><span class=\"nt\">on<\/span><span class=\"p\">:<\/span> <span class=\"l\">push<\/span>\r\n<\/span><\/span>\r\n<span class=\"line\"><span class=\"cl\"><span class=\"nt\">jobs<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">markdown-link-check<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">runs-on<\/span><span class=\"p\">:<\/span> <span class=\"l\">ubuntu-latest<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">steps<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">      - <span class=\"nt\">uses<\/span><span class=\"p\">:<\/span> <span class=\"l\">actions\/checkout@master<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">      - <span class=\"nt\">uses<\/span><span class=\"p\">:<\/span> <span class=\"l\">gaurav-nelson\/github-action-markdown-link-check@v1<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">        <span class=\"nt\">with<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">          <span class=\"nt\">use-quiet-mode<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"yes\"<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">          <span class=\"nt\">config-file<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\".github\/workflows\/checklink_config.json\"<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">          <span class=\"nt\">max-depth<\/span><span class=\"p\">:<\/span> <span class=\"m\">3<\/span>\r\n<\/span><\/span><\/code><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><code>gaurav-nelson\/github-action-markdown-link-check<\/code>\u00a0\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e\uff0c\u975e\u5e38\u7075\u6d3b\u6613\u7528\uff0c\u582a\u79f0\u5fc5\u5907 Action\u3002<\/p>\n<p>\u4e0b\u9762\u662f\u4e00\u4e2a\u00a0<code>.github\/workflows\/checklink_config.json<\/code>\u00a0\u7684\u793a\u4f8b\uff1a<\/p>\n<div class=\"highlight\">\n<div class=\"chroma\">\n<table class=\"lntable\">\n<tbody>\n<tr>\n<td class=\"lntd\">\n<div class=\"language-code\" data-lang=\"Code\">\n<pre class=\"chroma\" tabindex=\"0\"><code><span class=\"lnt\">1\r\n<\/span><span class=\"lnt\">2\r\n<\/span><span class=\"lnt\">3\r\n<\/span><span class=\"lnt\">4\r\n<\/span><span class=\"lnt\">5\r\n<\/span><span class=\"lnt\">6\r\n<\/span><span class=\"lnt\">7\r\n<\/span><span class=\"lnt\">8\r\n<\/span><span class=\"lnt\">9\r\n<\/span><\/code><\/pre>\n<\/div>\n<\/td>\n<td class=\"lntd\">\n<pre class=\"chroma\" tabindex=\"0\"><code class=\"language-json\" data-lang=\"json\"><span class=\"line\"><span class=\"cl\"><span class=\"p\">{<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">\"replacementPatterns\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"p\">{<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">      <span class=\"nt\">\"pattern\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"^\/\"<\/span><span class=\"p\">,<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">      <span class=\"nt\">\"replacement\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"\/github\/workspace\/\"<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"p\">}<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"p\">],<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">\"aliveStatusCodes\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"mi\">429<\/span><span class=\"p\">,<\/span> <span class=\"mi\">200<\/span><span class=\"p\">]<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"p\">}<\/span>\r\n<\/span><\/span><\/code><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u6700\u540e\u5728 GitHub Actions \u65e5\u5fd7\u9875\u9762\uff0c\u4f1a\u8f93\u51fa\u8fd9\u6837\u7684\u68c0\u6d4b\u7ed3\u679c\uff1a<\/p>\n<div class=\"highlight\">\n<div class=\"chroma\">\n<table class=\"lntable\">\n<tbody>\n<tr>\n<td class=\"lntd\">\n<div class=\"language-code\" data-lang=\"Code\">\n<pre class=\"chroma\" tabindex=\"0\"><code><span class=\"lnt\"> 1\r\n<\/span><span class=\"lnt\"> 2\r\n<\/span><span class=\"lnt\"> 3\r\n<\/span><span class=\"lnt\"> 4\r\n<\/span><span class=\"lnt\"> 5\r\n<\/span><span class=\"lnt\"> 6\r\n<\/span><span class=\"lnt\"> 7\r\n<\/span><span class=\"lnt\"> 8\r\n<\/span><span class=\"lnt\"> 9\r\n<\/span><span class=\"lnt\">10\r\n<\/span><span class=\"lnt\">11\r\n<\/span><span class=\"lnt\">12\r\n<\/span><span class=\"lnt\">13\r\n<\/span><span class=\"lnt\">14\r\n<\/span><span class=\"lnt\">15\r\n<\/span><span class=\"lnt\">16\r\n<\/span><span class=\"lnt\">17\r\n<\/span><span class=\"lnt\">18\r\n<\/span><span class=\"lnt\">19\r\n<\/span><\/code><\/pre>\n<\/div>\n<\/td>\n<td class=\"lntd\">\n<pre class=\"chroma\" tabindex=\"0\"><code class=\"language-bash\" data-lang=\"bash\"><span class=\"line\"><span class=\"cl\"><span class=\"o\">=========================<\/span>&gt; MARKDOWN LINK CHECK &lt;<span class=\"o\">=========================<\/span>\r\n<\/span><\/span>\r\n<span class=\"line\"><span class=\"cl\">FILE: .\/docs\/governance.md\r\n<\/span><\/span>\r\n<span class=\"line\"><span class=\"cl\"><span class=\"m\">4<\/span> links checked.\r\n<\/span><\/span>\r\n<span class=\"line\"><span class=\"cl\">FILE: .\/docs\/configuration\/cri.md\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"o\">[<\/span>\u2716<span class=\"o\">]<\/span> https:\/\/build.opensuse.org\/project\/show\/devel:kubic:libcontainers:stable\r\n<\/span><\/span>\r\n<span class=\"line\"><span class=\"cl\"><span class=\"m\">7<\/span> links checked.\r\n<\/span><\/span>\r\n<span class=\"line\"><span class=\"cl\">ERROR: <span class=\"m\">1<\/span> dead links found!\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"o\">[<\/span>\u2716<span class=\"o\">]<\/span> https:\/\/build.opensuse.org\/project\/show\/devel:kubic:libcontainers:stable \u2192 Status: <span class=\"m\">404<\/span>\r\n<\/span><\/span>\r\n<span class=\"line\"><span class=\"cl\">FILE: .\/docs\/configuration\/kubeedge.md\r\n<\/span><\/span>\r\n<span class=\"line\"><span class=\"cl\"><span class=\"m\">21<\/span> links checked.\r\n<\/span><\/span>\r\n<span class=\"line\"><span class=\"cl\"><span class=\"o\">=========================================================================<\/span>\r\n<\/span><\/span><\/code><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h2 id=\"7-job-\u6279\u91cf\u6267\u884c\u53c2\u6570\u6392\u5217\u7ec4\u5408\u6267\u884c\u4efb\u52a1\">7. Job \u6279\u91cf\u6267\u884c\uff0c\u53c2\u6570\u6392\u5217\u7ec4\u5408\u6267\u884c\u4efb\u52a1<\/h2>\n<p>\u6570\u636e\u9a71\u52a8\u6d4b\u8bd5\u7684\u573a\u666f\u4e0b\uff0c\u53ef\u4ee5\u901a\u8fc7\u8f93\u5165\u7684\u53c2\u6570\u63a7\u5236\u6d4b\u8bd5\u7684\u6d41\u7a0b\u3002\u5728 GitHub Actions \u4e2d\uff0c\u6211\u4eec\u4e5f\u53ef\u4ee5\u901a\u8fc7\u53c2\u6570\u5316\u7684\u65b9\u5f0f\uff0c\u6279\u91cf\u5730\u6267\u884c\u6216\u7f16\u6392\u6d41\u7a0b\u3002<\/p>\n<p>GitHub Actions \u4f1a\u5c06 matrix \u4e2d\u7684\u6bcf\u4e2a\u53c2\u6570\u6392\u5217\u7ec4\u5408\uff0c\u4ea7\u751f\u4e00\u4e2a\u65b0\u7684\u8fd0\u884c\u5b9e\u4f8b\u3002<\/p>\n<div class=\"highlight\">\n<div class=\"chroma\">\n<table class=\"lntable\">\n<tbody>\n<tr>\n<td class=\"lntd\">\n<div class=\"language-code\" data-lang=\"Code\">\n<pre class=\"chroma\" tabindex=\"0\"><code><span class=\"lnt\"> 1\r\n<\/span><span class=\"lnt\"> 2\r\n<\/span><span class=\"lnt\"> 3\r\n<\/span><span class=\"lnt\"> 4\r\n<\/span><span class=\"lnt\"> 5\r\n<\/span><span class=\"lnt\"> 6\r\n<\/span><span class=\"lnt\"> 7\r\n<\/span><span class=\"lnt\"> 8\r\n<\/span><span class=\"lnt\"> 9\r\n<\/span><span class=\"lnt\">10\r\n<\/span><span class=\"lnt\">11\r\n<\/span><span class=\"lnt\">12\r\n<\/span><span class=\"lnt\">13\r\n<\/span><\/code><\/pre>\n<\/div>\n<\/td>\n<td class=\"lntd\">\n<pre class=\"chroma\" tabindex=\"0\"><code class=\"language-yaml\" data-lang=\"yaml\"><span class=\"line\"><span class=\"cl\"><span class=\"nt\">on<\/span><span class=\"p\">:<\/span> <span class=\"l\">push<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"nt\">jobs<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">node<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">runs-on<\/span><span class=\"p\">:<\/span> <span class=\"l\">${{ matrix.os }}<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">strategy<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">      <span class=\"nt\">matrix<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">        <span class=\"nt\">os<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"l\">ubuntu-16.04, ubuntu-18.04]<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">        <span class=\"nt\">node<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"m\">6<\/span><span class=\"p\">,<\/span> <span class=\"m\">8<\/span><span class=\"p\">,<\/span> <span class=\"m\">10<\/span><span class=\"p\">]<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">steps<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">      - <span class=\"nt\">uses<\/span><span class=\"p\">:<\/span> <span class=\"l\">actions\/setup-node@v1<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">        <span class=\"nt\">with<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">          <span class=\"nt\">node-version<\/span><span class=\"p\">:<\/span> <span class=\"l\">${{ matrix.node }}<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">      - <span class=\"nt\">run<\/span><span class=\"p\">:<\/span> <span class=\"l\">node --version<\/span>\r\n<\/span><\/span><\/code><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u4e0a\u9762\u7684 workflow \u6267\u884c\u65f6, \u4f1a\u6267\u884c 6 \u4e2a job\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.chenshaowen.com\/blog\/images\/2021\/01\/github-action-matrix.png\" alt=\"\" \/><\/p>\n<p>\u65e0\u8bba\u662f\u7528\u6765\u6d4b\u8bd5\u517c\u5bb9\u6027, \u8fd8\u662f\u6279\u91cf\u6267\u884c Job, \u90fd\u662f\u975e\u5e38\u597d\u7684\u3002<\/p>\n<h2 id=\"8-\u62f7\u8d1d-action-\u7684-badge-\u72b6\u6001\u663e\u793a\u5728\u6587\u6863\u4e2d\">8. \u62f7\u8d1d Action \u7684 Badge \u72b6\u6001\u663e\u793a\u5728\u6587\u6863\u4e2d<\/h2>\n<p>\u901a\u5e38\uff0c\u6211\u4eec\u4f7f\u7528 GitHub Actions \u5bf9\u9879\u76ee\u8fdb\u884c\u4ee3\u7801\u5206\u6790\u3001\u6267\u884c\u6d4b\u8bd5\u3001\u7f16\u8bd1\u3001\u6253\u5305\u3001\u6784\u5efa\u3001\u63a8\u9001\u955c\u50cf\u7b49\u3002\u8fd9\u4e9b\u884c\u4e3a\u5bf9\u4e8e\u4fdd\u8bc1\u9879\u76ee\u7684\u7a33\u5b9a\uff0c\u81f3\u5173\u91cd\u8981\u3002<\/p>\n<p>\u4f46\u5e76\u4e0d\u662f\u6bcf\u4e2a\u4eba\u90fd\u4f1a\u5173\u6ce8 Actions \u7684\u6267\u884c\u7ec6\u8282\u3002\u6211\u4eec\u53ef\u4ee5\u5728\u663e\u773c\u7684\u5730\u65b9\uff0c\u7ed9\u51fa\u8fd9\u4e9b\u8fc7\u7a0b\u7684\u6700\u7ec8\u5b9e\u65f6\u72b6\u6001\uff0c\u4ee5\u63d0\u9192\u7528\u6237\u548c\u5f00\u53d1\u8005\u3002\u5982\u679c main \u5206\u652f\u6784\u5efa\u5931\u8d25\u4e86\uff0c\u80fd\u63d0\u9192\u7528\u6237\u8c28\u614e\u4f7f\u7528\uff0c\u80fd\u63d0\u9192\u7814\u53d1\u5c3d\u5feb\u4fee\u590d\u95ee\u9898\u3002<\/p>\n<p>\u5728 GitHub Actions \u9875\u9762\u4e2d, \u70b9\u51fb\u00a0<code>Create status badge<\/code>\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.chenshaowen.com\/blog\/images\/2021\/01\/github-action-badge.png\" alt=\"\" \/><\/p>\n<p>\u5c06\u5f39\u6846\u4e2d\u7684 URL \u94fe\u63a5\uff0c\u589e\u52a0\u5728 Readme \u6587\u6863\u4e2d\uff0c\u5373\u53ef\u5b9e\u65f6\u5feb\u901f\u5730\u67e5\u770b\u5230 workflow \u7684\u6267\u884c\u7ed3\u679c\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.chenshaowen.com\/blog\/images\/2021\/01\/github-action-badge-2.png\" alt=\"\" \/><\/p>\n<h2 id=\"9-\u7cbe\u51c6-hook-github-\u4e0a\u7684\u884c\u4e3a\">9. \u7cbe\u51c6 hook GitHub \u4e0a\u7684\u884c\u4e3a<\/h2>\n<p>workflow \u901a\u8fc7 on \u5173\u952e\u5b57\u5b9a\u4e49\u89e6\u53d1\u6761\u4ef6\u3002 \u4e3b\u8981\u6709\u4e09\u7c7b\u89e6\u53d1\u4e8b\u4ef6:<\/p>\n<ul>\n<li>\u4eba\u5de5\u89e6\u53d1<\/li>\n<\/ul>\n<div class=\"highlight\">\n<div class=\"chroma\">\n<table class=\"lntable\">\n<tbody>\n<tr>\n<td class=\"lntd\">\n<div class=\"language-code\" data-lang=\"Code\">\n<pre class=\"chroma\" tabindex=\"0\"><code><span class=\"lnt\">1\r\n<\/span><\/code><\/pre>\n<\/div>\n<\/td>\n<td class=\"lntd\">\n<pre class=\"chroma\" tabindex=\"0\"><code class=\"language-yaml\" data-lang=\"yaml\"><span class=\"line\"><span class=\"cl\"><span class=\"nt\">on<\/span><span class=\"p\">:<\/span> <span class=\"l\">workflow_dispatch<\/span>\r\n<\/span><\/span><\/code><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<ul>\n<li>\u5b9a\u65f6\u89e6\u53d1<\/li>\n<\/ul>\n<p>\u6bcf\u9694 15 \u5206\u949f\u89e6\u53d1\u4e00\u6b21 workflows\u3002<\/p>\n<div class=\"highlight\">\n<div class=\"chroma\">\n<table class=\"lntable\">\n<tbody>\n<tr>\n<td class=\"lntd\">\n<div class=\"language-code\" data-lang=\"Code\">\n<pre class=\"chroma\" tabindex=\"0\"><code><span class=\"lnt\">1\r\n<\/span><span class=\"lnt\">2\r\n<\/span><span class=\"lnt\">3\r\n<\/span><\/code><\/pre>\n<\/div>\n<\/td>\n<td class=\"lntd\">\n<pre class=\"chroma\" tabindex=\"0\"><code class=\"language-yaml\" data-lang=\"yaml\"><span class=\"line\"><span class=\"cl\"><span class=\"nt\">on<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">schedule<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    - <span class=\"nt\">cron<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"*\/15 * * * *\"<\/span>\r\n<\/span><\/span><\/code><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<ul>\n<li>Webhook \u89e6\u53d1<\/li>\n<\/ul>\n<p>\u6211\u4eec\u5728 GitHub \u4e0a\u7684\u64cd\u4f5c\uff0c\u6bd4\u5982\u521b\u5efa Issues\u3001\u65b0\u589e Deployment \u7b49\uff0c\u90fd\u80fd\u591f\u901a\u8fc7 API \u83b7\u53d6\u5230\u76f8\u5173\u7684\u4e8b\u4ef6\u3002\u901a\u8fc7\u8fd9\u4e9b\u4e8b\u4ef6\uff0c\u6211\u4eec\u53ef\u4ee5\u7cbe\u51c6\u5730\u5b9a\u5236 workflow \u7684\u884c\u4e3a\u3002\u901a\u5e38\u6211\u4eec\u90fd\u662f\u57fa\u4e8e push \u6216\u8005 pull requests \u89e6\u53d1\uff0c\u4e0b\u9762\u5217\u4e3e\u51e0\u4e2a\u4e0d\u5e38\u89c1\u7684\u793a\u4f8b\uff1a<\/p>\n<p>\u5f53\u6709\u4eba fork \u4ed3\u5e93\u65f6\u89e6\u53d1<\/p>\n<div class=\"highlight\">\n<div class=\"chroma\">\n<table class=\"lntable\">\n<tbody>\n<tr>\n<td class=\"lntd\">\n<div class=\"language-code\" data-lang=\"Code\">\n<pre class=\"chroma\" tabindex=\"0\"><code><span class=\"lnt\">1\r\n<\/span><\/code><\/pre>\n<\/div>\n<\/td>\n<td class=\"lntd\">\n<pre class=\"chroma\" tabindex=\"0\"><code class=\"language-yaml\" data-lang=\"yaml\"><span class=\"line\"><span class=\"cl\"><span class=\"nt\">on<\/span><span class=\"p\">:<\/span> <span class=\"l\">fork<\/span>\r\n<\/span><\/span><\/code><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u5f53\u6709\u4eba star \u4ed3\u5e93\u65f6\u89e6\u53d1<\/p>\n<div class=\"highlight\">\n<div class=\"chroma\">\n<table class=\"lntable\">\n<tbody>\n<tr>\n<td class=\"lntd\">\n<div class=\"language-code\" data-lang=\"Code\">\n<pre class=\"chroma\" tabindex=\"0\"><code><span class=\"lnt\">1\r\n<\/span><span class=\"lnt\">2\r\n<\/span><span class=\"lnt\">3\r\n<\/span><\/code><\/pre>\n<\/div>\n<\/td>\n<td class=\"lntd\">\n<pre class=\"chroma\" tabindex=\"0\"><code class=\"language-yaml\" data-lang=\"yaml\"><span class=\"line\"><span class=\"cl\"><span class=\"nt\">on<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">watch<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">types<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"l\">started]<\/span>\r\n<\/span><\/span><\/code><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u5f53\u6709\u65b0\u5efa\u7684 Issue \u65f6\u89e6\u53d1<\/p>\n<div class=\"highlight\">\n<div class=\"chroma\">\n<table class=\"lntable\">\n<tbody>\n<tr>\n<td class=\"lntd\">\n<div class=\"language-code\" data-lang=\"Code\">\n<pre class=\"chroma\" tabindex=\"0\"><code><span class=\"lnt\">1\r\n<\/span><span class=\"lnt\">2\r\n<\/span><span class=\"lnt\">3\r\n<\/span><\/code><\/pre>\n<\/div>\n<\/td>\n<td class=\"lntd\">\n<pre class=\"chroma\" tabindex=\"0\"><code class=\"language-yaml\" data-lang=\"yaml\"><span class=\"line\"><span class=\"cl\"><span class=\"nt\">on<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">issues<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">types<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"l\">opened]<\/span>\r\n<\/span><\/span><\/code><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h2 id=\"10-\u5f00\u53d1\u4e00\u4e2a-action-\u5f88\u7b80\u5355\">10. \u5f00\u53d1\u4e00\u4e2a Action \u5f88\u7b80\u5355<\/h2>\n<p>\u5982\u679c\u5728 Marketplace \u627e\u4e0d\u5230\u5408\u9002\u7684 Action\uff0c\u90a3\u4e48\u81ea\u5df1\u5f00\u53d1 Action \u4e5f\u662f\u4e00\u4e2a\u4e0d\u9519\u7684\u9009\u62e9\u3002<\/p>\n<p>\u5176\u5b9e\uff0c\u5f00\u53d1\u4e00\u4e2a Action \u6ca1\u6709\u60f3\u8c61\u4e2d\u90a3\u4e48\u96be\u3002\u4e00\u4e2a Action \u5c31\u662f\u4e00\u4e2a\u5904\u7406\u903b\u8f91\uff0c\u63a5\u6536\u8f93\u5165\u53c2\u6570\uff0c\u6267\u884c\u4e00\u5b9a\u7684\u903b\u8f91\uff0c\u7136\u540e\u8f93\u51fa\u53c2\u6570\u3002\u6709\u4e09\u79cd\u7c7b\u578b\u7684 Action:<\/p>\n<ul>\n<li>Docker container, \u9002\u7528 Linux \u7cfb\u7edf<\/li>\n<\/ul>\n<p>\u901a\u8fc7 Docker \u5bb9\u5668\uff0c\u63d0\u4f9b Action \u7684\u6267\u884c\u903b\u8f91\u5904\u7406\u3002\u6bd4\u5982\u4e0b\u9762\u8fd9\u4e2a\u4f8b\u5b50:<\/p>\n<p>Dockerfile<\/p>\n<div class=\"highlight\">\n<div class=\"chroma\">\n<table class=\"lntable\">\n<tbody>\n<tr>\n<td class=\"lntd\">\n<div class=\"language-code\" data-lang=\"Code\">\n<pre class=\"chroma\" tabindex=\"0\"><code><span class=\"lnt\">1\r\n<\/span><span class=\"lnt\">2\r\n<\/span><span class=\"lnt\">3\r\n<\/span><span class=\"lnt\">4\r\n<\/span><span class=\"lnt\">5\r\n<\/span><\/code><\/pre>\n<\/div>\n<\/td>\n<td class=\"lntd\">\n<pre class=\"chroma\" tabindex=\"0\"><code class=\"language-bash\" data-lang=\"bash\"><span class=\"line\"><span class=\"cl\">FROM appleboy\/drone-scp:1.6.2-linux-amd64\r\n<\/span><\/span>\r\n<span class=\"line\"><span class=\"cl\">ADD entrypoint.sh \/entrypoint.sh\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">RUN chmod +x \/entrypoint.sh\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">ENTRYPOINT <span class=\"o\">[<\/span><span class=\"s2\">\"\/entrypoint.sh\"<\/span><span class=\"o\">]<\/span>\r\n<\/span><\/span><\/code><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>entrypoint.sh<\/p>\n<div class=\"highlight\">\n<div class=\"chroma\">\n<table class=\"lntable\">\n<tbody>\n<tr>\n<td class=\"lntd\">\n<div class=\"language-code\" data-lang=\"Code\">\n<pre class=\"chroma\" tabindex=\"0\"><code><span class=\"lnt\">1\r\n<\/span><span class=\"lnt\">2\r\n<\/span><span class=\"lnt\">3\r\n<\/span><span class=\"lnt\">4\r\n<\/span><span class=\"lnt\">5\r\n<\/span><span class=\"lnt\">6\r\n<\/span><span class=\"lnt\">7\r\n<\/span><\/code><\/pre>\n<\/div>\n<\/td>\n<td class=\"lntd\">\n<pre class=\"chroma\" tabindex=\"0\"><code class=\"language-bash\" data-lang=\"bash\"><span class=\"line\"><span class=\"cl\"><span class=\"cp\">#!\/bin\/sh\r\n<\/span><\/span><\/span>\r\n<span class=\"line\"><span class=\"cl\"><span class=\"nb\">set<\/span> -eu\r\n<\/span><\/span>\r\n<span class=\"line\"><span class=\"cl\"><span class=\"o\">[<\/span> -n <span class=\"s2\">\"<\/span><span class=\"nv\">$INPUT_STRIP_COMPONENTS<\/span><span class=\"s2\">\"<\/span> <span class=\"o\">]<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"nb\">export<\/span> <span class=\"nv\">INPUT_STRIP_COMPONENTS<\/span><span class=\"o\">=<\/span><span class=\"k\">$((<\/span>INPUT_STRIP_COMPONENTS <span class=\"o\">+<\/span> <span class=\"m\">0<\/span><span class=\"k\">))<\/span>\r\n<\/span><\/span>\r\n<span class=\"line\"><span class=\"cl\">sh -c <span class=\"s2\">\"\/bin\/drone-scp <\/span><span class=\"nv\">$*<\/span><span class=\"s2\">\"<\/span>\r\n<\/span><\/span><\/code><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u901a\u8fc7\u00a0<code>dron-scp<\/code>\u00a0\u955c\u50cf\uff0c\u5feb\u901f\u5f00\u53d1\u4e86\u4e00\u4e2a\u63d0\u4f9b scp \u6587\u4ef6\u62f7\u8d1d\u7684 Action\u3002<\/p>\n<ul>\n<li>JavaScript, \u9002\u7528 Linux\u3001macOS\u3001Windows \u7cfb\u7edf<\/li>\n<\/ul>\n<p>\u901a\u8fc7\u6267\u884c JavaScript \u5904\u7406 Action \u903b\u8f91\u3002\u5b98\u65b9\u63d0\u4f9b\u4e86 JavaScript \u548c TypeScript \u7684 Action \u6a21\u677f\u3002\u5728\u521b\u5efa\u9879\u76ee\u65f6\uff0c\u4f7f\u7528\u6a21\u677f\u521b\u5efa\uff0c\u7136\u540e\u7f16\u5199\u5904\u7406\u903b\u8f91\uff0c\u53d1\u5e03\u81ea\u5df1\u7684 Action \u5373\u53ef\u3002<\/p>\n<p>GitHub Actions \u63d0\u4f9b\u4e86\u5de5\u5177\u5305\uff0c\u4ee5\u652f\u6301\u8fd9\u79cd\u65b9\u5f0f\u7684\u6269\u5c55\uff0c\u4f8b\u5982\u6267\u884c\u547d\u4ee4\u3001\u64cd\u4f5c GitHub \u7b49\uff0c\u90fd\u53ef\u4ee5\u901a\u8fc7\u5f15\u7528\u5305\uff0c\u76f4\u63a5\u8c03\u7528\u76f8\u5173\u51fd\u6570\u5b9e\u73b0\u3002\u4e0b\u9762\u662f\u5176\u4e2d\u51e0\u4e2a\u5de5\u5177\u5305\uff1a<\/p>\n<div class=\"language-code\" data-lang=\"Code\">\n<pre><code>@actions\/exec, \u6267\u884c\u547d\u4ee4\r\n@actions\/core, \u8f93\u5165\u3001\u8f93\u51fa\u3001\u65e5\u5fd7\u3001\u79d8\u94a5\u76f8\u5173\r\n@actions\/io, \u64cd\u4f5c\u6587\u4ef6\r\n<\/code><\/pre>\n<\/div>\n<ul>\n<li>Composite run steps, \u9002\u7528 Linux, macOS, Windows \u7cfb\u7edf<\/li>\n<\/ul>\n<p>\u8fd9\u79cd\u7c7b\u578b\uff0c\u5141\u8bb8\u5c06\u4e00\u8fde\u4e32\u7684 Shell \u64cd\u4f5c\u4f5c\u4e3a\u4e00\u4e2a Action \u4f7f\u7528\u3002<\/p>\n<div class=\"highlight\">\n<div class=\"chroma\">\n<table class=\"lntable\">\n<tbody>\n<tr>\n<td class=\"lntd\">\n<div class=\"language-code\" data-lang=\"Code\">\n<pre class=\"chroma\" tabindex=\"0\"><code><span class=\"lnt\"> 1\r\n<\/span><span class=\"lnt\"> 2\r\n<\/span><span class=\"lnt\"> 3\r\n<\/span><span class=\"lnt\"> 4\r\n<\/span><span class=\"lnt\"> 5\r\n<\/span><span class=\"lnt\"> 6\r\n<\/span><span class=\"lnt\"> 7\r\n<\/span><span class=\"lnt\"> 8\r\n<\/span><span class=\"lnt\"> 9\r\n<\/span><span class=\"lnt\">10\r\n<\/span><span class=\"lnt\">11\r\n<\/span><span class=\"lnt\">12\r\n<\/span><span class=\"lnt\">13\r\n<\/span><span class=\"lnt\">14\r\n<\/span><span class=\"lnt\">15\r\n<\/span><span class=\"lnt\">16\r\n<\/span><span class=\"lnt\">17\r\n<\/span><span class=\"lnt\">18\r\n<\/span><span class=\"lnt\">19\r\n<\/span><span class=\"lnt\">20\r\n<\/span><span class=\"lnt\">21\r\n<\/span><\/code><\/pre>\n<\/div>\n<\/td>\n<td class=\"lntd\">\n<pre class=\"chroma\" tabindex=\"0\"><code class=\"language-yaml\" data-lang=\"yaml\"><span class=\"line\"><span class=\"cl\"><span class=\"nt\">name<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Hello World\"<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"nt\">description<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Greet someone\"<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"nt\">inputs<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">who-to-greet<\/span><span class=\"p\">:<\/span> <span class=\"c\"># id of input<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">description<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Who to greet\"<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">required<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">default<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"World\"<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"nt\">outputs<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">random-number<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">description<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Random number\"<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    <span class=\"nt\">value<\/span><span class=\"p\">:<\/span> <span class=\"l\">${{ steps.random-number-generator.outputs.random-id }}<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"nt\">runs<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">using<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"composite\"<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">  <span class=\"nt\">steps<\/span><span class=\"p\">:<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    - <span class=\"nt\">run<\/span><span class=\"p\">:<\/span> <span class=\"l\">echo Hello ${{ inputs.who-to-greet }}.<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">      <span class=\"nt\">shell<\/span><span class=\"p\">:<\/span> <span class=\"l\">bash<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    - <span class=\"nt\">id<\/span><span class=\"p\">:<\/span> <span class=\"l\">random-number-generator<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">      <span class=\"nt\">run<\/span><span class=\"p\">:<\/span> <span class=\"l\">echo \"::set-output name=random-id::$(echo $RANDOM)\"<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">      <span class=\"nt\">shell<\/span><span class=\"p\">:<\/span> <span class=\"l\">bash<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">    - <span class=\"nt\">run<\/span><span class=\"p\">:<\/span> <span class=\"l\">${{ github.action_path }}\/goodbye.sh<\/span>\r\n<\/span><\/span><span class=\"line\"><span class=\"cl\">      <span class=\"nt\">shell<\/span><span class=\"p\">:<\/span> <span class=\"l\">bash<\/span>\r\n<\/span><\/span><\/code><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h2 id=\"11-\u53c2\u8003\">11. \u53c2\u8003<\/h2>\n<ul>\n<li><a href=\"https:\/\/github.com\/actions\/typescript-action\">https:\/\/github.com\/actions\/typescript-action<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/shaowenchen\/debugger-action\">https:\/\/github.com\/shaowenchen\/debugger-action<\/a><\/li>\n<\/ul>\n<\/article>\n","protected":false},"excerpt":{"rendered":"<p>cc from ?\u00a02021\u5e7401\u670831<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[24],"tags":[121],"class_list":["post-7051","post","type-post","status-publish","format-standard","hentry","category-value_docs","tag-05-"],"_links":{"self":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/7051","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/comments?post=7051"}],"version-history":[{"count":0,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/7051\/revisions"}],"wp:attachment":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/media?parent=7051"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/categories?post=7051"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/tags?post=7051"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}