【问题标题】:Publish docker image to jfrog artifactory from github actions CICD pipeline从 github 操作 CICD 管道将 docker 映像发布到 jfrog 工件
【发布时间】:2020-12-27 12:18:45
【问题描述】:

我正在使用 github 操作实现 CICD 管道。我想将 docker 镜像发布到 jfrog artifactory。有人知道如何实现吗?

【问题讨论】:

  • 这能回答你的问题吗? New location of docker actions
  • 按照我的第一条评论中提供的链接中的步骤操作,但将 docker github 注册表更改为工件注册表,您应该一切顺利
  • 想要使用 jfrog cli 将图像发布到带有 jfrog 访问令牌的 jfrog 工件。我已经生成了令牌并在 github 操作 CI 管道中使用,但它会引发错误,例如“[Error] 在输入字节 119 处非法 base64 数据”和后来的“[Error] invalid character 'e' looking for beginning of value”

标签: github-actions docker-push


【解决方案1】:

包含登录、构建和推送到 jfrog 工件的完整示例。

此示例在存储库的根目录中需要一个 Dockerfile,并且秘密存储在 GitHub Secrets 中。

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout ?️
        uses: actions/checkout@v2
      -
        name: Set up QEMU ?️
        uses: docker/setup-qemu-action@v1
      -
        name: Set up Docker Buildx ?
        uses: docker/setup-buildx-action@v1
      -
        name: Login to JFrog ?  
        uses: docker/login-action@v1
        with:
          registry: <your artifactory>.jfrog.io
          username: ${{ secrets.JFROG_USER_WRITER }}
          password: ${{ secrets.JFROG_PASSWORD_WRITER }}
      -
        name: Build and push ?
        id: docker_build
        uses: docker/build-push-action@v2
        with:
          push: true
          tags: <your artifactory>.jfrog.io/<your image name>:latest

【讨论】:

    【解决方案2】:

    您应该能够在不使用 jfrog cli 和 docker login 的情况下登录注册表。 F.e:

      - uses: actions/checkout@v2
          - name: Login to DockerHub Registry
            run: docker login -u ${{ secrets.REGISTRY_USERNAME }} -p ${{ secrets.REGISTRY_PASSWORD }} artifactory.<yourcompanyrepo>.com
    

    【讨论】:

      【解决方案3】:

      使用the docker-login github action,您可以指定注册表。

      F.e.

      • 名称:登录 GitHub 容器注册表 用途:docker/login-action@v1 和: 注册:artifactory..com 用户名:用户 密码:通过

      【讨论】:

        【解决方案4】:

        更简单的方法是使用 JFrog CLI 和 Setup JFrog CLI GitHub Action:

        1. 在您的本地机器上,配置并导出您的 JFrog 服务器:
        # Interactively, create a new server
        jfrog c add
        
        # Create a server token. This token can be used as a secret in your workflow named: "JF_ARTIFACTORY_SECRET".
        jfrog c export
        
        1. 运行设置 JFrog CLI GitHub 操作:
        - uses: jfrog/setup-jfrog-cli@v1
          env:
            JF_ARTIFACTORY: ${{ secrets.JF_ARTIFACTORY_SECRET }}
        - run: |
            jfrog rt docker-push <image tag> <target repo>
            
            # Optional - publish build info to Artifactory
            jfrog rt bp
        

        了解更多信息:

        【讨论】:

          猜你喜欢
          • 2022-09-24
          • 1970-01-01
          • 2021-07-13
          • 1970-01-01
          • 2021-03-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-06-27
          相关资源
          最近更新 更多