转载教程:https://sleele.com/2020/01/10/%e4%bd%bf%e7%94%a8github-action%e6%9e%84%e5%bb%ba%e5%85%a8%e5%b9%b3%e5%8f%b0docker%e9%95%9c%e5%83%8f/ 1、在仓库中开启GitHub Action功能 2、点击actions 新建一个workflow 把下面这段代码复制进这个yml,并重命名为Manual Build Docker Image # 第一种写法: ```php name: Manual Build Docker Image on: push: paths: - "ReleaseTag" workflow_dispatch: jobs: buildx: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 # Docker Image 构建环境 - name: Set up QEMU uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 - name: Login to DockerHub uses: docker/login-action@v1 with: username: $secrets.DOCKER_USERNAME }} password (${{ secrets.DOCKER_PASSWORD) # 获得仓库中的ReleaseTag - name: Set Version id: set-version run: | echo "::set-output name=version::$(cat ReleaseTag | head -n1)" echo "ReleaseTag=$(cat ReleaseTag | head -n1)" echo "::set-output name=status::success" # Build and push - name: Build and push if: steps.set-version.outputs.status == 'success' uses: docker/build-push-action@v2 with: file: ./Dockerfile platforms: linux/amd64,linux/arm/v7,linux/arm64 push: true tags: | q123458384/bark-server:$steps.set-version.outputs.version }} q123458384/bark-server (latest ``` # 第二种写法(简单): https://github.com/ilteoood/docker_buildx ```php name: Build Amd64 Image on: release: types: [published] jobs: build: runs-on: ubuntu-latest name: Build image job steps: - name: Checkout master uses: actions/checkout@master - name: Build and publish image uses: ilteoood/docker_buildx@master with: publish: true imageName: q123458384/bark-server platform: linux/amd64,linux/arm64,linux/arm/v7 # 你准备构建的镜像平台 tag: latest,1.1 # 默认latest,可以针对平台,修改tag dockerHubUser: ${{ secrets.DOCKER_USERNAME) # docker hub userid dockerHubPassword: $secrets.DOCKER_PASSWORD }} # docker hub password ``` # 第三种写法 https (//github.com/crazy-max/ghaction-docker-buildx ```php name: Build Image on: push: branches: - 'master' paths-ignore: - "README.md" jobs: buildx: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v1 - name: Dockerhub login env: DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD) DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} run: | echo "${DOCKER_PASSWORD}" | docker login --username ${DOCKER_USERNAME} --password-stdin - name: Set up Docker Buildx id: buildx uses: crazy-max/ghaction-docker-buildx@v1 with: buildx-version: latest - name: Build dockerfile (with push) env: DOCKER_USERNAME: $secrets.DOCKER_USERNAME }} run (| docker buildx build \ --platform=linux/amd64,linux/arm/v7,linux/arm64 \ --output "type=image,push=true" \ --file ./Dockerfile . \ --tag q123458384/qiandao:latest ``` 3、创建的release 不要带v 点击release 新建一个 action 就会自动开始。 ========================================== 部分名词解释:on,条件判断,判断是何种情况开始执行流程,常用的有push,release,我推荐release name:这个job的名字,我这个job是构建镜像并推送 uses:这个是yml编写者的名字和流程名,我这里选用的是elgohr/Publish-Docker-Github-Action@master,简单易用,文档也写的非常翔实 后面with这个,name就不说了,你的dockerhub id和你的docker镜像名,我相信都能看懂 cache:加快构建速度,如果镜像不复杂不需要编译的话可以不用 tag_names:依据分支名称推送,master分支默认latest,其他分支按照分支名称命名并推送 着重说一下最后两个参数 username:dockerhub id password:dockerhub password 需要在GitHub这个项目的所在仓库创建secrets 开始构建 如果你的仓库已经准备好开始构建镜像了,就点击release,之后会自动构建并推送到docker hub上 原本在dockerhub需要90分钟才能构建完成的镜像,在GitHub Action中只需要30分钟 第4方案: ```json name: 构建JD Scripts镜像 on: #防止fork乱用action设置只能手动触发构建 workflow_dispatch: jobs: build-and-push: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@master - name: Set up QEMU uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 - name: Login to DockerHub uses: docker/login-action@v1 with: username: ${{ secrets.DOCKERHUB_USERNAME) password: ${{ secrets.DOCKERHUB_TOKEN }} - name: 构建并推送到Dockerhub镜像仓库 uses: docker/build-push-action@v2 with: context: . file: ./docker/Dockerfile platforms: linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64 push: true tags: | lxk0301/jd_scripts:latest ``` WMI Scripting HTML 当前访问者IP地址及地址归属: Last modification:January 28th, 2021 at 04:47 pm © 允许规范转载 Support 如果觉得我的文章对你有用,请随意赞赏 ×Close Appreciate the author Sweeping payments