190 lines
4.6 KiB
Markdown
190 lines
4.6 KiB
Markdown
> 本文作者:丁辉
|
||
|
||
# GithubAction学习
|
||
|
||
## 触发Action构建
|
||
|
||
```bash
|
||
curl -X POST https://api.github.com/repos/$用户/$仓库名/dispatches -H "Accept: application/vnd.github.everest-preview+json" -H "Authorization: token $YOUR_API_TOKEN" --data '{"event_type": "StartAction"}'
|
||
```
|
||
|
||
## GITHUB设置Secrets
|
||
|
||
网址为:`仓库地址/settings/secrets/actions`
|
||
|
||
## 构建示例
|
||
|
||
### 构建触发
|
||
|
||
```yaml
|
||
#定时任务触发构建
|
||
on:
|
||
schedule:
|
||
- cron: "0 0 * * *"
|
||
|
||
#通过接口触发构建
|
||
on:
|
||
repository_dispatch:
|
||
types:
|
||
- StartAction
|
||
|
||
#通过 push 代码触发构建
|
||
on:
|
||
push:
|
||
branches:
|
||
- master
|
||
|
||
# 当 push 到 master 分支,或者创建以 v 开头的 tag 时触发
|
||
on:
|
||
push:
|
||
branches:
|
||
- master
|
||
tags:
|
||
- v*
|
||
```
|
||
|
||
### 本地执行命令类
|
||
|
||
```yaml
|
||
name: Build
|
||
|
||
#本地执行命令类
|
||
jobs:
|
||
run-docker-command:
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
- name: Checkout
|
||
uses: actions/checkout@v3
|
||
- name: Run Docker Command
|
||
run: |
|
||
docker run --name mysql \
|
||
-e MYSQL_ROOT_PASSWORD=${{ secrets.PASSWORD }} \
|
||
${{ secrets.IMAGES }}
|
||
```
|
||
|
||
### 构建Docker镜像
|
||
|
||
```yaml
|
||
name: Build-Images
|
||
|
||
# Docker构建镜像并 push 到仓库内
|
||
jobs:
|
||
Build-Images-One:
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
-
|
||
name: Checkout
|
||
uses: actions/checkout@v3
|
||
-
|
||
name: Login to Docker Hub
|
||
uses: docker/login-action@v2
|
||
with:
|
||
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
||
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
|
||
-
|
||
name: Set up Docker Buildx
|
||
uses: docker/setup-buildx-action@v2
|
||
-
|
||
name: Build and push image
|
||
uses: docker/build-push-action@v3
|
||
with:
|
||
context: ./
|
||
file: ./Dockerfile
|
||
push: true
|
||
tags: ${{ secrets.DOCKER_HUB_USERNAME }}/${{ secrets.DOCKER_HUB_STASH }}:${{ secrets.TAG }}
|
||
|
||
Build--Images-Two:
|
||
needs: Build-Images-One #等待 One 构建成功后开始执行
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
-
|
||
name: Check Out
|
||
uses: actions/checkout@v3
|
||
-
|
||
name: Login to Docker Hub
|
||
uses: docker/login-action@v2
|
||
with:
|
||
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
||
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
|
||
-
|
||
name: Set up Docker Buildx
|
||
uses: docker/setup-buildx-action@v2
|
||
|
||
- name: Build and push
|
||
id: docker_build
|
||
uses: docker/build-push-action@v3
|
||
with:
|
||
context: ./demo/
|
||
file: ./demo/Dockerfile
|
||
push: true
|
||
tags: ${{ secrets.DOCKER_HUB_USERNAME }}/${{ secrets.DOCKER_HUB_STASH }}:${{ secrets.TAG }}
|
||
```
|
||
|
||
### 构建多架构镜像
|
||
|
||
[官方Demo](https://docs.docker.com/build/ci/github-actions/multi-platform/)
|
||
|
||
```yaml
|
||
name: ci
|
||
|
||
on:
|
||
push:
|
||
branches:
|
||
- "main"
|
||
|
||
jobs:
|
||
docker:
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
-
|
||
name: Login to Docker Hub
|
||
uses: docker/login-action@v2
|
||
with:
|
||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||
-
|
||
name: Checkout
|
||
uses: actions/checkout@v3
|
||
-
|
||
name: Set up QEMU
|
||
uses: docker/setup-qemu-action@v2
|
||
-
|
||
name: Set up Docker Buildx
|
||
uses: docker/setup-buildx-action@v2
|
||
-
|
||
name: Build and push
|
||
uses: docker/build-push-action@v4
|
||
with:
|
||
context: .
|
||
platforms: linux/amd64,linux/arm64
|
||
#支持列表:https://github.com/docker-library/official-images#architectures-other-than-amd64
|
||
#platforms: |
|
||
#linux/arm64
|
||
#linux/amd64
|
||
#linux/arm/v5
|
||
#linux/arm/v7
|
||
#linux/386 #适用于 x86 32 位架构的 Docker 镜像
|
||
#linux/mips64le #适用于 MIPS 64 位架构的 Docker 镜像
|
||
#linux/ppc64le #适用于 IBM Power 架构的 Docker 镜像
|
||
#linux/s390x #适用于 IBM Z 架构的 Docker 镜像
|
||
push: true
|
||
tags: ${{ secrets.DOCKERHUB_USERNAME }}/demo:latest
|
||
```
|
||
|
||
### Dependabot实现更新项目中的依赖项
|
||
|
||
当你在项目中使用很多第三方库(例如JavaScript项目中的npm包)时,这些库会不断更新,有时是为了添加新功能,有时是为了修复安全漏洞。手动跟踪和更新这些库可能既费时又容易出错。这就是Dependabot发挥作用的地方。
|
||
|
||
[官方文档](https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuring-dependabot-version-updates)
|
||
|
||
```yaml
|
||
version: 2
|
||
updates:
|
||
- package-ecosystem: npm
|
||
directory: "/"
|
||
schedule:
|
||
interval: daily
|
||
open-pull-requests-limit: 20
|
||
```
|
||
|