七仔的博客

七仔的博客GithubPages分博

0%

用Github Actions做CICI流程分享

之前用Github做了CICD,流程和代码放在一块,方便管理,可以构建、打包、推送镜像到Dockerhub、连接服务器做部署,这两天在阿里云仓库做了镜像,然后用Github Actions推送到阿里云仓库

用Github Actions做CICI流程分享

1. 前言

之前用Github做了CICD,流程和代码放在一块,方便管理,可以构建、打包、推送镜像到Dockerhub、连接服务器做部署,这两天在阿里云仓库做了镜像,然后用Github Actions推送到阿里云仓库

阿里云仓库: https://cr.console.aliyun.com/cn-hangzhou/instance/repositories

2. 位置

image.png

3. Java 流程

其中的$可以在github项目->【Settings】->【Security】->【Secrets and variables】->【Actions】处设置,就是个密钥

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
name: Java CI with Gradle

# 选择分支
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

jobs:
build:

runs-on: ubuntu-latest

steps:

# 把仓库代码拉到 ubuntu 镜像上
- uses: actions/checkout@v2

# 指定 java 版本
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8

# 给 gradle 赋予可运行权限
- name: Grant execute permission for gradlew
run: chmod +x gradlew

# 通过 gradle 打包我们的项目
- name: Build with gradle
run: ./gradlew build

# 通过 Dockerfile 构建镜像
- name: Build Docker Image
run: docker build . --file Dockerfile --tag ${{ secrets.IMAGE_NAME }}:$(date +%s)

# 推送镜像到 Docker Hub
- name: Publish to Docker Repository
uses: elgohr/Publish-Docker-Github-Action@master
with:
name: ${{ secrets.IMAGE_NAME }}:latest
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

# 推送镜像到阿里云仓库
- name: Publish to Aliyun Docker Repository
run: |
docker login --username=${{ secrets.ALIYUN_DOCKER_USERNAME }} --password=${{ secrets.ALIYUN_DOCKER_PASSWORD }} registry.cn-hangzhou.aliyuncs.com
docker build -t ${{ secrets.IMAGE_NAME }} .
docker tag ${{ secrets.IMAGE_NAME }} ${{ secrets.ALIYUN_IMAGE_URL }}:latest
docker push ${{ secrets.ALIYUN_IMAGE_URL }}:latest

# 连接到服务器部署
pull-docker:
needs: [build]
name: Pull Docker
runs-on: ubuntu-latest
steps:
- name: Deploy
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
password: ${{ secrets.SERVER_PWD }}
port: ${{ secrets.SERVER_PORT }}
script: |
docker pull ${{ secrets.ALIYUN_IMAGE_URL }}
docker-compose up -d --build

4. Javascript流程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
name: Node.js CI

# 选择分支
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]

jobs:
build:

runs-on: ubuntu-latest

strategy:
matrix:
node-version: [12.x]
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- run: npm ci
- run: npm run build --if-present
- run: npm test
- run: ls

# 通过 Dockerfile 构建镜像
- name: Build Docker Image
run: docker build . --file Dockerfile --tag ${{ secrets.IMAGE_NAME }}:$(date +%s)

# 推送镜像到 Docker Hub
- name: Publish to Docker Repository
uses: elgohr/Publish-Docker-Github-Action@master
with:
name: ${{ secrets.IMAGE_NAME }}:latest
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

# 推送镜像到阿里云仓库
- name: Publish to Aliyun Docker Repository
run: |
docker login --username=${{ secrets.ALIYUN_DOCKER_USERNAME }} --password=${{ secrets.ALIYUN_DOCKER_PASSWORD }} registry.cn-hangzhou.aliyuncs.com
docker build -t ${{ secrets.IMAGE_NAME }} .
docker tag ${{ secrets.IMAGE_NAME }} ${{ secrets.ALIYUN_IMAGE_URL }}:latest
docker push ${{ secrets.ALIYUN_IMAGE_URL }}:latest

# 连接到服务器部署
pull-docker:
needs: [build]
name: Pull Docker
runs-on: ubuntu-latest
steps:
- name: Deploy
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
password: ${{ secrets.SERVER_PWD }}
port: ${{ secrets.SERVER_PORT }}
script: |
docker pull ${{ secrets.ALIYUN_IMAGE_URL }}
docker-compose up -d --build

此为博主副博客,留言请去主博客,转载请注明出处:https://www.baby7blog.com/myBlog/130.html

欢迎关注我的其它发布渠道