GitHub 环境中的环境变量可在vars context中使用。
有时,上下文中可能有 5-6 个变量vars,并且您希望将它们注入到env上下文中以便在步骤中使用它们。有自动化的或简单的方法吗?
我已经尝试了一切我能想到的变体,但未能找到正确的语法。我有一个 GitHub Actions 工作流程,当前包含以下步骤:
steps:
- name: Parse Assignee Properties
id: assignee_properties
uses: actions/github-script@v6
with:
script: |
const assignees = context.payload.issue.assignees;
const assigneeStrings = assignees.map(a => `{'login': '${a.login}', 'id': ${a.id}, 'url': '${a.html_url}'}`);
const jsonArrayString = `[${assigneeStrings.join(', ')}]`;
console.log(`::set-output name=assigneeJson::${jsonArrayString}`);
Run Code Online (Sandbox Code Playgroud)
上面使用了旧的 set-output 命令,该命令已被删除。https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/上的文档示例均使用 echo "::set-output name={ name}::{value}" 以及如何更改它们。
我在上面的脚本中尝试过这种格式,它返回一个语法错误的错误。我尝试使用 console.log 的不同变量,例如:
console.log(`assigneeJson='${jsonArrayString}' >> $GITHUB_OUTPUT`);console.log("assigneeJson='${jsonArrayString}' >> $env:GITHUB_OUTPUT");console.log("assigneeJson='${jsonArrayString}'") >> $env:GITHUB_OUTPUT;没有一个有效。我猜这非常简单,我错过了一些明显的东西,但似乎很少有在脚本中使用它和使用 console.log 的文档。
我使用 GitHub actions 的持续部署已经有一年或更长时间了,一切都很好,直到昨天我推送更新时,我发现 GitHub actions 中出现错误,并显示以下消息:
没有 SSH 私钥或密码就无法连接
这是我的 yml 代码
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Copy repository contents via scp
uses: appleboy/scp-action@master
env:
HOST: ${{ secrets.HOST }}
USERNAME: ${{ secrets.USERNAME }}
PORT: ${{ secrets.PORT }}
KEY: ${{ secrets.SSHKEY }}
with:
source: "."
target: "/home/ubuntu/dev-folder"
- name: Executing remote command
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST }}
USERNAME: ${{ secrets.USERNAME }}
PORT: ${{ secrets.PORT }}
KEY: ${{ secrets.SSHKEY }}
command_timeout: 10m
script: cd …Run Code Online (Sandbox Code Playgroud) 虽然我看到它声称这个问题在其他地方得到了回答,但事实并非如此。我收到关于在此代码中使用 Node 12 而不是 Node 16 的投诉:
没有文档准确说明 Node 12 和 Node 16 之间的区别(至少在提供的链接中没有)。
lint-flake8:
runs-on: ubuntu-latest
name: flake8
strategy:
fail-fast: false
matrix:
python-version: [3.8]
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{matrix.python-version}}
uses: actions/setup-python@v2
with:
python-version: ${{matrix.python-version}}
- name: flake8
continue-on-error: false
run: |
pip install flake8
flake8 pyuvm tests/pytests
Run Code Online (Sandbox Code Playgroud)
StackExchange 上的假设答案(GitHub Actions - “Node.js 12 actions are deprecated.”,虽然我将所有内容升级到 v18)说了一些关于runvs的内容runs。
我是否只需将最后一个命令中的单词更改为run?runs
main如何向我的 GitHub Actions 脚本中添加一些内容,以确保分支与当前分支保持同步,即具有main祖先分支?
我知道 GitHub 的存储库设置页面有一个“合并前要求分支保持最新”选项。但是,如果分支不是最新的,让 GitHub Actions 脚本快速失败仍然很有用,而不是花费 5-10 分钟来设置我们的测试环境。
我在.github/workflows存储库的文件夹中创建了几个工作流,以尝试使用GitHub Actions。从那以后,我学到了很多东西,并从我的仓库中删除了所说的“实验”工作流程。删除“实验性”工作流yaml文件并提交删除操作后,当我转到存储库的“操作”选项卡时,仍会看到此后删除的工作流。
我没有选择删除并重新开始的选项吗?这不可能吗?是否有可能通过GitHub API?嗯
这是一个问答,我已经把我的解决方案放在了答案中。
我是 GitHub Actions beta 和 GitHub Package Registry beta 的一部分。因为我是一个非常懒惰的人,所以我不仅自动化了 npm 包的构建过程,而且我还想自动化它的发布。
为了做到这一点,我不得不面对一些问题:
我有一个工作流程,其中包含在构建和人工制品时创建版本号的操作。这个版本号被写入文件。
我怎样才能把它作为另一个动作的输入?
即:如何在另一个操作中使用此版本号作为提交消息的一部分?
我正在尝试实施一个 GitHub 操作,该操作将我的 repo 文件在推送到 master 分支时将其 SCP 到服务器。我在 Bitbucket Pipelines 上有一个类似的设置,但现在我正在学习使用 GitHub 操作来做到这一点,我没有任何运气。
我的项目是一个简单的Node.js 应用程序,我想简单地将所有文件 scp 到服务器,然后我将运行 post-scp 脚本,以便npm i将新文件复制到服务器。只是想在我学习的时候保持简单。
我正在使用scp-files GitHub Action。这是我的文件:
name: Deploy to production
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
deploy:
name: SCP files to server
runs-on: ubuntu-latest
steps:
- name: SCP files via ssh key
uses: appleboy/scp-action@master
env:
USERNAME: ${{ secrets.USERNAME }}
HOST: ${{ secrets.HOST }}
KEY: ${{ secrets.SSH_DEPLOYMENT_KEY }}
with:
source: './*'
target: '/home/ubuntu/flatbread/' …Run Code Online (Sandbox Code Playgroud) 我第一次致力于Github Action在 Android 中设置 CI/CD 工作流程
我有一个现有的Python script生Change log成为HTML String out put.
我想在 github action 中使用它并接收更改日志作为字符串输出。
我有这样的事情
- name: Generate Change logs
id: changelogs
working-directory: .github/workflows/
run: python release_mail_generator.py ${{ secrets.GITHUB_TOKEN }} v2.21
Run Code Online (Sandbox Code Playgroud)
想使用这样的东西来获取changelog字符串作为输出
- name: Generate Change logs
id: changelogs
working-directory: .github/workflows/
run: echo "::set-output name=changelog::$(echo python release_mail_generator.py ${{ secrets.GITHUB_TOKEN }} v2.21)"
Run Code Online (Sandbox Code Playgroud)
我的python脚本
from __future__ import print_function
import sys
from collections import defaultdict
from github import Github
# Install …Run Code Online (Sandbox Code Playgroud) python workflow continuous-integration android github-actions
github-actions ×10
github ×6
git ×2
android ×1
github-api ×1
node.js ×1
npm ×1
python ×1
scp ×1
workflow ×1