我们在spring-boot-admin项目中大量使用testcontainers-java。由于我们还希望能够在 Windows 上运行 Maven 构建,因此我们使用矩阵策略构建(如本答案中假设的那样)向 GitHub Actions Pipeline 添加了一个环境,如下所示:windows-latest
name: build
on:
push:
jobs:
build:
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build with Maven
run: |
mvn -B install --no-transfer-progress
Run Code Online (Sandbox Code Playgroud)
现在我们的 Testcontainers JUnit 测试用例失败(请参阅完整的构建日志):
[INFO] Running de.codecentric.boot.admin.server.eventstore.HazelcastEventStoreWithClientConfigTest
Error: Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.877 s <<< …Run Code Online (Sandbox Code Playgroud) 如果您在没有更改的情况下有提交语句,那么它将返回退出代码 1,这将导致 GitHub 工作流失败。
作为解决方法,我尝试修改此SO 帖子以及此答案中的解决方案,该答案基本上是使用 -
git diff-index --quiet HEAD
Run Code Online (Sandbox Code Playgroud)
在我当地的 bash 上,它按预期工作。当我运行时echo "$?",输出 1 或 0 符合我的预期。
基于该文档和有关在 GitHub 工作流程中设置环境变量的文档,我的工作流程文件中有以下内容 -
git diff-index --quiet HEAD
Run Code Online (Sandbox Code Playgroud)
但是,每当有要提交或跟踪的更改时,环境变量changes_exist就会发生变化false,反之亦然。
这与我的期望恰恰相反。
作为一种解决方法,直到我弄清楚这一点,我使用以下在工作人员中完美运行的方法 -
git diff-index --quiet HEAD || git commit -m "updating datasets"
Run Code Online (Sandbox Code Playgroud)
知道为什么上面的方法有效,而使用的if - then - else行为与它应该的相反吗?
我已经使用 .AWS 在 AWS 上设置了一个 kubernetes 集群kops。
我正在尝试使用 github 操作自动化部署。
name: Build and Deploy
on:
push:
branches:
- develop
jobs:
build_docker_image:
- uses: actions/checkout@v2
- name: Build the tagged Docker image
run: docker build --target dev -t org/customer-service-backend:la
push_docker_image_to_github-packages:
- uses: docker/build-push-action@v2
with:
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
registry: docker.pkg.github.com
repository: org/customer-service-backend:latest
tag_with_ref: true
deploy_to_kubernetes_cluster:
... what to do here?
Run Code Online (Sandbox Code Playgroud)
我能够构建图像并推送到 gihub 包。
我已经deployment.yml在存储库的根目录中创建了。
如何部署到kubernetes集群?
另外,我用 标记图像latest。可以吗还是我需要用于GITHUB_REF标记?
更新
我能够配置所有的东西。我只需要 …
它有一个 monorepo,其中包含两个子文件夹,它们是:
每个都有各自的项目和包。我正在尝试访问某个子文件夹以执行其各自的操作,但当我运行命令来使用 lint 进行测试时,它给出了错误,即:
error Couldn't find a package.json file in "/github/workspace"
Run Code Online (Sandbox Code Playgroud)
它可能不应该访问前端子文件夹。我需要它来运行该子文件夹中的所有命令,我该怎么做?
我的.YML:
name: PIPELINE OF TESTS
on:
push:
branches: [frontend-develop, backend-develop]
pull_request_target:
types: [opened, edited, closed]
branches: [main]
jobs:
test-frontend:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./frontend
strategy:
matrix:
node-version: [14.x]
architecture: [x64]
steps:
- name: CHECK-OUT GIT REPOSITORY
uses: actions/checkout@v2
- name: USE NODEJS ${{ matrix.node-version }} - ${{ matrix.architecture }}
uses: actions/setup-node@v2
- name: INSTALL PROJECT DEPENDENCIES (YARN)
uses: borales/actions-yarn@v2.0.0
with:
cmd: install
- …Run Code Online (Sandbox Code Playgroud) 我想设置 github 操作,以便对 docker 映像执行安全扫描。然而,我想要扫描的图像的构建和推送是由 CircleCI 完成的。因此,在执行安全扫描之前,我需要确保图像已正确构建并推送到我的存储库上。
我知道存在一个触发 CircleCI 作业的操作,但是有没有办法从 Circle CI 触发我的 Github 操作的执行?
感谢您的回答或您可以提供的任何解决方法:)
continuous-integration continuous-deployment docker circleci github-actions
我尝试使用git push来自 GitHub CI 操作的 SSH 远程操作并收到错误:Load key "/tmp/341b5794-f0a2-4534-90dd-f791510ec77a_id_rsa": invalid format
密钥位于存储库秘密中。我得到它的信息ssh-keygen -l -v -f key_id_rsa,它的输出等于我本地机器上的输出。在我的机器上我可以用这个键进行推送
GIT_SSH_COMMAND='ssh -v -o StrictHostKeyChecking=accept-new -i /tmp/341b5794-f0a2-4534-90dd-f791510ec77a_id_rsa'
Run Code Online (Sandbox Code Playgroud)
Thewe就是/tmp/341b5794-f0a2-4534-90dd-f791510ec77a_id_rsa.pub文件
完整的输出ssh -v内部git push:
+ git push dest-push-remote gh-pages
OpenSSH_8.2p1 Ubuntu-4ubuntu0.2, OpenSSL 1.1.1f 31 Mar 2020
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug1: Connecting to github.com [140.82.112.4] port 22.
debug1: Connection …Run Code Online (Sandbox Code Playgroud) 我对 GitHub actions 和 Redis 还很陌生。我正在 GitHub 操作上运行此 CI(代码如下)
name: sanity check
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
tests:
runs-on: ubuntu-latest
strategy:
matrix:
redis-version: [6]
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: "14"
- uses: supercharge/redis-github-action@1.2.0 # sets up Redis
with:
redis-version: ${{ matrix.redis-version }}
- run: node -v
- run: yarn -v
# - run: redis-cli ping
- run: yarn install
- run: yarn test --detectOpenHandles
Run Code Online (Sandbox Code Playgroud)
这样我就可以使用 Redis 执行集成测试,但是这个 CI 不会退出(我正在使用 Jest 运行测试) …
问题的简短版本是:如何正确存储和使用 SSL/TLS 第三方证书以在 GitHub 操作中使用第三方服务进行身份验证?
长篇故事和设置如下:
但是,当我尝试对 GitHub 操作执行类似的技巧时,它不会给我 SSL 错误。这就是我所做的:
将所有文件的内容复制到各自的 github Secret 中。(我已经尝试了很多方法来避免特殊符号问题,但结果总是相同的)
当消费者或生产者启动时,它需要所有这 3 个文件的路径,而不是它们的内容。因此,我从密钥创建证书文件,如下所示:
pipenv run mkdir ${{ github.workspace }}/certs
pipenv run printf "%s" $(echo ${{ secrets.CA }}) > ${{ github.workspace }}/certs/ca.pem
pipenv run printf "%s" $(echo ${{ secrets.SERVICE_CERT }}) > ${{ github.workspace }}/certs/service.cert
pipenv run printf "%s" $(echo ${{ secrets.SERVICE_KEY }}) > ${{ github.workspace }}/certs/service.key …Run Code Online (Sandbox Code Playgroud)当初始化 firebase 托管的 github 操作时,我指定了以下内容:
设置工作流程以在每次部署之前运行构建脚本?是 每次部署之前应运行什么脚本?纱线运行构建。
这个工作流程给了我错误
Run yarn run build
yarn run v1.22.10
error Couldn't find a package.json file in "/home/runner/work/SpaceBar/SpaceBar"
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
Error: Process completed with exit code 1.
Run Code Online (Sandbox Code Playgroud)
我的项目目录中有一个 package.json 文件。为什么说找不到呢?
firebase-hosting-merge.yml 位于名为 spacebar 的目录中,其中包含另一个名为 spacebar 的目录,其中包含 package.json 文件。是否有办法 cd 到该文件的子目录中
name: Deploy to Firebase Hosting on merge
'on':
push:
branches:
- main
jobs:
build_and_deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: yarn run build
- uses: FirebaseExtended/action-hosting-deploy@v0
Run Code Online (Sandbox Code Playgroud) 当我做
${{ secrets.MY_SECRET }}
Run Code Online (Sandbox Code Playgroud)
它返回空字符串,
我是提交更改的人,它是我的存储库,因此应该不存在有关秘密授权的问题,并且也克隆了它而不是分叉,
这就是我的行动工作的样子
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Node.js environment
uses: actions/setup-node@v2.1.5
- name: Download Modules
run: npm ci
- name: Test
env:
TEST_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TEST_SECRET: ${{ secrets.TEST_SECRET }}
run: |
echo ${#TEST_GITHUB_TOKEN}
echo ${#TEST_SECRET}
- name: React Build
run: npm run build
env:
CI: true
REACT_APP_FIREBASE_API_KEY: ${{ secrets.REACT_APP_FIREBASE_API_KEY }}
REACT_APP_PIXABAY_API_KEY: ${{ secrets.REACT_APP_PIXABAY_API_KEY }}
REACT_APP_TEST: 'TESTING'
- name: Upload a Build Artifact
uses: actions/upload-artifact@v2.2.3
with:
name: docs
path: './build' …Run Code Online (Sandbox Code Playgroud)