首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Github Action with Docker

Github Action with Docker

作者头像
XRSec
发布2022-03-12 15:38:01
发布2022-03-12 15:38:01
64400
代码可运行
举报
文章被收录于专栏:XRSec.BlogXRSec.Blog
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
复制
DOCKERHUB_USERNAME
DOCKERHUB_TOKEN

Lite version

Canvas_Docker_Build.yml

代码语言:javascript
代码运行次数:0
运行
复制
name: Canvas Docker Build

on:
  push:
    branches:
      - main
  schedule:
    - cron:  '0 0 * * MON'

jobs:
  Canvas_Docker_Build:
    name: Canvas Docker Build
    runs-on: ubuntu-latest
    steps:
      - 
        name: Private Actions Checkout
        uses: actions/checkout@v2.3.4
      - 
        name: Docker Setup QEMU
        uses: docker/setup-qemu-action@v1.2.0
      - 
        name: Docker Setup Buildx
        uses: docker/setup-buildx-action@v1.6.0
      - 
        name: Docker Login
        uses: docker/login-action@v1.10.0
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - 
        name: Build and push Docker images
        uses: docker/build-push-action@v2.7.0
        with:
          context: .
          platforms: linux/amd64,linux/arm64
          push: true
          tags: |
            xrsec/canvas:latest
            xrsec/canvas:7.2
          cache-from: type=gha
          cache-to: type=gha,mode=max

Auto-update version

代码语言:javascript
代码运行次数:0
运行
复制
name: Docker Code Server Build
  
on:
  push:
    branches:
      - main
  schedule:
    - cron:  '0 0 * * MON'

jobs:
  Build_For_Code_Server:
    name: Docker Code Server Build
    runs-on: ubuntu-latest
    steps:
      - 
        name: Private Actions Checkout
        uses: actions/checkout@v2.3.4
      - 
        name: Docker Setup QEMU
        uses: docker/setup-qemu-action@v1.2.0
      - 
        name: Docker Setup Buildx
        uses: docker/setup-buildx-action@v1.6.0
      - 
        name: Code Server Download
        run: |
          mkdir -p linux/arm64 linux/amd64
          wget -O linux/amd64/code-server.rpm `curl https://api.github.com/repos/cdr/code-server/releases/latest | grep "browser_download_url"  | cut -d '"' -f 4 | grep amd64.rpm` --no-cookie --no-check-certificate
          wget -O linux/arm64/code-server.rpm `curl https://api.github.com/repos/cdr/code-server/releases/latest | grep "browser_download_url"  | cut -d '"' -f 4 | grep arm64.rpm` --no-cookie --no-check-certificate
          
      - 
        name: Docker Login
        uses: docker/login-action@v1.10.0
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - 
        name: Build and push Docker images
        uses: docker/build-push-action@v2.7.0
        with:
          context: .
          platforms: linux/arm64,linux/amd64
          push: true
          tags: |
            xrsec/code-server:latest
          cache-from: type=gha
          cache-to: type=gha,mode=max

version_checking.py

代码语言:javascript
代码运行次数:0
运行
复制
#!/usr/bin/env python
# _*_ coding: utf-8 _*_
import os, re, requests, platform
code_server_version =  requests.get("https://api.github.com/repos/cdr/code-server/releases/latest").json()["tag_name"]
if code_server_version == open(".github/code-server_version/code-server_version").read():
    print("It's the latest edition! version: " + code_server_version)
    os._exit("It's the latest edition!")
else:
    open(".github/code-server_version/code-server_version", "w").write(code_server_version)

Dockerfile

代码语言:javascript
代码运行次数:0
运行
复制
RUN if test `uname -p` = "x86_64"; then wget -O /www/bak/code-server.rpm `curl https://api.github.com/repos/cdr/code-server/releases/latest | grep "browser_download_url"  | cut -d '"' -f 4 | grep amd64.rpm` --no-cookie --no-check-certificate; fi \
    && if test `uname -p` = "aarch64"; then wget -O /www/bak/code-server.rpm `curl https://api.github.com/repos/cdr/code-server/releases/latest | grep "browser_download_url"  | cut -d '"' -f 4 | grep arm64.rpm` --no-cookie --no-check-certificate; fi

Multi-system Deployment

Docker-CobaltStrike.yml

代码语言:javascript
代码运行次数:0
运行
复制
name: Docker Code Server Build
  
on:
  push:
    branches:
      - main
  schedule:
    - cron:  '0 0 * * MON'

