我最近开始尝试 ECS、Docker Compose 和 context,这真的很有趣。我已经设法使用docker compose up\xc2\xa0 和 ecs-context 通过终端部署和托管一个 compose 文件,但我还想通过 Github 操作之类的东西来自动执行此操作。
我正在努力了解如何设置它,而且我还没有找到它的指南。
\n有没有什么好的资源可以进一步研究这个问题?通过 Github 在 AWS 上进行 CI/CD 的替代或什至更好的方法是什么?
\namazon-web-services amazon-ecs docker docker-compose github-actions
通过 GitHub 操作将更改推送到我自己的公共存储库时,我收到此错误。
remote: Permission to spooky/repo.git denied to github-actions[bot].
fatal: unable to access 'https://github.com/spooky/repo/': The requested URL returned error: 403
Error: Process completed with exit code 128.
Run Code Online (Sandbox Code Playgroud)
操作中的提交代码是
- name: Commit Output files
run: |
git config remote.origin.url 'https://github_token@github.com/spooky/repo/'
git config --local user.email "spook@gmail.com"
git config --local user.name "spook"
git init
git add .
git commit -m "Updated"
git push origin main
- name: Push changes
uses: ad-m/github-push-action@master
with:
github_token: github_token
Run Code Online (Sandbox Code Playgroud)
我也尝试过git config remote.origin.url 'https://username:github_token@github.com/spooky/repo/',得到同样的错误(GitHub 令牌具有所有权限)。
谁能帮我解决这个问题吗?
我一直在 GitHub Actions 中快速了解 Docker 的使用情况,并且不断运行如下代码:
docker run --rm -t \
-v "/home/runner":"/home/runner" \
-v "/home/runner/work/_temp/_github_home":"/github/home" \
-v "/home/runner/work/_temp/_github_workflow":"/github/workflow" \
-v "${{ github.workspace }}":"/github/workspace" \
...
Run Code Online (Sandbox Code Playgroud)
我很好奇安装所有这些卷的动机是什么。我得到了/github/workspace一个,可以访问 Docker 容器内的所有存储库文件,但是这些文件有什么用呢?
/home/runner/home/runner/work/_temp/_github_home/home/runner/work/_temp/_github_workflow“你说什么,你在哪里看到的?”
然而,我找不到任何有关您为什么要这样做的文档。
我指的是官方github指南来设置自动部署到ECS https://docs.github.com/en/actions/deployment/deploying-to-your-cloud-provider/deploying-to-amazon-elastic-容器服务
我的deploy.yaml工作流程看起来与上面链接中的工作流程相同,只是替换了正确的环境变量
我已完成所需的所有步骤,并已在 AWS 上启动并运行所有必要的基础设施。但是当工作流程被触发时,它总是无法将 docker 镜像推送到 ECR。重试几次后,退出
EOF
Error: Process completed with exit code 1.
Run Code Online (Sandbox Code Playgroud)
从我在 github 操作上看到的输出,我相信登录 ecr 步骤成功,并且还可以确认它正在推送到正确的 ECR 存储库,但由于某种原因推送失败。
我已经将图像推送到本地存储库并且它可以工作,所以我认为 AWS 方面没有任何问题。
环境表达式通常直接赋值,如下例所示
- name: set up env var
env:
TAG: v1.2.3
run: echo $TAG
Run Code Online (Sandbox Code Playgroud)
但是如何从 shell 脚本评估中获取值呢?例如,在我的终端中,我可以通过以下方式获取当前标签git describe --exact-match --tags $(git log -n1 --pretty='%h')
但是当我尝试将此脚本放入环境中时,如下所示
- name: set up env var
env:
TAG: $(git describe --exact-match --tags $(git log -n1 --pretty='%h'))
run: echo $TAG
Run Code Online (Sandbox Code Playgroud)
打印出的 echo$(git describe --exact-match --tags $(git log -n1 --pretty='%h'))意味着它不被计算而是被视为字符串。
如何获取 的值git describe --exact-match --tags $(git log -n1 --pretty='%h')并将其分配给环境变量TAG?
我无法让 Github 工作流功能排除正常工作的路径,并且在堆栈溢出上找不到类似的问题。最相似的情况是Github 工作流程不会在推送基于路径的过滤时触发,但它对我没有帮助。
我的 PR 工作流程如下:
name: Build For PRs
on:
pull_request:
types: [opened, synchronize, ready_for_review]
paths:
- 'src/**'
- '!src/abc/**'
- '!src/def/**'
- '!src/ghi/**'
- '!src/docker-compose*.yml'
- '!**.md'
Run Code Online (Sandbox Code Playgroud)
我希望它在“src”下的任何文件发生更改时在 PR 上运行,除非负过滤器之一匹配。
即使更改 .md 文件也会触发此 WF。我怎样才能实现上面的逻辑呢?
我在尝试启动 Github 操作工作流程时陷入困境。Flutter项目有一个自定义包的依赖。我在 Github 存储库中有这个自定义包。这是我在 pubspec.yaml 中设置此依赖项的方式:
xxxx_package:
git:
url: git@github.com:USER_NAME/xxxx_package.git
ref: develop
Run Code Online (Sandbox Code Playgroud)
如果我启动flutter pub get命令,它就会成功结束,我可以毫无问题地构建和执行应用程序。
但是当我向 Github 发送推送并启动工作流程时,该过程结束时出现以下错误:
Running "flutter pub get" in Project-Flutter...
Git error. Command: `git clone --mirror git@github.com:xxx/xxxx_package.git /home/runner/.pub-cache/git/cache/xxxx_package-123456789`
stdout:
stderr: Cloning into bare repository '/home/runner/.pub-cache/git/cache/xxxx_package-123456789'...
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Run Code Online (Sandbox Code Playgroud)
这是我的操作工作流程文件:
name: Check merge
on:
push:
branches: [ main, develop ]
pull_request:
branches: [main, develop]
workflow_dispatch:
jobs:
build:
name: flutter environment
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2 …Run Code Online (Sandbox Code Playgroud) 在推送事件中,是否可以获得 PR 标题,以便我可以使用相同的内容来创建版本和标签。
目前,我无法在推送事件中获得 PR 头衔。
任何人都可以帮忙吗?
我第一次使用 tflint 扫描我的 terraform 代码。为此,我创建了 shell 脚本来执行 tflint 命令,但是,在执行 tflint 作业时,我收到一些 [WARN] 消息。我不确定它们是如何生成的。有办法抑制吗?
tflint 命令已成功执行,并且还在我的 terraform 代码中显示可能的问题/通知。
我正在使用下面的 Github 工作流程操作;
- name: Setup TFLint
uses: terraform-linters/setup-tflint@v1
with:
tflint_version: v0.26.0
- name: Lint Terraform Code
run: scripts/tflint.sh
shell: bash
continue-on-error: false
Run Code Online (Sandbox Code Playgroud)
“.tflint.hcl”文件 ->
plugin "aws" {
enabled = true
version = "0.12.0"
source = "github.com/terraform-linters/tflint-ruleset-aws"
}
rule "terraform_naming_convention" {
enabled = true
}
rule "terraform_unused_declarations" {
enabled = true
}
rule "terraform_deprecated_index" {
enabled = true
}
rule "terraform_documented_outputs" {
enabled …Run Code Online (Sandbox Code Playgroud) github-actions ×10
docker ×3
github ×3
amazon-ecr ×1
amazon-ecs ×1
flutter ×1
git ×1
git-push ×1
github-api ×1
lint ×1
postgresql ×1
terraform ×1
workflow ×1