小编dan*_*789的帖子

如何在 gitlab-ci.yml 文件的“脚本”部分设置变量

我正在尝试根据提交源自的分支为我的 GitLab Runner 设置一个环境变量。

我有 4 个 kubernetes 集群:staging、integration、production 和 qa。本质上,我想根据我推送到的分支将我的应用程序部署到正确的集群。

image: google/cloud-sdk:latest
variables:
DOCKER_HOST: tcp://docker:2375/
DOCKER_DRIVER: overlay2
services:
  - docker:dind
before_script:
  - docker info
stages:
  - publish
publish:
stage: publish
script:
  - if [ "$CI_COMMIT_REF_NAME" = "master" ]; then $ENVIRONMENT="production"; else $ENVIRONMENT="$CI_COMMIT_REF_NAME"; fi
  - echo $ENVIRONMENT
   .
   .
   .
  - kubectl apply -f cfg/${ENVIRONMENT}/web-deployment.yaml
only:
 - master
 - integration
 - qa
 - staging
Run Code Online (Sandbox Code Playgroud)

每当我使用不同形式的 if 语句运行脚本时,都会出现以下错误:

/bin/bash: line 83: =integration: command not found
ERROR: Job failed: exit code 1 …
Run Code Online (Sandbox Code Playgroud)

continuous-integration yaml gitlab

12
推荐指数
1
解决办法
3万
查看次数

在 docker 中使用 gitlab 私有仓库作为 golang 依赖

我正在我的组织 gitlab 组中镜像一个流行的 go 库(用于冗余)。

在我的代码中,我有: import ( "gitlab.com/org/group/library.git" )

我使用这个答案来指导如何使用带有私有存储库的 go get。在我的机器上go get ./...工作是因为我使用以下命令配置了 git:

$ git config --global url.git@gitlab.com:.insteadOf https://gitlab.com/
Run Code Online (Sandbox Code Playgroud)

当我尝试构建 docker 容器时,命令RUN go get ./...失败并显示以下输出:

package gitlab.com/org/group/library.git: cannot download, git://gitlab.com/org/group/library uses insecure protocol
Run Code Online (Sandbox Code Playgroud)

似乎来自类似线程本文的流行答案是执行诸如将 ssh 密钥上传到 docker 容器之类的操作。我真的对此感到不舒服,因为我不完全了解正在做什么或安全隐患。

任何有关如何正确配置我的 dockerfile 或我的 golang 工作流程的见解都会有很大帮助。

go gitlab docker

6
推荐指数
1
解决办法
1574
查看次数

计划的救援作业未运行或输出错误

我建立了一个小型Rails项目,以“实时”显示加密货币价格。每隔30秒,后台作业就会从我构建的另一个api获取价格,数据会保存在db中,并通过操作电缆进行广播。

我最初是在两年前项目开始时问这个问题的,这确实帮助了我前进。我采用的解决方案是resque-scheduler。我已将应用程序部署到Heroku。几天前,我的价格停止更新,我不知道为什么。我的日志中没有明显的变化。我尚未升级任何软件包。

这是我的配置(此博客要点启发了我一部分):

/lib/tasks/proc.rake

require 'resque/tasks'
require 'resque/scheduler/tasks'
# Scheduler needs very little cpu, just start it with a worker.
desc "schedule and work, so we only need 1 dyno"
task :schedule_and_work do
  if Process.fork
    sh "rake environment resque:work"
  else
    sh "rake resque:scheduler"
    Process.wait
  end
end
Run Code Online (Sandbox Code Playgroud)

/lib/tasks/resque.rake

require 'resque/tasks'
require 'resque/scheduler/tasks'

namespace :resque do
  task :setup do
    require 'resque'
    require 'resque/scheduler'

    ENV['QUEUE'] = '*'

    Resque.redis = 'localhost:6379' unless Rails.env == 'production'
    schedule …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails heroku resque resque-scheduler

5
推荐指数
0
解决办法
111
查看次数

无法正确配置expo应用程序“无法读取配置:/app.config.js”

我正在尝试开发一个应用程序,但在添加 dotenv 后无法构建它。

在我的app.config.js我有

import "dotenv/config";
const API_URL = process.env["API_URL"] || "";
const API_VERSION = process.env["API_VERSION"] || "";
const MIRAGE_ENABLED = process.env["MIRAGE_ENABLED"] === "true" ? true : false;
const NODE_ENV = process.env["NODE_ENV"];

export default {
  name: "My Application",
  version: "0.0.0",
  extra: {
    API_URL,
    API_VERSION,
    MIRAGE_ENABLED,
    NODE_ENV,
  },
};
Run Code Online (Sandbox Code Playgroud)

在我的app.json我有:

{
  "expo": {
    "name": "my-application",
    "slug": "my-application",
    "owner": "my-expo",
    "privacy": "unlisted",
    "version": "0.0.0",
    "orientation": "landscape",
    "icon": "./assets/images/icon.png",
    "sdkVersion": "37.0.0",
    "platforms": ["ios"],
    "splash": {
      "image": "./assets/images/splash.png",
      "resizeMode": "contain", …
Run Code Online (Sandbox Code Playgroud)

android build ios react-native expo

5
推荐指数
1
解决办法
8845
查看次数

针对被禁止用户的 http 状态代码 403 的替代方案

我想知道以下场景的最佳实践是什么:我有一个应用程序,其中代理代表客户进行身份验证。

如果客户被禁止,我返回给他们的 http 状态代码的最佳做法是什么?

当我返回 403 时,他们发出的请求似乎无效,它不会向代理传达用户被禁止的信息。同样的道理,我不想发送 401,除非用于发出请求的凭据无效。

我已经阅读了一些答案和规范,但没有找到我想要的东西。我倾向于自定义 2XX 响应,即 (230) 或 406 或 451 之类的内容。

期待您的意见。

使用的资源:

http

3
推荐指数
1
解决办法
879
查看次数

为 React-native ios 应用程序构建 ci/cd 管道:如何在 gitlab-ci 中运行 expo build?

我正在帮助为使用expo开发的 React-Native 应用程序建立 gitlab ci 管道。这是我的gitlab-ci.yml

\n\n
image: node/apline\ncache:\n  key: ${CI_COMMIT_REF_SLUG}\n  paths:\n    - ~/.npm\n\nstages:\n  - deploy\n  - tag\nbefore_script:\n  - echo $CI_BUILD_REF\n  - echo $CI_PROJECT_DIR\n  - apk add --no-cache bash build-base gcc git python3 curl\n  - PATCH=`git log --pretty=oneline | wc -l | sed -e \'s/^[[:space:]]*//\'`\n  - VERSION=`cat VERSION`\n  - VERSION=${VERSION%?}\n  - TAG="${VERSION}${PATCH}"\n  - echo "Build version = ${TAG}"\n\nexpo-build:\n  stage: deploy\n  artifacts:\n    paths:\n    - ipas/\n  script:\n    - sed -i "s/0.0.0/${TAG}/g" app.json\n    - npm ci --production --cache .npm --prefer-offline\n …
Run Code Online (Sandbox Code Playgroud)

continuous-integration ios gitlab-ci react-native

2
推荐指数
1
解决办法
4098
查看次数