jobs:
  Build_For_Code_Server:
    name: Docker Code Server Build
    runs-on: ubuntu-latest
    steps:
      - 
        name: Private Actions Checkout
        uses: actions/checkout@v2.3.4
      - 
        name: Docker Setup QEMU
        uses: docker/setup-qemu-action@v1.2.0
      - 
        name: Docker Setup Buildx
        uses: docker/setup-buildx-action@v1.6.0
      - 
        name: Code Server Download
        run: |
          mkdir -p linux/arm64 linux/amd64
          wget -O linux/amd64/code-server.rpm `curl https://api.github.com/repos/cdr/code-server/releases/latest | grep "browser_download_url"  | cut -d '"' -f 4 | grep amd64.rpm` --no-cookie --no-check-certificate
          wget -O linux/arm64/code-server.rpm `curl https://api.github.com/repos/cdr/code-server/releases/latest | grep "browser_download_url"  | cut -d '"' -f 4 | grep amd64.rpm` --no-cookie --no-check-certificate
          
      - 
        name: Docker Login
        uses: docker/login-action@v1.10.0
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - 
        name: Build and push Docker images
        uses: docker/build-push-action@v2.7.0
        with:
          context: .
          platforms: linux/arm64,linux/amd64
          push: true
          tags: |
            xrsec/code-server:latest
          cache-from: type=gha
          cache-to: type=gha,mode=max

Manual

Docker_Oracle_Java_Build.yml

代码语言:javascript
代码运行次数:0
运行
复制
name: Docker Oracle Java Build
  
on:
  push

jobs:
  Build_For_Java8:
    name: Docker Oracle Java Build Java8
    runs-on: ubuntu-latest
    steps:
      - 
        name: Private Actions Checkout
        uses: actions/checkout@v2.3.4
      - 
        name: Docker Setup QEMU
        uses: docker/setup-qemu-action@v1.2.0
      - 
        name: Docker Setup Buildx
        uses: docker/setup-buildx-action@v1.6.0
      - 
        name: Docker Login
        uses: docker/login-action@v1.10.0
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - 
        name: Build and push Docker images
        uses: docker/build-push-action@v2.7.0
        with:
          context: .
          platforms: linux/arm64,linux/amd64
          file: Dockerfiles/Dockerfile.8
          push: true
          tags: |
            xrsec/java:8
          cache-from: type=gha
          cache-to: type=gha,mode=max

  Build_For_Java11:
    name: Docker Oracle Java Build Java11
    runs-on: ubuntu-latest
    steps:
      - 
        name: Private Actions Checkout
        uses: actions/checkout@v2.3.4
      - 
        name: Docker Setup QEMU
        uses: docker/setup-qemu-action@v1.2.0
      - 
        name: Docker Setup Buildx
        uses: docker/setup-buildx-action@v1.6.0
      - 
        name: Docker Login
        uses: docker/login-action@v1.10.0
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - 
        name: Build and push Docker images
        uses: docker/build-push-action@v2.7.0
        with:
          context: .
          platforms: linux/arm64,linux/amd64
          file: Dockerfiles/Dockerfile.11
          push: true
          tags: |
            xrsec/java:11
          cache-from: type=gha
          cache-to: type=gha,mode=max

  Build_For_Java16:
    name: Docker Oracle Java Build Java16
    runs-on: ubuntu-latest
    steps:
      - 
        name: Private Actions Checkout
        uses: actions/checkout@v2.3.4
      - 
        name: Docker Setup QEMU
        uses: docker/setup-qemu-action@v1.2.0
      - 
        name: Docker Setup Buildx
        uses: docker/setup-buildx-action@v1.6.0
      - 
        name: Docker Login
        uses: docker/login-action@v1.10.0
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - 
        name: Build and push Docker images
        uses: docker/build-push-action@v2.7.0
        with:
          context: .
          platforms: linux/arm64,linux/amd64
          file: Dockerfiles/Dockerfile.16
          push: true
          tags: |
            xrsec/java:16
          cache-from: type=gha
          cache-to: type=gha,mode=max

  Build_For_Java17:
    name: Docker Oracle Java Build Java17
    runs-on: ubuntu-latest
    steps:
      - 
        name: Private Actions Checkout
        uses: actions/checkout@v2.3.4
      - 
        name: Docker Setup QEMU
        uses: docker/setup-qemu-action@v1.2.0
      - 
        name: Docker Setup Buildx
        uses: docker/setup-buildx-action@v1.6.0
      - 
        name: Docker Login
        uses: docker/login-action@v1.10.0
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - 
        name: Build and push Docker images
        uses: docker/build-push-action@v2.7.0
        with:
          context: .
          platforms: linux/arm64,linux/amd64
          file: Dockerfiles/Dockerfile.17
          push: true
          tags: |
            xrsec/java:17
            xrsec/java:latest
          cache-from: type=gha
          cache-to: type=gha,mode=max

