|
@ -4,13 +4,13 @@ GitHub Actions是GitHub的一个持续集成和持续交付(CI/CD)的平台 |
|
|
|
|
|
|
|
|
#### Workflow(工作流) |
|
|
#### Workflow(工作流) |
|
|
|
|
|
|
|
|
Workflow其实就是一个可配置的自动化过程,会运行一个或多个Job。Workflow定义在存储库的 .github/workflows文件夹的一个YML或者YAML文件中,并在存储库的Event触发时运行,也可以配置成手动触发运行,或者定时触发。一个Workflow中甚至可以引用另一个Workflow。 |
|
|
|
|
|
|
|
|
Workflow其实就是一个可配置的自动化过程,会运行一个或多个Job。Workflow定义在仓库的 .github/workflows文件夹的一个YML或者YAML文件中,并在仓库的Event触发时运行,也可以配置成手动触发运行,或者定时触发。一个Workflow中甚至可以引用另一个Workflow。 |
|
|
|
|
|
|
|
|
可以简单理解,一个YML配置文件就是一个Workflow,存储库可以在.github/workflows文件夹下拥有多个YML文件,即拥有多Workflows。每个Workflow可以执行一组不同的步骤。例如,一个存储库中有两个Workflows,就可以有一个Workflow用来构建和测试PR(Pull Request),另一个Workflow用来每次发布Release版本时自动部署应用。 |
|
|
|
|
|
|
|
|
可以简单理解,一个YML配置文件就是一个Workflow,仓库可以在.github/workflows文件夹下拥有多个YML文件,即拥有多Workflows。每个Workflow可以执行一组不同的步骤。例如,一个仓库中有两个Workflows,就可以有一个Workflow用来构建和测试PR(Pull Request),另一个Workflow用来每次发布Release版本时自动部署应用。 |
|
|
|
|
|
|
|
|
#### Event(事件) |
|
|
#### Event(事件) |
|
|
|
|
|
|
|
|
Event是存储库中的一个用来触发Workflow运行的特殊活动,有不同类型,如某人创建了一个PR、新建了一个Issue等,这些都是可以用来触发Workflow运行的Event。 |
|
|
|
|
|
|
|
|
Event是仓库中的一个用来触发Workflow运行的特殊活动,有不同类型,如某人创建了一个PR、新建了一个Issue等,这些都是可以用来触发Workflow运行的Event。 |
|
|
|
|
|
|
|
|
#### Job(工作) |
|
|
#### Job(工作) |
|
|
|
|
|
|
|
@ -18,7 +18,7 @@ Job是Workflow中的一组步骤,在同一个Runner(运行者)上运行。 |
|
|
|
|
|
|
|
|
#### Action |
|
|
#### Action |
|
|
|
|
|
|
|
|
Action是GitHub Actions平台的自定义应用程序,用于执行复杂但经常重复的任务。Action可以减少在Workflow的YML文件中编写的重复代码。Action可以从GitHub上拉取存储库代码,为构建环境设置正确的工具链。我们可以编写自己的Action,也可以在GitHub Marketplace中寻找适合使用的Action。 |
|
|
|
|
|
|
|
|
Action是GitHub Actions平台的自定义应用程序,用于执行复杂但经常重复的任务。Action可以减少在Workflow的YML文件中编写的重复代码。Action可以从GitHub上拉取仓库代码,为构建环境设置正确的工具链。我们可以编写自己的Action,也可以在GitHub Marketplace中寻找适合使用的Action。 |
|
|
|
|
|
|
|
|
#### Runner(运行者) |
|
|
#### Runner(运行者) |
|
|
|
|
|
|
|
@ -54,7 +54,7 @@ Runner是在Workflow被触发时运行它们的服务器。每个Runner一次可 |
|
|
|
|
|
|
|
|
#### 1.复制项目代码 |
|
|
#### 1.复制项目代码 |
|
|
|
|
|
|
|
|
将 https://github.com/OpenEduTech/DaseDevOps/tree/master 复制到自己的账户下后,会生成DaseDevops仓库。注意:下面所有图中显示的devops_demp仓库其实对应的是DaseDevops仓库下的dasedevops_spring_demo项目。 |
|
|
|
|
|
|
|
|
将 https://github.com/OpenEduTech/DaseDevOps/tree/master 复制到自己的账户下后,会生成DaseDevops仓库。注意:下面所有图中显示的devops_demo仓库其实对应的是DaseDevops仓库下的dasedevops_spring_demo项目。 |
|
|
|
|
|
|
|
|
![image-20231111152635356](./images/openedu_repo.png) |
|
|
![image-20231111152635356](./images/openedu_repo.png) |
|
|
|
|
|
|
|
@ -89,7 +89,9 @@ ssh-keygen -t rsa -C "102155014xx@stu.ecnu.edu.cn" |
|
|
|
|
|
|
|
|
首先,创建一个 centOS 云主机,1 核 2G 配置,20M 带宽流量计费,数据盘设置为 50 G |
|
|
首先,创建一个 centOS 云主机,1 核 2G 配置,20M 带宽流量计费,数据盘设置为 50 G |
|
|
|
|
|
|
|
|
安装Docker,安装docker-compose。 |
|
|
|
|
|
|
|
|
安装Docker(参照https://gitea.shuishan.net.cn/xslu_dase_ecnu_edu_cn/cloud-computing-course/src/branch/master/Assignment2.md), |
|
|
|
|
|
|
|
|
|
|
|
安装docker-compose。 |
|
|
|
|
|
|
|
|
##### docker-compose 安装过程: |
|
|
##### docker-compose 安装过程: |
|
|
|
|
|
|
|
@ -156,7 +158,7 @@ vi /etc/profile |
|
|
在文件末尾添加 |
|
|
在文件末尾添加 |
|
|
|
|
|
|
|
|
``` |
|
|
``` |
|
|
export JAVA_HOME=/usr/java/jdk-1.8.0_391 |
|
|
|
|
|
|
|
|
export JAVA_HOME=/usr/java/jdk1.8.0_391 |
|
|
export PATH=$JAVA_HOME/bin:$PATH |
|
|
export PATH=$JAVA_HOME/bin:$PATH |
|
|
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib |
|
|
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib |
|
|
``` |
|
|
``` |
|
@ -185,7 +187,7 @@ source /etc/profile |
|
|
tar -xvf apache-maven-3.9.5-bin.tar.gz |
|
|
tar -xvf apache-maven-3.9.5-bin.tar.gz |
|
|
``` |
|
|
``` |
|
|
|
|
|
|
|
|
执行 `vim /etc/profile` 配置环境变量 |
|
|
|
|
|
|
|
|
执行 `vi /etc/profile` 配置环境变量 |
|
|
|
|
|
|
|
|
``` |
|
|
``` |
|
|
MAVEN_HOME=/usr/local/apache-maven-3.9.5 |
|
|
MAVEN_HOME=/usr/local/apache-maven-3.9.5 |
|
@ -259,7 +261,7 @@ sudo vi conf/settings.xml |
|
|
|
|
|
|
|
|
![image-20231112155904281](./images/personal_page.png) |
|
|
![image-20231112155904281](./images/personal_page.png) |
|
|
|
|
|
|
|
|
需要把 默认仓库类型 设置为公开。 |
|
|
|
|
|
|
|
|
### **需要把 默认仓库类型 设置为公开。** |
|
|
|
|
|
|
|
|
## `作业 1: 创建完成以后,进入个人实例-命名空间页面,截图插入实验报告。` |
|
|
## `作业 1: 创建完成以后,进入个人实例-命名空间页面,截图插入实验报告。` |
|
|
|
|
|
|
|
@ -296,6 +298,7 @@ jobs: |
|
|
run: | |
|
|
run: | |
|
|
whoami |
|
|
whoami |
|
|
pwd |
|
|
pwd |
|
|
|
|
|
cd dasedevops_spring_demo |
|
|
mvn -B package --file pom.xml |
|
|
mvn -B package --file pom.xml |
|
|
pwd |
|
|
pwd |
|
|
- name: Login to Aliyun Container Registry (ACR) |
|
|
- name: Login to Aliyun Container Registry (ACR) |
|
@ -323,7 +326,7 @@ jobs: |
|
|
- name: Copy single file to remote |
|
|
- name: Copy single file to remote |
|
|
uses: garygrossgarten/github-action-scp@release |
|
|
uses: garygrossgarten/github-action-scp@release |
|
|
with: |
|
|
with: |
|
|
local: ./docker-compose.yml |
|
|
|
|
|
|
|
|
local: ./dasedevops_spring_demo/docker-compose.yml |
|
|
remote: scp/devops_demo/docker-compose.yml |
|
|
remote: scp/devops_demo/docker-compose.yml |
|
|
host: ${{ secrets.HOST }} |
|
|
host: ${{ secrets.HOST }} |
|
|
username: ${{ secrets.USER_NAME }} |
|
|
username: ${{ secrets.USER_NAME }} |
|
@ -401,9 +404,10 @@ env: |
|
|
编辑 DockerFile 也是为了分别将这六个 module 打包成镜像,上传到镜像仓库中。这么看,这个 yml 文件是不是也不那么复杂?🐶 |
|
|
编辑 DockerFile 也是为了分别将这六个 module 打包成镜像,上传到镜像仓库中。这么看,这个 yml 文件是不是也不那么复杂?🐶 |
|
|
|
|
|
|
|
|
gateway微服务的Dockerfile文件内容如下: |
|
|
gateway微服务的Dockerfile文件内容如下: |
|
|
|
|
|
**在六个文件夹下分别创建名为dockerfile的文件** |
|
|
|
|
|
|
|
|
```dockerfile |
|
|
```dockerfile |
|
|
FROM java:8 |
|
|
|
|
|
|
|
|
FROM openjdk:8 |
|
|
MAINTAINER ningzhicheng |
|
|
MAINTAINER ningzhicheng |
|
|
VOLUME /tmp |
|
|
VOLUME /tmp |
|
|
ADD ./target/*.jar /gateway.jar |
|
|
ADD ./target/*.jar /gateway.jar |
|
@ -414,7 +418,7 @@ EXPOSE 8080 |
|
|
hello微服务的Dockerfile文件内容如下: |
|
|
hello微服务的Dockerfile文件内容如下: |
|
|
|
|
|
|
|
|
```dockerfile |
|
|
```dockerfile |
|
|
FROM java:8 |
|
|
|
|
|
|
|
|
FROM openjdk:8 |
|
|
MAINTAINER ningzhicheng |
|
|
MAINTAINER ningzhicheng |
|
|
VOLUME /tmp |
|
|
VOLUME /tmp |
|
|
ADD ./target/*.jar /hello.jar |
|
|
ADD ./target/*.jar /hello.jar |
|
@ -425,7 +429,7 @@ EXPOSE 8001 |
|
|
login微服务的Dockerfile文件内容如下: |
|
|
login微服务的Dockerfile文件内容如下: |
|
|
|
|
|
|
|
|
```dockerfile |
|
|
```dockerfile |
|
|
FROM java:8 |
|
|
|
|
|
|
|
|
FROM openjdk:8 |
|
|
MAINTAINER ningzhicheng |
|
|
MAINTAINER ningzhicheng |
|
|
VOLUME /tmp |
|
|
VOLUME /tmp |
|
|
ADD ./target/*.jar /login.jar |
|
|
ADD ./target/*.jar /login.jar |
|
@ -436,7 +440,7 @@ EXPOSE 8000 |
|
|
provider_one微服务的Dockerfile文件内容如下: |
|
|
provider_one微服务的Dockerfile文件内容如下: |
|
|
|
|
|
|
|
|
```dockerfile |
|
|
```dockerfile |
|
|
FROM java:8 |
|
|
|
|
|
|
|
|
FROM openjdk:8 |
|
|
MAINTAINER ningzhicheng |
|
|
MAINTAINER ningzhicheng |
|
|
VOLUME /tmp |
|
|
VOLUME /tmp |
|
|
ADD ./target/*.jar /provider_one.jar |
|
|
ADD ./target/*.jar /provider_one.jar |
|
@ -447,7 +451,7 @@ EXPOSE 8666 |
|
|
provider_two微服务的Dockerfile文件内容如下: |
|
|
provider_two微服务的Dockerfile文件内容如下: |
|
|
|
|
|
|
|
|
```dockerfile |
|
|
```dockerfile |
|
|
FROM java:8 |
|
|
|
|
|
|
|
|
FROM openjdk:8 |
|
|
MAINTAINER ningzhicheng |
|
|
MAINTAINER ningzhicheng |
|
|
VOLUME /tmp |
|
|
VOLUME /tmp |
|
|
ADD ./target/*.jar /provider_two.jar |
|
|
ADD ./target/*.jar /provider_two.jar |
|
@ -458,7 +462,7 @@ EXPOSE 8667 |
|
|
provider_three微服务的Dockerfile文件内容如下: |
|
|
provider_three微服务的Dockerfile文件内容如下: |
|
|
|
|
|
|
|
|
```dockerfile |
|
|
```dockerfile |
|
|
FROM java:8 |
|
|
|
|
|
|
|
|
FROM openjdk:8 |
|
|
MAINTAINER ningzhicheng |
|
|
MAINTAINER ningzhicheng |
|
|
VOLUME /tmp |
|
|
VOLUME /tmp |
|
|
ADD ./target/*.jar /provider_three.jar |
|
|
ADD ./target/*.jar /provider_three.jar |
|
@ -505,6 +509,9 @@ services: |
|
|
- "8668:8668" |
|
|
- "8668:8668" |
|
|
``` |
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
文件目录如下: |
|
|
|
|
|
![image](./images/schema.png) |
|
|
|
|
|
|
|
|
随后将所有文件提交到暂存区,创建提交信息,推送提交。 |
|
|
随后将所有文件提交到暂存区,创建提交信息,推送提交。 |
|
|
|
|
|
|
|
|
``` |
|
|
``` |
|
|