我正在构建一个 Github Actions 作业来构建、签名和公证PKG 文件。
我正在使用Apple ID 帐户(工作流程需要用户名和密码)以及带有私钥(加密)的开发人员 ID 安装程序证书。两者都保存为机密 (base64),并将在工作流程中转换为 .p12 文件,然后添加到钥匙串。
此作业是私有存储库中更大工作流程的一部分,该工作流程首先从软件生成文件(使用Pyinstaller),然后将 PKG 导出到 AWS S3 存储桶上。
jobs:
[...]
pkg:
needs: [...]
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Download macos bin file
uses: actions/download-artifact@v2
with:
name: macos-bin-files
path: dist/
- name:
run: |
----- Create certificate files from secrets base64 -----
echo ${{ secrets.DEVELOPER_ID_INSTALLER_CER }} | base64 --decode > certificate_installer.cer
echo ${{ secrets.DEVELOPER_ID_INSTALLER_KEY }} …Run Code Online (Sandbox Code Playgroud) 我目前正在 GitHub 上开发 Java Maven 项目,并且正在构建 JavaDoc 并将其发布到 GitHub 页面。
我想知道是否可以使用 GitHub Actions 来自动执行此操作,如果可以的话如何实现?
我在 webpack 5、express、github 操作中遇到一些错误。我使用 github 操作是因为想使用 github 秘密。另外,我使用 webpack 因为使用了代码中的秘密。
无论如何,我在下面遇到了错误,
ERROR in ./node_modules/terser-webpack-plugin/dist/utils.js 479:6-26
Module not found: Error: Can't resolve 'uglify-js' in '/Users/luna/workspace/express_api/node_modules/terser-webpack-plugin/dist'
@ ./node_modules/terser-webpack-plugin/dist/index.js 27:4-22
@ ./webpack.config.js 2:21-53
@ ./app.js 13:15-45
ERROR in ./node_modules/terser-webpack-plugin/dist/utils.js 557:14-34
Module not found: Error: Can't resolve '@swc/core' in '/Users/luna/workspace/express_api/node_modules/terser-webpack-plugin/dist'
@ ./node_modules/terser-webpack-plugin/dist/index.js 27:4-22
@ ./webpack.config.js 2:21-53
@ ./app.js 13:15-45
ERROR in ./node_modules/terser-webpack-plugin/dist/utils.js 635:18-36
Module not found: Error: Can't resolve 'esbuild' in '/Users/luna/workspace/express_api/node_modules/terser-webpack-plugin/dist'
@ ./node_modules/terser-webpack-plugin/dist/index.js 27:4-22
@ ./webpack.config.js 2:21-53
@ ./app.js 13:15-45
Run Code Online (Sandbox Code Playgroud)
此外,还收到了 15 条警告。如果您想要警告,请告诉我。 …
我们使用 AWS EKS 进行了完整的设置,并安装了 Tekton,并希望使用 ArgoCD 进行应用程序部署。
正如文档所述,我们在 GitHub Actions 中的 EKS 上安装了 ArgoCD:
- name: Install ArgoCD
run: |
echo "--- Create argo namespace and install it"
kubectl create namespace argocd --dry-run=client -o yaml | kubectl apply -f -
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
Run Code Online (Sandbox Code Playgroud)
正如文档告诉我们的那样,我们还公开了 ArgoCD 服务器(包括仪表板):
- name: Expose ArgoCD Dashboard
run: |
echo "--- Expose ArgoCD Dashboard via K8s Service"
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'
echo "--- …Run Code Online (Sandbox Code Playgroud) continuous-deployment kubernetes amazon-eks github-actions argocd
我正在尝试使用 gh cli 访问另一个 github 存储库作为工作流程的一部分。我正在使用gh release view如下命令
run: |
echo "::set-output name=description::$(gh release view --repo <owner/repo>)"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Run Code Online (Sandbox Code Playgroud)
工作流程失败并出现 404,我知道这是因为存储库是私有的,即使两个存储库具有相同的所有者。当在本地进行身份验证时,该命令可以正常工作。
有什么方法可以在工作流程中访问该存储库吗?
我已经为 Github Action 编写了一个测试文件:
测试.yml
name: Test
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x, 16.x]
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
- run: npm ci
- run: npm run build --if-present
- run: npm test
Run Code Online (Sandbox Code Playgroud)
但我的package.json使用组织私有存储库。当 Github Action 运行时,它失败并出现错误:
npm ERR! code E404
npm ERR! 404 Not Found - GET https://registry.npmjs.org/@org/repo/
npm ERR! 404
npm ERR! 404 '@org/repo@1.2.3' …Run Code Online (Sandbox Code Playgroud) 在我的存储库中,我有 yml 文件,其代码如下 /.github/workflows/filename.yml
- name: Create Artifact
uses: actions/upload-artifiact@v2
with:
name: Report.22.9.zip
path: |
project
!project/Reports/*
!project/Logs/*
!project/Snapshots/*
Run Code Online (Sandbox Code Playgroud)
现在,我正在尝试使“名称:Report.22.9.zip”更加动态。像这样的东西
<repo_name>.<branch_name>.<git_build_id>.zip
Run Code Online (Sandbox Code Playgroud) 我必须使用 GitHub 操作提供的创建发布操作来创建发布。build.gradle 文件中的默认配置参数如下;
defaultConfig {
applicationId "com.example.myapp"
minSdk 21
targetSdk 31
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
Run Code Online (Sandbox Code Playgroud)
以及 GitHub Actions yml 文件中的操作,如下所示;
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: <I need gradle version name here! It is 1.0>
release_name: Release <I need gradle version name here! It is 1.0>
body: |
Release body
draft: false
prerelease: false
Run Code Online (Sandbox Code Playgroud)
如何获取 GitHub Actions yml 文件中的 gradle versionName 以创建 GitHub 版本?
我想查看 Github Actions 上两次提交之间的文件之间的差异。这是我的main.yml文件:
name: GitHub Actions Test
on: [push]
jobs:
Test-GitHub-Actions:
runs-on: ubuntu-latest
steps:
- name: Adding actions/checkout@v2
uses: actions/checkout@v2
- name: Git diff
run: git diff 7100c3bbc34a9667ca9034a8ec321677ed4b5828 4c5952b60b8a5911154534ea1fefec3567c49c52 ${{ github.workspace }}/data.xml
- name: Run Python
run: |
python3 ${{ github.workspace }}/.github/workflows/app.py
- name: Setup git - step 1
run: git config --global user.email "adithraghavs@gmail.com"
- name: Setup git - step 2
run: git config --global user.name "Adith Raghav"
- name: Check for changes
run: git status …Run Code Online (Sandbox Code Playgroud) 现在,如果我们使用任何分支创建标签,我们的操作工作流程就会开始运行。仅当我们从主分支创建标签时,我们才希望触发操作工作流程。我当前的 YAML 文件如下所示。让我们知道这里需要更改什么
on:
push:
tags:
- '*'
Run Code Online (Sandbox Code Playgroud) github-actions ×10
github ×4
node.js ×2
amazon-eks ×1
android ×1
argocd ×1
certificate ×1
express ×1
git ×1
git-diff ×1
git-workflow ×1
github-cli ×1
github-pages ×1
java ×1
javadoc ×1
kubernetes ×1
macos ×1
maven ×1
notarize ×1
sign ×1
testing ×1
unit-testing ×1
webpack ×1
webpack-5 ×1
yaml ×1