我有一个 Bitbucket 管道,它使用 cloudformation 创建 AWS 资源并将网站部署到其中。但即使 cloudform 正确创建堆栈,部署也会失败。我认为问题是当部署发生时,cloudformation S3 存储桶创建可能尚未完成。
我有一个 Hugo 网站,并且创建了一个 bitbucket 管道以将其部署到服务器。它的作用是使用 cloudformation 创建 S3 存储桶来托管网站,然后将 Hugo 网站上传到其中。当我在终端中手动运行管道中的步骤并在每个步骤之间有延迟时,它会成功发生。但是当它发生在 Bitbucket 管道上时,它会给出错误,指出我尝试上传内容的 S3 存储桶不可用。当我检查 AWS 时,该存储桶实际上就在那里。这意味着 Cloudformation 已正常工作。但是当文件开始复制时,存储桶可能无法用于上传文件。这是我的假设。有没有解决这个问题的方法。在本地执行此操作时,我可以在 cloudformation 创建和文件复制这两个命令之间等待。但是在Bitbucket pipeline环境下如何处理呢。以下是我的管道代码。
pipelines:
pull-requests:
'**':
- step:
script:
- aws cloudformation create-stack --stack-name demo-web --template-body file://cloudformation.json --parameters ParameterKey=S3BucketName,ParameterValue=demo-web
- hugo
- aws s3 cp public/ s3://demo-web/ --recursive
Run Code Online (Sandbox Code Playgroud)
如何以正确的方式处理这种情况。对于这种情况有解决方法吗?或者我发现的问题并不是实际问题。
bitbucket amazon-web-services aws-cloudformation devops bitbucket-pipelines
curl -X POST http://xxx.yyy.zzz:5555/job/job-name/build --user john-devops-jenkins:11df3ed41129c5c7da1518e9c3149896de -H 'Jenkins-Crumb:31827a74a160347a641c87ddbc8e3b6e'
Run Code Online (Sandbox Code Playgroud)
上面带有 post 请求的卷曲代码在触发 Jenkins 构建方面绝对工作得很好。
尝试过:
错误:No valid crumb was included in the request
仍然不走运,如何配置 bitbucket hook 到 crumb 的容器头信息或如何通过 url 传递它而不依赖第三方插件?
我确实有一个(Python Flask)应用程序,我想使用 GitLab CI 和 Docker 将其部署到我的 VPS。
在我的服务器上,我希望拥有应用程序的生产版本和暂存版本。它们都需要 MongoDB 连接。
我的计划是在 GitLab 上自动构建应用程序并将其推送到 GitLab 的 Docker 注册表。如果我想将应用程序部署到暂存或生产环境,我会执行docker pull,docker rm和docker run。
计划是将配置(例如secret_key)存储在.production.env(和.staging.env)中并将其传递给应用程序使用docker run --env-file ./env.list
我的服务器上已经安装了 MongoDB,并且应用程序的两个环境应使用相同的 MongoDB 实例,但数据库名称不同(在 中配置.env)。
这是部署我的应用程序的最佳实践吗?你有什么建议?谢谢!
我正在尝试找到一种方法,以编程方式在 GCP 中的 OAuth 2.0 客户端 ID 中添加用于授权重定向 URI 的 URIS,无论是 python 包还是 gcloud 。尝试查找文档但找不到任何 . 有人可以告诉我是否有任何方法可以做到这一点,而不是手动添加。
请在 GCP 中找到我想要添加网址的位置。
我试图仅在更改的 python 文件上运行 pylint,但我的构建始终失败。我已经通过 git diff 提取了更改的文件并将它们保存在变量中,但是当我将变量注入 pylint 调用时,它失败了。然而,它对于硬编码的文件名工作得很好。这是我的 yaml:
pylint:
stage: test
before_script:
- pip install pylint pylint-exit anybadge
script:
- echo CI_COMMIT_SHA=${CI_COMMIT_SHA}
- echo CI_MERGE_REQUEST_TARGET_BRANCH_NAME=${CI_MERGE_REQUEST_TARGET_BRANCH_NAME}
- git fetch origin ${CI_MERGE_REQUEST_TARGET_BRANCH_NAME}
- FILES=$(git diff --name-only ${CI_COMMIT_SHA} origin/${CI_MERGE_REQUEST_TARGET_BRANCH_NAME} | grep '\.py'$)
- echo "Changed files are $FILES"
- pylint --output-format=text $(find -type f -name "$FILES" ! -path "**/.venv/**") | tee ./pylint/pylint.log || pylint-exit $?
- PYLINT_SCORE=$(sed -n 's/^Your code has been rated at \([-0-9.]*\)\/.*/\1/p' ./pylint/pylint.log)
- anybadge --label=Pylint --file=pylint/pylint.svg --value=$PYLINT_SCORE …Run Code Online (Sandbox Code Playgroud) 我试图根据逻辑获取一些值来形成我的点网应用程序的版本号。
我正在使用 Azure DevOps 并创建了一个管道 (YAML)。在管道中,我创建了几个变量,它们通过使用一些计算逻辑来获取值。下面是代码。
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
old_date: '20210601'
latest_date: '20210603'
PSI: ($(latest_date)-$(old_date))/56+1
totalsprints: '($(latest_date)-$(old_date))/14'
sprint: '$(totalsprints)%4+1'
majorversion: '2.'
dot: '.'
name: '$(majorversion)$(Year:yy)$(PSI)$(dot)$(sprint)$(dot)$(Date:MMdd)'
Run Code Online (Sandbox Code Playgroud)
上面的逻辑在 old_date 中设置了一个默认日期,从latest_date 中减去它并除以 56 以获得一些值。结果的下一个值是我们的 PSI。冲刺的计算方式相同。这样做是为了形成我们的 Dot Net 应用程序的版本号。像这样的“2.212.2.0312”
相同类型的逻辑也适用于 Jenkins 的 Groovy 脚本。但在这里,它显示 PSI = ($(latest_date)-$(old_date))/56+1 并且不评估任何内容。
感谢您对此的回应。
我有一个带有 NextJS 前端和 FeathersJS/Node 后端的项目。这两个应用程序/代码库都是单独的存储库。我想开始使用 Cypress 进行 E2E 测试,但我不确定在我的设置中执行此操作的最佳方法是什么。理想情况下,测试将作为 CI 的一部分针对每个后端和前端更改运行。我目前正在为我的 CI 使用 GitHub 操作,我不确定这对我是否有帮助或伤害。
我看到有些人提到将 Cypress 放在自己的存储库中,并使用自己的 docker-compose 来处理前端和后端的旋转以运行测试。但是,我不明白这作为 CI 的一部分如何工作。预合并的新代码如何进入此存储库并作为 CI 的一部分运行?我认为这种方法会有很多问题。
我想到的一种方法是将 Cypress 作为前端 NextJS 应用程序的一部分,并让它针对后端的“暂存”或“测试”实例运行,该实例会随着每个新的后端部署而播种。这里的问题之一是,当后端发生变化时,测试将不会运行,但这不一定是问题,我想。
有什么想法吗?
以前创建的 crd 不会删除。仍处于终止状态。有什么解决方案可以正确删除此 crds?
Error from server (MethodNotAllowed): error when creating "elkkib.yml": create not allowed while custom resource definition is terminating
Error from server (MethodNotAllowed): error when creating "elkkib.yml": create not allowed while custom resource definition is terminating
Run Code Online (Sandbox Code Playgroud) 我正在 Azure DevOps 上使用 NuGet 包。使用 Visual Studio 包管理器查看发布到 DevOps Artifacts 中我的提要的包时,不会显示图标。当我下载包并在计算机上创建本地资源时,图标在 Visual Studio 包管理器中正确显示。知道为什么 devops feed 不显示图标而本地则显示图标吗?都是同一个包,只是来源不同。
这似乎是一件非常简单的事情,但我找不到相关信息。在 Visual Studio 中,计算所有项目的代码指标非常容易,我希望在 Azure DevOps 中的构建管道期间执行相同的操作。
有人做过这样的事吗?