Run action on event in another repository

代码语言:javascript
代码运行次数:0
运行
复制
jobs:
  build:
    # Main workflow job that builds, tests, etc.

  dispatch:
    needs: build
    strategy:
      matrix:
        repo: ['my-org/repo1', 'my-org/repo2', 'my-org/repo3']
    runs-on: ubuntu-latest
    steps:
      - name: Repository Dispatch
        uses: peter-evans/repository-dispatch@v1
        with:
          token: ${{ secrets.REPO_ACCESS_TOKEN }}
          repository: ${{ matrix.repo }}
          event-type: my-event
代码语言:javascript
代码运行次数:0
运行
复制
name: Repository Dispatch
on:
  repository_dispatch:
    types: [my-event]
jobs:
  myEvent:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          ref: ${{ github.event.client_payload.ref }}
      - run: echo ${{ github.event.client_payload.sha }}

Manifest

代码语言:javascript
代码运行次数:0
运行
复制
docker manifest create xrsec/java:latest xrsec/java:arm64-17 xrsec/java:amd64-17
docker manifest create xrsec/java:8 xrsec/java:arm64-8 xrsec/java:amd64-8 
docker manifest create xrsec/java:11 xrsec/java:arm64-11 xrsec/java:amd64-11 
docker manifest create xrsec/java:16 xrsec/java:arm64-16 xrsec/java:amd64-16 
docker manifest create xrsec/java:17 xrsec/java:arm64-17 xrsec/java:amd64-17
docker manifest push xrsec/java:latest
docker manifest push xrsec/java:8 
docker manifest push xrsec/java:11
docker manifest push xrsec/java:16
docker manifest push xrsec/java:17

Docker buildx env

Dockerfile 支持如下架构相关的变量

TARGETPLATFORM

构建镜像的目标平台,例如 linux/amd64, linux/arm/v7, windows/amd64

TARGETOS

代码语言:javascript
代码运行次数:0
运行
复制
TARGETPLATFORM` 的 OS 类型,例如 `linux`, `windows`

TARGETARCH

代码语言:javascript
代码运行次数:0
运行
复制
TARGETPLATFORM` 的架构类型,例如 `amd64`, `arm`

TARGETVARIANT

代码语言:javascript
代码运行次数:0
运行
复制
TARGETPLATFORM` 的变种,该变量可能为空,例如 `v7`

BUILDPLATFORM

构建镜像主机平台,例如 linux/amd64

BUILDOS

代码语言:javascript
代码运行次数:0
运行
复制
BUILDPLATFORM` 的 OS 类型,例如 `linux`

BUILDARCH

代码语言:javascript
代码运行次数:0
运行
复制
BUILDPLATFORM` 的架构类型,例如 `amd64`

BUILDVARIANT

代码语言:javascript
代码运行次数:0
运行
复制
BUILDPLATFORM` 的变种,该变量可能为空,例如 `v7`

Use

例如我们要构建支持 linux/arm/v7linux/amd64 两种架构的镜像。假设已经生成了两个平台对应的二进制文件:

  • bin/dist-linux-arm
  • bin/dist-linux-amd64

那么 Dockerfile 可以这样书写:

代码语言:javascript
代码运行次数:0
运行
复制
FROM scratch
# 使用变量必须申明
ARG TARGETOS

ARG TARGETARCH

COPY bin/dist-${TARGETOS}-${TARGETARCH} /dist

ENTRYPOINT ["dist"]

XRSec has the right to modify and interpret this article. If you want to reprint or disseminate this article, you must ensure the integrity of this article, including all contents such as copyright notice. Without the permission of the author, the content of this article shall not be modified or increased or decreased arbitrarily, and it shall not be used for commercial purposes in any way

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-10-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Lite version
    • Canvas_Docker_Build.yml
  • Auto-update version
    • version_checking.py
    • Dockerfile
  • Multi-system Deployment
    • Docker-CobaltStrike.yml
  • Manual
    • Docker_Oracle_Java_Build.yml
  • Run action on event in another repository
    • Manifest
  • Docker buildx env
    • Use
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档