我在存储库中定义了一些环境变量DEV/QA/PROD,并设置了一组变量,即 a、b、c,我想将它们传递给可重新启动的工作流程。如何实现这一目标?
我已尝试如下,但在调用的工作流程中无法访问变量值。
根据 GitHub Actions 文档:
要在多个工作流中重用变量,请在组织、存储库或环境级别设置它们,并使用 vars 上下文引用它们。有关详细信息,请参阅“变量”和“上下文”。
但它似乎不起作用。
jobs:
call-workflow-passing-data:
uses: octo-org/example-repo/.github/workflows/reusable-workflow.yml@main
with:
config-path: .github/labeler.yml
deploy-a: ${{ vars.a}}
deploy-b: ${{ vars.b }}
secrets:
envPAT: ${{ secrets.envPAT }}
Run Code Online (Sandbox Code Playgroud)
在目标工作流程中,当我使用它时${{ inputs.deploy-a }},它没有给出任何价值。
任何帮助,将不胜感激。
充分研究了有关将包推送到 Git 的 github 文档。我正在使用的讲师的代码中满足了文档中的所有要点。
寻找错别字等。
这是课程 YAML,它与讲师版本完全比较:
name: Push to GitHub Packages
on:
push:
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup .NET
uses: actions/setup-dotnet@v1
with:
dotnet-version: 5.0.x
- name: Restore dependencies
run: dotnet restore
- name: Build
run: dotnet build --configuration Release --no-restore
- name: Pack
run: dotnet pack --configuration Release --no-build --output .
- name: Push
run: |
dotnet nuget add source --username *** --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github "https://nuget.pkg.github.com/***/index.json"
dotnet …Run Code Online (Sandbox Code Playgroud) github nuget github-actions github-package-registry github-packages
我似乎无法得到这个问题的直接答案。
我想使用 GitHub Actions 在运行于 arm64 上的 macOS 上自动执行安装脚本。
今天这可能吗?
是否有替代 M1/M2 芯片的采用 arm64 架构的运行程序?
我创建了一个新的Rust项目,并决定,我将给Github Actions一个尝试在每个请求请求上运行自动化构建和测试的方法:
name: Rust
on: [pull_request]
Run Code Online (Sandbox Code Playgroud)
我花了一段时间注意到默认情况下,Github Actions根本不签出我的代码,而GITHUB_WORKSPACE只是空的。因此,我尝试手动克隆存储库。做这样的事情:
name: Rust
on: [pull_request]
Run Code Online (Sandbox Code Playgroud)
但这只是检查默认分支上的内容。因此,我调查了检查$GITHUB_SHA结果是否是我的存储库未知的。对于$GITHUB_REF空的情况也是如此。
在这一点上,我对所做的事情一无所知。我最初的假设是,实际上配置为运行的作业on: [pull request]应具有该代码,但无法检出并准备该代码。
我还调查了提供的Checkout操作:
此操作将您的存储库签出到
$GITHUB_WORKSPACE,以便您的工作流可以访问存储库的内容。默认情况下,这等效于运行
git fetch和git checkout $GITHUB_SHA,因此您将始终以触发该工作流程的版本获得您的回购内容。请参阅此处以了解$GITHUB_SHA各种事件的含义。
但是正如我之前所说,$GITHUB_WORKSPACE完全是空的,a git fetch只会告诉您没有git存储库。
这是一个示例失败:
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
fatal: reference is not a tree: d76745134ae45905e4a0ab8d27c92f1e2544bdc1
##[error]Process …Run Code Online (Sandbox Code Playgroud) git continuous-integration github git-checkout github-actions
我有一个非常简单的配置,以便在 Nextjs 应用程序中使用 Github Actions 使用 Cypress 运行 e2e 测试。当它到达npm start命令时,尽管它似乎可以工作,因为它给出了正确的输出: > Ready on http://localhost:3000,但该步骤保持挂起状态,而不会前进到下一步。
对于如何解决这个问题,有任何的建议吗?
遵循 github 操作配置 ( .github/workflows/nodejs.yml):
name: Node CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [8.x, 10.x, 12.x]
steps:
- uses: actions/checkout@v1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: npm install, build, and test
run: |
npm ci
npm run build --if-present
npm start
npx wait-on http://localhost:3000
env:
CI: …Run Code Online (Sandbox Code Playgroud) continuous-integration node.js next.js cypress github-actions
我有一个 github 存储库、一个 docker 存储库和一个 Amazon ec2 实例。我正在尝试使用这些工具创建 CI/CD 管道。这个想法是在 github 存储库主分支发生推送时将 docker 容器部署到 ec2 实例。我已经使用 github 操作来构建代码、构建 docker 镜像并将 docker 镜像推送到 docker hub。现在我想将最新的镜像从 docker hub 拉到远程 ec2 实例并运行它。为此,我试图从 github 操作执行 ansible 命令。但我需要将 .pem 文件指定为 ansible 命令的参数。我试图将 .pem 文件保存在 github secretes 中,但没有用。我真的很困惑如何进行这个。这是我的 github 工作流文件
name: helloworld_cicd
on:
push:
branches:
- master
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v1
- name: Go Build
run: go build
- name: Docker …Run Code Online (Sandbox Code Playgroud) 我有一个使用pipenv运行pytest的 Python 项目。我想创建一个GitHub 操作,每次提交拉取请求时都会运行 pytest。
我试过使用python-app.yml starter 工作流。
name: Python application
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Set up Python 3.8
uses: actions/setup-python@v1
with:
python-version: 3.8
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . …Run Code Online (Sandbox Code Playgroud) 我有一个带有简单 GitHub Actions 工作流程的GitHub Repo:
name: CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Run a one-line script
run: echo Hello, world!
- name: Run a multi-line script
run: |
echo Add other actions to build,
echo test, and deploy your project.
pip install twine
twine --help
Run Code Online (Sandbox Code Playgroud)
当我运行它时,它安装了麻线,但无法运行它,说找不到命令:
...
Successfully installed Pygments-2.5.2 bleach-3.1.0 certifi-2019.11.28 chardet-3.0.4 docutils-0.15.2 idna-2.8 pkginfo-1.5.0.1 readme-renderer-24.0 requests-2.22.0 requests-toolbelt-0.9.1 setuptools-42.0.2 six-1.13.0 tqdm-4.40.0 twine-1.15.0 urllib3-1.25.7 webencodings-0.5.1
/home/runner/work/_temp/1643cb1d-8b12-4aa8-8e1d-bd5bba60fd5b.sh: line 4: twine: …Run Code Online (Sandbox Code Playgroud) 我找不到在 GH Actions 上使用正在运行的 SSH 服务器的方法。当我尝试127.0.0.1通过 ssh连接时,有一个服务器并响应,但不知何故忽略了.ssh(或无论如何)中的配置文件。
这是我使用的脚本(一般设置似乎不会影响结果):
ssh-keygen -t ed25519 -f ~/.ssh/whatever -N ''
cat > ~/.ssh/config <<EOF
Host host.example
User $USER
HostName 127.0.0.1
IdentityFile ~/.ssh/whatever
EOF
echo -n 'from="127.0.0.1" ' | cat - ~/.ssh/whatever.pub > ~/.ssh/authorized_keys
ssh -o 'StrictHostKeyChecking no' host.example id
Run Code Online (Sandbox Code Playgroud)
我对结果不满意,因为我无法在本地重现日志(我拥有的每台机器都表现正常,即允许执行命令)。
Generating public/private ed25519 key pair.
Created directory '/home/runner/.ssh'.
Your identification has been saved in /home/runner/.ssh/whatever.
Your public key has been saved in /home/runner/.ssh/whatever.pub.
The key fingerprint is:
SHA256:2ZCprVg5rZXp0IguQlCanUVTlCX7IFt2TPTnimdk0gM runner@fv-az60
The key's …Run Code Online (Sandbox Code Playgroud) 我想设置一个 GitHub Action 来构建我的项目并在本地运行测试。因为我用.devcontainer我有一个Dockerfile在.devcontainer/Dockerfile提供一切我需要建立我的项目。
现在我想写一个 GitHub Action 来在每次推送时构建项目。在本地我会这样做:
docker build -t local - < .devcontainer/Dockerfile
docker run -it -v $(pwd):/srv -w/srv local make test
Run Code Online (Sandbox Code Playgroud)
GitHub 操作看起来很麻烦,但我最终写了这个:
on: push
jobs:
build:
name: build
runs-on: ubuntu-latest
steps:
- name: check out repository
uses: actions/checkout@v2
- name: build project
container:
image: ".devcontainer/Dockerfile"
volumes:
- .:/srv
run: make test
Run Code Online (Sandbox Code Playgroud)
不幸的是它不喜欢container关键字。
有什么线索吗?