我是 DevOps 的新手,特别是使用 golang 和微服务架构。
我想知道 go 应用程序是否应该部署在容器(Docker)中。在这个例子中,我有一个用微服务架构构建的系统。例如,我有 2 个 Web 服务,A 和 B。此外,我还有另一个 Web 服务器,充当这两个服务前面的网关。
A 和 B 都需要访问数据库,例如 MySQL。A 处理 A 表,B 处理 B 表。
我知道在 Go 中,源代码被编译成单个可执行二进制文件。因为我这里有 3 个服务,所以我有 3 个二进制文件。所有三个都作为公开 JSON REST API 的 Web 服务器运行。
我的问题是:
我可以将这些服务器一起部署在一台运行不同端口的主机上吗? 例如,如果我的主机获得 IP xxxx,则我的网关可以在 xxxx:80 中运行,A 在端口 81 中运行,B 在端口 82 中运行。A 和 B 将与同一主机外部或内部的 MySQL 服务器通信。这是一个好的做法吗?持续部署可以用于这种实践吗?
为什么我应该在 Docker 等容器内部署和运行这些二进制文件? 我知道自从几年前发布以来,Docker 已经找到了轻松集成到开发工作流程中的方法。当然,使用 Docker 并不只是将代码编译成二进制文件然后将其移动到部署服务器那么简单。使用 Docker,我们必须将可执行文件放入容器中,然后将容器也移动到部署服务器。
如果不使用 Docker,可扩展性和高可用性怎么样? 我可以复制我的服务并使用负载均衡器在不同的主机上同时运行它们吗?这样我应该在一台主机上部署A、B和网关,在另一台主机上部署另一个A、B和网关,然后在它们前面设置负载均衡器。A、B 和网关分别运行在 80、81、82 端口。这样,我就可以拥有数千个以虚拟机或 LXD 容器形式存在的节点,分布在数百个裸机上,使用简单的 bash 脚本和 ssh 进行部署,如果情况变得复杂,则可以使用 Ansible 进行部署。是还是不是? …
我们公司最近开始使用 Azure DevOps。今天早上,我不记得我是否已输入昨天的工作时间来完成某项任务。我找到了提供的预设查询,但没有一个显示按天(日期)输入的小时数。
Azure DevOps 中是否有报告/查询提供您按天和任务输入的(在用户级别)小时数。
注意:在我们的 ENV 中,我们没有多人报告同一任务的时间,因此如果我们可以获得每天和任务的小时数,我们可以假设用户。
I'm using BitBucket-pipelines for Android CI. I'm trying to export the artifact (generated apk) to the downloads section of the project.
My bitbucket-pipelines.yml is as follows, but it can't locate the apk file
image: openjdk:8
pipelines:
default:
- step:
caches:
- gradle
- android-sdk
script:
# Download and unzip android sdk
- wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
- unzip -o -qq android-sdk.zip -d android-sdk
# Define Android Home and add PATHs
- export ANDROID_HOME="/opt/atlassian/pipelines/agent/build/android-sdk"
- export PATH="$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools:$PATH"
# Download packages.
- …Run Code Online (Sandbox Code Playgroud) continuous-integration android bitbucket devops bitbucket-pipelines
我对 Azure DevOps 感到非常沮丧。在我的内部版本号格式中,我希望同时拥有
我没有使用 YAML 格式。我使用带有选项页面的经典界面来设置我的构建格式。此时此刻我有这个:
它工作,除了每个月 r 数字从 0 重新启动。我希望它继续。
编辑
我还没有决定我的最终格式。我想了解所有的可能性。现在我发现了这个$(BuildID)房产,我还有另一个问题。是否有可能有类似于$(Rev:r)变量的东西,但只检查我的内部版本号的左侧部分。
例子:
4.16.$(SequenceFor[4.16]).$(BuildID)
Run Code Online (Sandbox Code Playgroud)
事实上我想手动设置Major和Minor版本,让系统一一更新Build并使用全局的Revision $(BuildID)。
我们使用 python 和 pyspark api 来在 Spark 集群上运行简单的代码。
from pyspark import SparkContext, SparkConf
conf = SparkConf().setAppName('appName').setMaster('spark://clusterip:7077')
sc = SparkContext(conf=conf)
rdd = sc.parallelize([1, 2, 3, 4])
rdd.map(lambda x: x**2).collect()
Run Code Online (Sandbox Code Playgroud)
当我们在本地并使用 docker 设置 Spark 集群时,它就可以工作。
我们现在想要启动一个 emr 集群并测试相同的代码。并且似乎 pyspark 无法连接到 emr 上的 Spark 集群
我们从我们的机器向 Spark Master 打开端口 8080 和 7077
我们正在穿越防火墙,但似乎没有任何东西在侦听端口 7077,并且我们的连接被拒绝。
我们发现这解释了如何使用 cli 提供作业,但我们需要直接从驱动程序上的 pyspark api 运行它。
我们在这里缺少什么?
如何启动 emr 集群并使用该集群在 python 上本地运行 pyspark 代码?
编辑:从主站本身运行此代码是有效的与建议的相反,当使用 ssh 连接到主站并从终端运行 python 时,完全相同的代码(对主站 IP 进行适当调整,因为它是同一台机器)有效。没有问题没有问题。鉴于文档明确指出了其他情况,这有何意义?
我在 Azure DevOps 下有一个相对简单的测试项目,我想生成代码覆盖率。
这有效...有点。我明白了:
我得到了我需要的文件(至少我认为)但是选项卡丢失了。
我有这三个步骤:
执行 .NET 测试任务 安装报告生成器 运行报告生成器以转换 (-reporttypes:HtmlInline_AzurePipelines;Cobertura") 发布结果
但选项卡没有显示?有任何想法吗?
- stage: Run_Unit_tests
jobs:
- job: 'Tests'
pool:
vmImage: 'windows-latest'
variables:
buildConfiguration: 'Release'
continueOnError: true
steps:
- task: DotNetCoreCLI@2
inputs:
command: custom
custom: tool
arguments: install --tool-path . dotnet-reportgenerator-globaltool
displayName: Install ReportGenerator tool
- task: DotNetCoreCLI@2
displayName: Test .NET
inputs:
command: test
projects: '**/*Test/*.csproj'
arguments: '--configuration $(buildConfiguration) --logger trx --collect:"XPlat Code Coverage"'
condition: succeededOrFailed()
- task: reportgenerator@4
inputs:
reports: '$(Agent.TempDirectory)\**\coverage.cobertura.xml'
targetdir: '$(Build.SourcesDirectory)\coverlet\reports'
verbosity: 'Verbose'
- …Run Code Online (Sandbox Code Playgroud) 我想做的事
到目前为止我已经做了什么
编写了一个 lambda 函数,可以在存储桶中移动图像。
让 S3 触发 lambda 函数
我的问题出在哪里
我正在使用 PIL 调整图像大小。但PIL模块不在python STL中。所以我用站点包压缩了我的代码并且能够运行。但错误说找不到文件。文件密钥 image/myimage.jpg 的示例
虽然我遵循了教程,但如果我尝试使用 lambda 层而不是每次都进行压缩,似乎找不到 PIL 模块。
代码
import boto3
import os
import sys
import uuid
from PIL import Image
import PIL.Image
s3_client = boto3.client('s3')
def resize_image(image_path, resized_path):
with Image.open(image_path) as image:
image.thumbnail((500, 500))
image.save(resized_path)
def lambda_handler(event, context):
#
# giving a key error here event['Records']
#
for record in event['Records']:
bucket = 'mahabubelahibucket1'
key = …Run Code Online (Sandbox Code Playgroud) \n[16:07:15] [语义发布] \xe2\x80\xba \xe2\x84\xb9 运行语义发布版本 17.0.4
\n [16:07:18] [语义发布] \xe2\x80 \xba \xe2\x9c\x94 从“@semantic-release/npm”加载插件“verifyConditions”
\n [16:07:19] [semantic-release] \xe2\x80\xba \xe2\x9c\x94 加载插件来自“@semantic-release/git”的“verifyConditions”
\n [16:07:19] [semantic-release] \xe2\x80\xba \xe2\x9c\x94 从“@semantic-release/”加载插件“analyzeCommits” commit-analyzer"
\n [16:07:19] [semantic-release] \xe2\x80\xba \xe2\x9c\x94 从“@semantic-release/release-notes-generator”加载插件“generateNotes”\
n [16:07:19] [语义发布] \xe2\x80\xba \xe2\x9c\x94 从“@semantic-release/changelog”加载插件“准备”
\n [16:07:19] [语义-发布] \xe2\x80\xba \xe2\x9c\x94 从“@semantic-release/npm”加载插件“准备”
\n [16:07:19] [语义发布] \xe2\x80\xba \xe2 \x9c\x94 从“@semantic-release/git”加载插件“准备”
\n [16:07:19] [semantic-release] \xe2\x80\xba \xe2\x9c\x94 从“@semantic-release/git”加载插件“发布” “@semantic-release/npm”
\n [16:07:20] [semantic-release] \xe2\x80\xba \xe2\x9c\x94 从“@semantic-release/gitlab”加载插件“publish”\
n [16:07:20] [语义发布] \xe2\x80\xba \xe2\x9c\x94 从“@semantic-release/npm”加载插件“addChannel”
\n [16:07:20] [语义-发布] \xe2\x80\xba \xe2\x9c\x94 从“@semantic-release/github”加载插件“addChannel”
\n [16:07:27] [semantic-release] …
在 Gitlab 中,个人访问令牌和模拟令牌有什么区别?我们什么时候宁愿使用其中一种而不是另一种?
我正在使用发布管道经典编辑器,并且需要将任务中生成的输出变量传递到同一阶段中的多个作业或外部阶段。目前,这个输出变量仅在同一个作业中可用,我必须在多个作业和阶段中编写相同的任务,我觉得这是一种冗余。有什么办法可以实现吗?
devops azure-devops azure-pipelines-release-pipeline azure-devops-rest-api
devops ×10
azure-devops ×4
access-token ×1
amazon-emr ×1
amazon-s3 ×1
android ×1
apache-spark ×1
aws-lambda ×1
azure ×1
azure-pipelines-release-pipeline ×1
bitbucket ×1
git ×1
gitlab ×1
go ×1
kubernetes ×1
node.js ×1
port ×1
pyspark ×1
python-3.x ×1
token ×1