我正在尝试弄清楚如何使用 Github Actions 签出远程公共存储库,然后从当前存储库添加一些敏感文件,最后构建等。
我相信我可以使用以下命令查看远程仓库
steps:
- name: Checkout
uses: actions/checkout@v2
with:
repository: foo-user/bar-repo
Run Code Online (Sandbox Code Playgroud)
但是,如何将当前存储库中的文件中的一些文件复制到此已签出的存储库中?
我的 GitHub 工作流程如下所示:
jobs:
build:
runs-on: ubuntu-latest
steps:
- run: echo "build"
test:
runs-on: ubuntu-latest
needs: build
steps:
- run: echo "build"
deploy:
runs-on: ubuntu-latest
needs: [build, test]
steps:
- run: echo "deploy"
Run Code Online (Sandbox Code Playgroud)
现在,我想使该deploy步骤仅tests在分支为 时才需要该步骤main。
那可能吗?
本质上我想做这样的事情:
jobs:
build:
runs-on: ubuntu-latest
steps:
- run: echo "build"
test:
runs-on: ubuntu-latest
needs: build
steps:
- run: echo "build"
deploy:
runs-on: ubuntu-latest
needs: contains(branch, "master") ? [build, test] : [build] #notice this line
steps:
- run: echo …Run Code Online (Sandbox Code Playgroud) 让我们以 Github 文档中的复合操作为例:
name: 'Hello World'
description: 'Greet someone'
inputs:
who-to-greet: # id of input
description: 'Who to greet'
required: true
default: 'World'
outputs:
random-number:
description: "Random number"
value: ${{ steps.random-number-generator.outputs.random-id }}
runs:
using: "composite"
steps:
- run: echo Hello ${{ inputs.who-to-greet }}.
shell: bash
- id: random-number-generator
run: echo "::set-output name=random-id::$(echo $RANDOM)"
shell: bash
- run: ${{ github.action_path }}/goodbye.sh
shell: bash
Run Code Online (Sandbox Code Playgroud)
我们如何random-number在调用此操作的外部工作流程中使用该特定输出?我尝试了以下代码片段,但目前工作流程似乎无法从操作中读取输出变量,因为它只是空的 - '输出 - '
jobs:
test-job:
runs-on: self-hosted
steps:
- name: Call Hello …Run Code Online (Sandbox Code Playgroud) 在 Github 操作中,您可以使用 获取提交 SHA ${GITHUB_SHA},这是默认的环境变量。。然而,这个提交SHA似乎是一个合并提交!?它不等于 PR 的 Github UI 上显示的提交 SHA。关于如何获取 PR 中显示的 SHA(在 Github UI 上)有什么想法吗?
我在 DO 上有一个临时服务器。
我想为它构建和部署我的节点应用程序。
name: Build & Deploy
on:
push:
tags:
- 'v1.*.0'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Create SSH key
run: |
mkdir -p ~/.ssh/
echo "$DO_GITHUB_PRIVATE_KEY" > ../github_do.key
sudo chmod 600 ../github_do.key
ssh-keyscan -H ${{secrets.DEPLOY_SERVER}} > ~/.ssh/known_hosts
shell: bash
env:
DO_GITHUB_PRIVATE_KEY: ${{secrets.DO_GITHUB_PRIVATE_KEY}}
- uses: actions/setup-node@v1
with:
node-version: 12.x
- name: Install Packages
run: yarn install --frozen-lockfile
- name: Build artifacts
env:
DEPLOY_SSH_KEY_PATH: ${{ github.workspace }}/../github_do.key
run: |
yarn shipit production fast-deploy
Run Code Online (Sandbox Code Playgroud)
我所做的是生成一个新的 SSH …
当我通过本地计算机连接到服务器时,我可以使用 ssh 成功连接到 Github。
我使用本教程来设置 ssh 密钥。
但是,当使用 Github 操作时,我收到此错误:
err: git@github.com: Permission denied (publickey).
err: fatal: Could not read from remote repository.
err:
err: Please make sure you have the correct access rights
err: and the repository exists.
Run Code Online (Sandbox Code Playgroud)
这是我的 Github 操作 YML:
name: CI App to DO
on:
push:
branches: [master]
pull_request:
branches: [master]
jobs:
deploy-do:
runs-on: ubuntu-latest
steps:
- name: SSH to server and Deploy App
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USERNAME …Run Code Online (Sandbox Code Playgroud) 你们中有人知道 GitHub 在其 GitHub 存储(用于操作和包)中实际存储了什么吗?
GitHub 不断告诉我:
您已使用 100% 包含的 GitHub 存储服务(GitHub 操作和包)
我删除了所有旧的工作流程运行我尝试了两种操作来删除所有工件:
还有一个GitHub Issue
我想知道如何在 GitHub 操作工作流程中设置系统路径变量。
export "$PATH:$ANYTHING/SOMETHING:$AA/BB/bin"
Run Code Online (Sandbox Code Playgroud) 我一直在尝试在 Github actions 中构建 CICD 管道,但我们无法在其中处理 if 和 or 条件。下面是我们的代码片段的示例,
name: Build Non prod
needs: [rules]
if: ${{ (needs.rules.outputs.branch_name != 'production') || (needs.rules.outputs.branch_name != 'staging') }}
steps:
- name: Checkout
uses: actions/checkout@v2
Run Code Online (Sandbox Code Playgroud)
因此,此任务不应在分支中运行production,staging但是当操作在staging分支中运行时,此作业也会与不适合staging环境的其他作业一起被触发。
有什么办法可以拥有if和or条件吗?
更新:
该条件将不起作用,更新后的条件将起作用。
if: ${{ (needs.rules.outputs.branch_name != 'production') && (needs.rules.outputs.branch_name != 'staging') }}
Run Code Online (Sandbox Code Playgroud)