我发现了一个非常好的GitHub操作特性叫做环境的事。使用适当的语法workflow.yml如下:
environment:
name: test_environment
url: https://your-apps-url-here.com就像医生说的那样是创建GitHub操作环境的有效方法:
运行引用不存在环境的工作流将创建具有引用名称的环境。
但是在我当前的GitHub操作工作流中,是否有一种基于部署步骤输出的动态设置url的方法?我有一个从部署过程到AWS的动态URL,我不能预先定义这个URL。
发布于 2021-05-04 13:17:27
作业工作流文档告诉我们字段
environment:
name: test_environment
url: ${{ steps.step_name.outputs.url_output }}现在,假设有一个ci.yml工作流文件,它使用AWS将静态网站部署到S3,在该文件中,我们使用了一个像Pulumi这样的工具来动态地在AWS帐户中创建一个S3桶。我们可以使用下面的命令S3读取动态创建的pulumi stack output bucketName url。然后,ci.yml中的部署步骤可以如下所示:
- name: Deploy Nuxt.js generated static site to S3 Bucket via AWS CLI
id: aws-sync
run: |
aws s3 sync ../dist/ s3://$(pulumi stack output bucketName) --acl public-read
echo "::set-output name=s3_url::http://$(pulumi stack output bucketUrl)"
working-directory: ./deployment这里有两个关键点:首先,我们应该在部署步骤中使用id来定义一个步骤名,我们可以通过step_name轻松地在environment:url中访问它。第二个我们需要定义一个步骤输出使用echo "::set-output name=s3_url::http://$(pulumi stack output bucketUrl)"。在本例中,我创建了一个变量s3_url。您可以将pulumi stack output bucketUrl替换为您希望使用的任何其他命令或工具,该命令或工具使用动态环境url进行响应。
还要确保添加一个http://或https://,以防止出现如下错误消息:
Environment URL 'microservice-ui-nuxt-js-hosting-bucket-bc75fce.s3-website.eu-central-1.amazonaws.com' is not a valid http(s) URL, so it will not be shown as a link in the workflow graph.现在,我们的environment顶部的ci.yml定义可以访问部署步骤中的s3_url输出变量,如下所示:
jobs:
ci:
runs-on: ubuntu-latest
environment:
name: microservice-ui-nuxt-js-deployment
url: ${{ steps.aws-sync.outputs.s3_url }}
steps:
- name: Checkout
...使用steps.aws-sync,我们直接引用部署步骤,因为我们用id定义了部署步骤。然后,附加的.outputs.s3_url直接引用包含S3 url的变量。如果您正确地定义了所有内容,GitHub操作UI将将环境URL直接呈现在完成作业的下面:

这里还有嵌入在示例项目中的完全工作工作流。。
https://stackoverflow.com/questions/67385568
复制相似问题