CI/CD工具下载-GitHub Actions持续集成下载地址-GitHub Actions持续集成下载方法
1. GitHub Actions简介与版本说明
GitHub Actions是GitHub提供的持续集成和持续部署(CI/CD)平台,与GitHub代码仓库深度集成。GitHub Actions支持自动化构建、测试和部署流程,提供丰富的Actions市场和自托管Runner支持。更多学习教程www.fgedu.net.cn
最新版本信息:
GitHub Actions Runner 2.317.x – 最新稳定版
GitHub Actions Runner 2.316.x – 长期支持版
GitHub Actions Runner 2.315.x – 维护版
GitHub Actions Runner 2.314.x – 旧版支持
2. GitHub Self-hosted Runner下载方式
GitHub Self-hosted Runner提供多种下载方式,包括GitHub仓库设置页面下载和命令行下载。学习交流加群风哥微信: itpux-com
方式一:从GitHub仓库设置页面下载
# Settings -> Actions -> Runners -> New self-hosted runner
# 选择操作系统和架构
# Linux x64: https://github.com/actions/runner/releases/download/v2.317.0/actions-runner-linux-x64-2.317.0.tar.gz
# Linux ARM64: https://github.com/actions/runner/releases/download/v2.317.0/actions-runner-linux-arm64-2.317.0.tar.gz
# Windows x64: https://github.com/actions/runner/releases/download/v2.317.0/actions-runner-win-x64-2.317.0.zip
# macOS x64: https://github.com/actions/runner/releases/download/v2.317.0/actions-runner-osx-x64-2.317.0.tar.gz
# 页面会显示下载命令和配置命令
# Create a folder
$ mkdir actions-runner && cd actions-runner
# Download the latest runner package
$ curl -o actions-runner-linux-x64-2.317.0.tar.gz -L https://github.com/actions/runner/releases/download/v2.317.0/actions-runner-linux-x64-2.317.0.tar.gz
# Optional: Validate the hash
$ echo “abc123def456789012345678901234567890123456789012345678901234 actions-runner-linux-x64-2.317.0.tar.gz” | shasum -a 256 -c
输出示例如下:
actions-runner-linux-x64-2.317.0.tar.gz: OK
# Extract the installer
$ tar xzf ./actions-runner-linux-x64-2.317.0.tar.gz
# 查看解压内容
$ ls -la
输出示例如下:
total 200000
drwxr-xr-x 3 root root 4096 Mar 15 10:00 .
drwxr-xr-x 3 root root 4096 Mar 15 10:00 ..
-rwxr-xr-x 1 root root 12345 Mar 15 10:00 config.sh
-rwxr-xr-x 1 root root 12345 Mar 15 10:00 run.sh
-rw-r–r– 1 root root 12345678 Mar 15 10:00 actions-runner-linux-x64-2.317.0.tar.gz
drwxr-xr-x 2 root root 4096 Mar 15 10:00 bin
drwxr-xr-x 2 root root 4096 Mar 15 10:00 externals
-rw-r–r– 1 root root 1234 Mar 15 10:00 run.sh
方式二:命令行下载
$ mkdir -p /data/actions-runner
$ cd /data/actions-runner
# 下载最新版本Runner
$ curl -o actions-runner.tar.gz -L https://github.com/actions/runner/releases/latest/download/actions-runner-linux-x64-2.317.0.tar.gz
# 下载特定版本
$ curl -o actions-runner.tar.gz -L https://github.com/actions/runner/releases/download/v2.317.0/actions-runner-linux-x64-2.317.0.tar.gz
# 验证下载
$ ls -lh actions-runner.tar.gz
输出示例如下:
-rw-r–r– 1 root root 150M Mar 15 10:00 actions-runner.tar.gz
# 解压安装包
$ tar xzf actions-runner.tar.gz
# 查看版本信息
$ ./config.sh –version
输出示例如下:
2.317.0
方式三:Docker镜像下载
$ docker pull ghcr.io/actions/actions-runner:latest
输出示例如下:
latest: Pulling from actions/actions-runner
abc123d: Pull complete
def456g: Pull complete
…
Digest: sha256:abc123def456789012345678901234567890123456789012345678901234
Status: Downloaded newer image for ghcr.io/actions/actions-runner:latest
docker.io/ghcr.io/actions/actions-runner:latest
# 拉取特定版本
$ docker pull ghcr.io/actions/actions-runner:2.317.0
# 查看本地镜像
$ docker images | grep actions-runner
输出示例如下:
ghcr.io/actions/actions-runner latest abc123def456 2 days ago 700MB
ghcr.io/actions/actions-runner 2.317.0 abc123def456 2 days ago 700MB
3. GitHub Runner安装部署
GitHub Runner需要安装依赖后才能正常运行。学习交流加群风哥QQ113257174
步骤1:安装依赖
$ sudo ./bin/installdependencies.sh
输出示例如下:
Installing dependencies…
Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Get:2 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
Get:3 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [109 kB]
…
Setting up libicu70:amd64 (70.1-2) …
Setting up libkrb5-3:amd64 (1.19.2-2ubuntu0.3) …
Setting up liblttng-ust0:amd64 (2.13.1-1ubuntu1) …
Setting up libkrb5support0:amd64 (1.19.2-2ubuntu0.3) …
Setting up libcurl4:amd64 (7.81.0-1ubuntu1.16) …
Setting up libssl3:amd64 (3.0.2-0ubuntu1.15) …
Setting up curl (7.81.0-1ubuntu1.16) …
Setting up libkrb5-3:amd64 (1.19.2-2ubuntu0.3) …
Setting up krb5-locales (1.19.2-2ubuntu0.3) …
Setting up libgssapi-krb5-2:amd64 (1.19.2-2ubuntu0.3) …
Setting up liblttng-ust1:amd64 (2.13.1-1ubuntu1) …
Processing triggers for libc-bin (2.35-0ubuntu3.6) …
Processing triggers for man-db (2.10.2-1) …
# 安装Runner依赖(CentOS/RHEL)
$ sudo yum install -y libicu krb5-libs
# 验证依赖
$ ldd ./bin/Runner.Worker
输出示例如下:
linux-vdso.so.1 (0x00007ffc1234d000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f1234560000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f1234560000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f1234560000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f1234560000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f1234560000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f1234560000)
libicuuc.so.70 => /lib/x86_64-linux-gnu/libicuuc.so.70 (0x00007f1234560000)
libicui18n.so.70 => /lib/x86_64-linux-gnu/libicui18n.so.70 (0x00007f1234560000)
libssl.so.3 => /lib/x86_64-linux-gnu/libssl.so.3 (0x00007f1234560000)
libcrypto.so.3 => /lib/x86_64-linux-gnu/libcrypto.so.3 (0x00007f1234560000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f1234560000)
libkrb5.so.3 => /lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007f1234560000)
libgssapi_krb5.so.2 => /lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007f1234560000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1234560000)
/lib64/ld-linux-x86-64.so.2 (0x00007f1234560000)
步骤2:创建Runner用户
$ sudo useradd -m -s /bin/bash github-runner
# 设置目录权限
$ sudo chown -R github-runner:github-runner /data/actions-runner
# 切换到github-runner用户
$ sudo su – github-runner
$ cd /data/actions-runner
4. GitHub Runner注册配置
GitHub Runner需要注册到GitHub仓库或组织才能接收构建任务。from:www.itpux.com
步骤1:获取注册Token
# Settings -> Actions -> Runners -> New self-hosted runner
# 仓库级别Token示例
# https://github.com/OWNER/REPO/settings/actions/runners/new
# 组织级别Token
# https://github.com/organizations/ORG/settings/actions/runners/new
# Token格式示例
# AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
# 或使用API获取Token
$ curl -X POST \
-H “Authorization: token YOUR_GITHUB_TOKEN” \
-H “Accept: application/vnd.github+json” \
https://api.github.com/repos/OWNER/REPO/actions/runners/registration-token
输出示例如下:
{
“token”: “AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA”,
“expires_at”: “2026-03-16T10:00:00Z”
}
步骤2:配置Runner
$ ./config.sh
输出示例如下:
——————————————————————————–
| ____ _ _ _ _ _ _ _ _ |
| / ___(_) |_| | | |_ _| |__ / \ ___| |_(_) ___ _ __ ___ |
| | | _| | __| | | | | | | ‘_ \ / _ \ / __| __| |/ _ \| ‘_ \/ __| |
| | |_| | | |_| |_| | |_| | |_) | / ___ \ (__| |_| | (_) | | | \__ \ |
| \____|_|\__|\__,_|\__,_|_.__/ /_/ \_\___|\__|_|\___/|_| |_|___/ |
| |
| Self-hosted runner registration |
| |
——————————————————————————–
# What is the URL of the GitHub repository?
# 输入仓库URL: https://github.com/fgedu/fgedu-app
# What is the runner registration token?
# 输入Token: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
# What runner group should this runner belong to?
# 输入Runner组: (留空使用默认组)
# What name should this runner have?
# 输入Runner名称: fgedu-runner-01
# What labels should this runner have?
# 输入标签: docker,build,deploy
# What work folder should this runner use?
# 输入工作目录: _work
√ Runner successfully added
√ Runner connection is good
√ Runner settings are saved
步骤3:非交互式配置
$ ./config.sh \
–url https://github.com/fgedu/fgedu-app \
–token AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA \
–name fgedu-runner-01 \
–labels docker,build,deploy \
–work _work \
–unattended
输出示例如下:
——————————————————————————–
| ____ _ _ _ _ _ _ _ _ |
| / ___(_) |_| | | |_ _| |__ / \ ___| |_(_) ___ _ __ ___ |
| | | _| | __| | | | | | | ‘_ \ / _ \ / __| __| |/ _ \| ‘_ \/ __| |
| | |_| | | |_| |_| | |_| | |_) | / ___ \ (__| |_| | (_) | | | \__ \ |
| \____|_|\__|\__,_|\__,_|_.__/ /_/ \_\___|\__|_|\___/|_| |_|___/ |
| |
| Self-hosted runner registration |
| |
——————————————————————————–
√ Connected to GitHub
√ Runner successfully added
√ Runner connection is good
√ Runner settings are saved
# 查看配置文件
$ cat .runner
输出示例如下:
{
“agentId”: 123,
“agentName”: “fgedu-runner-01”,
“poolId”: 1,
“poolName”: “Default”,
“serverUrl”: “https://pipelinesghubeus13.actions.githubusercontent.com/”,
“gitHubUrl”: “https://github.com/fgedu/fgedu-app”,
“workFolder”: “_work”,
“labels”: [
{
“name”: “self-hosted”,
“type”: “system”
},
{
“name”: “Linux”,
“type”: “system”
},
{
“name”: “X64”,
“type”: “system”
},
{
“name”: “docker”,
“type”: “user”
},
{
“name”: “build”,
“type”: “user”
},
{
“name”: “deploy”,
“type”: “user”
}
]
}
步骤4:启动Runner服务
$ sudo ./svc.sh install
输出示例如下:
Creating launch runner in /etc/systemd/system/actions.runner.fgedu-fgedu-app.fgedu-runner-01.service
Run as user: github-runner
Run as uid: 1001
gid: 1001
Created symlink /etc/systemd/system/multi-user.target.wants/actions.runner.fgedu-fgedu-app.fgedu-runner-01.service → /etc/systemd/system/actions.runner.fgedu-fgedu-app.fgedu-runner-01.service.
# 启动服务
$ sudo ./svc.sh start
输出示例如下:
Starting Service actions.runner.fgedu-fgedu-app.fgedu-runner-01
Started Service actions.runner.fgedu-fgedu-app.fgedu-runner-01
# 查看服务状态
$ sudo ./svc.sh status
输出示例如下:
● actions.runner.fgedu-fgedu-app.fgedu-runner-01.service – GitHub Actions Runner (fgedu-fgedu-app.fgedu-runner-01)
Loaded: loaded (/etc/systemd/system/actions.runner.fgedu-fgedu-app.fgedu-runner-01.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2026-03-15 10:00:00 CST; 10s ago
Main PID: 12345 (runsvc.sh)
Tasks: 25
Memory: 120.5M
CPU: 3.5s
CGroup: /system.slice/actions.runner.fgedu-fgedu-app.fgedu-runner-01.service
├─12345 /bin/bash /data/actions-runner/runsvc.sh
└─12346 ./externals/node16/bin/node –no-warnings bin/Runner.Listener.js –startuptype service
Mar 15 10:00:00 fgedu.net.cn systemd[1]: Started GitHub Actions Runner (fgedu-fgedu-app.fgedu-runner-01).
Mar 15 10:00:00 fgedu.net.cn runsvc.sh[12345]: Starting Runner listener with startup type: service
Mar 15 10:00:00 fgedu.net.cn runsvc.sh[12345]: Started listener process
Mar 15 10:00:00 fgedu.net.cn runsvc.sh[12345]: Started running service
# 或使用systemctl管理
$ sudo systemctl status actions.runner.fgedu-fgedu-app.fgedu-runner-01
5. GitHub Actions Workflow实战
GitHub Actions使用YAML文件定义Workflow,存放在.github/workflows目录下。风哥提示:Workflow文件应提交到代码仓库。
步骤1:创建Workflow文件
$ mkdir -p .github/workflows
# 创建CI Workflow
$ cat > .github/workflows/ci.yml << 'EOF'
name: CI Pipeline
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
env:
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
DOCKER_REGISTRY: "192.168.1.51:5000"
IMAGE_NAME: "${{ env.DOCKER_REGISTRY }}/fgedu-app"
jobs:
build:
runs-on: self-hosted
labels: [build]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: maven
- name: Build with Maven
run: mvn clean package -DskipTests
- name: Run tests
run: mvn test
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: app-jar
path: target/*.jar
retention-days: 7
docker:
needs: build
runs-on: self-hosted
labels: [docker]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: app-jar
path: target
- name: Login to Registry
uses: docker/login-action@v3
with:
registry: ${{ env.DOCKER_REGISTRY }}
username: ${{ secrets.REGISTRY_USER }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- name: Build Docker image
run: |
docker build -t ${{ env.IMAGE_NAME }}:${{ github.sha }} .
docker tag ${{ env.IMAGE_NAME }}:${{ github.sha }} ${{ env.IMAGE_NAME }}:latest
- name: Push Docker image
run: |
docker push ${{ env.IMAGE_NAME }}:${{ github.sha }}
docker push ${{ env.IMAGE_NAME }}:latest
deploy:
needs: docker
runs-on: self-hosted
labels: [deploy]
if: github.ref == 'refs/heads/main'
steps:
- name: Deploy to Kubernetes
run: |
kubectl set image deployment/fgedu-app \
fgedu-app=${{ env.IMAGE_NAME }}:${{ github.sha }} \
-n default
EOF
# 提交到Git仓库
$ git add .github/workflows/ci.yml
$ git commit -m "Add GitHub Actions CI Pipeline"
$ git push origin main
步骤2:查看Workflow执行
# https://github.com/fgedu/fgedu-app/actions
# Workflow执行日志示例:
Run self-hosted
Runner: fgedu-runner-01
Labels: self-hosted, Linux, X64, docker, build, deploy
Current runner version: ‘2.317.0’
Runner name: ‘fgedu-runner-01’
Runner group name: ‘Default’
Machine name: ‘fgedu.net.cn’
GITHUB_TOKEN Permissions: Read repository contents and packages
Prepare workflow directory
Prepare all required actions
Getting action download info
Download action repository ‘actions/checkout@v4’
Download action repository ‘actions/setup-java@v4’
Getting action download info
Download action repository ‘actions/cache@v4’
Run actions/checkout@v4
Syncing repository: fgedu/fgedu-app
Working directory is ‘/data/actions-runner/_work/fgedu-app/fgedu-app’
Fetching the repository
Determining the checkout info
Auth token used is github.token
Checking out the ref
/usr/bin/git checkout –progress –force -B main refs/remotes/origin/main
Already on ‘main’
/usr/bin/git log -1 –format=’%H’
‘abc123def4567890123456789012345678901234’
Run actions/setup-java@v4
Setup Java Distribution: temurin
Setup Java Version: 17
Trying to resolve the latest version from 17
Resolved latest version from 17 is 17.0.10+7
Downloading Java 17.0.10+7 from https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.10%2B7/OpenJDK17U-jdk_x64_linux_hotspot_17.0.10_7.tar.gz
Extracting Java 17.0.10+7 from /tmp/abc123d/OpenJDK17U-jdk_x64_linux_hotspot_17.0.10_7.tar.gz
Setting Java 17.0.10+7 as the default
Successfully set up Java version 17.0.10+7
Attempting to save the setup-java cache
Creating cache folder…
Cache saved successfully
Cache saved with key: setup-java-Linux-temurin-17.0.10+7-maven-abc123d
Run mvn clean package -DskipTests
[INFO] Scanning for projects…
[INFO]
[INFO] ———————-< com.fgedu:fgedu-app >———————-
[INFO] Building fgedu-app 1.0.0
[INFO] ——————————–[ jar ]———————————
[INFO]
[INFO] — maven-clean-plugin:2.5:clean (default-clean) @ fgedu-app —
[INFO] Deleting /data/actions-runner/_work/fgedu-app/fgedu-app/target
[INFO]
[INFO] — maven-resources-plugin:2.6:resources (default-resources) @ fgedu-app —
[INFO] Copying 2 resources
[INFO]
[INFO] — maven-compiler-plugin:3.1:compile (default-compile) @ fgedu-app —
[INFO] Changes detected – recompiling the module!
[INFO] Compiling 10 source files
[INFO]
[INFO] — maven-resources-plugin:2.6:testResources (default-testResources) @ fgedu-app —
[INFO] Copying 1 resource
[INFO]
[INFO] — maven-surefire-plugin:2.12:test (default-test) @ fgedu-app —
[INFO] Tests are skipped.
[INFO]
[INFO] — maven-jar-plugin:2.4:jar (default-jar) @ fgedu-app —
[INFO] Building jar: /data/actions-runner/_work/fgedu-app/fgedu-app/target/fgedu-app-1.0.0.jar
[INFO] ————————————————————————
[INFO] BUILD SUCCESS
[INFO] ————————————————————————
[INFO] Total time: 10.123 s
[INFO] Finished at: 2026-03-15T10:00:00+08:00
[INFO] ————————————————————————
6. GitHub Actions使用
GitHub Actions提供了丰富的Actions市场,可以直接使用社区贡献的Actions。更多学习教程公众号风哥教程itpux_com
常用Actions示例
steps:
# 检出代码
– uses: actions/checkout@v4
# 设置Java环境
– uses: actions/setup-java@v4
with:
java-version: ’17’
distribution: ‘temurin’
# 设置Node.js环境
– uses: actions/setup-node@v4
with:
node-version: ’20’
# 设置Python环境
– uses: actions/setup-python@v5
with:
python-version: ‘3.12’
# 设置Docker Buildx
– uses: docker/setup-buildx-action@v3
# 登录Docker Registry
– uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
# 构建并推送Docker镜像
– uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ghcr.io/${{ github.repository }}:latest
# 缓存依赖
– uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles(‘**/pom.xml’) }}
# 上传Artifact
– uses: actions/upload-artifact@v4
with:
name: build-output
path: target/*.jar
# 下载Artifact
– uses: actions/download-artifact@v4
with:
name: build-output
# 部署到Kubernetes
– uses: azure/k8s-deploy@v4
with:
manifests: |
k8s/deployment.yaml
images: |
${{ env.IMAGE_NAME }}:${{ github.sha }}
imagepullsecrets: |
docker-registry-secret
7. GitHub Secrets配置
GitHub Secrets用于存储敏感信息,如密码、Token等,在Workflow中安全使用。from:www.itpux.com
步骤1:配置Repository Secrets
# Settings -> Secrets and variables -> Actions -> New repository secret
# 常用Secrets配置:
# DOCKER_USERNAME: Docker Hub用户名
# DOCKER_PASSWORD: Docker Hub密码
# REGISTRY_USER: 私有镜像仓库用户名
# REGISTRY_PASSWORD: 私有镜像仓库密码
# KUBE_CONFIG: Kubernetes配置文件(base64编码)
# SSH_PRIVATE_KEY: SSH私钥
# AWS_ACCESS_KEY_ID: AWS访问密钥
# AWS_SECRET_ACCESS_KEY: AWS密钥
# 使用API配置Secrets
$ gh secret set DOCKER_USERNAME -b”your_username”
$ gh secret set DOCKER_PASSWORD -b”your_password”
输出示例如下:
Set DOCKER_USERNAME for fgedu/fgedu-app
Set DOCKER_PASSWORD for fgedu/fgedu-app
# 列出所有Secrets
$ gh secret list
输出示例如下:
DOCKER_PASSWORD Updated 2026-03-15
DOCKER_USERNAME Updated 2026-03-15
REGISTRY_PASSWORD Updated 2026-03-15
REGISTRY_USER Updated 2026-03-15
步骤2:在Workflow中使用Secrets
jobs:
build:
runs-on: self-hosted
steps:
– name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
– name: Deploy to Kubernetes
env:
KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }}
run: |
echo “$KUBE_CONFIG” | base64 -d > ~/.kube/config
kubectl apply -f k8s/deployment.yaml
– name: SSH Deploy
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
docker pull ${{ env.IMAGE_NAME }}:${{ github.sha }}
docker-compose up -d
8. Self-hosted Runner高级配置
Self-hosted Runner支持多种高级配置,包括Docker容器运行、Kubernetes部署等。
步骤1:Docker方式运行Runner
$ cat > Dockerfile << 'EOF' FROM ubuntu:22.04 RUN apt-get update && apt-get install -y \ curl \ jq \ git \ docker.io \ && rm -rf /var/lib/apt/lists/* WORKDIR /actions-runner RUN curl -o actions-runner.tar.gz -L \ https://github.com/actions/runner/releases/download/v2.317.0/actions-runner-linux-x64-2.317.0.tar.gz \ && tar xzf actions-runner.tar.gz \ && rm actions-runner.tar.gz COPY entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"] EOF # 创建entrypoint脚本 $ cat > entrypoint.sh << 'EOF' #!/bin/bash ./config.sh \ --url ${GITHUB_URL} \ --token ${GITHUB_TOKEN} \ --name ${RUNNER_NAME} \ --labels ${RUNNER_LABELS} \ --work _work \ --unattended ./run.sh EOF # 构建镜像 $ docker build -t github-runner:latest . # 运行容器 $ docker run -d \ --name github-runner \ -e GITHUB_URL=https://github.com/fgedu/fgedu-app \ -e GITHUB_TOKEN=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA \ -e RUNNER_NAME=docker-runner \ -e RUNNER_LABELS=docker,build \ -v /var/run/docker.sock:/var/run/docker.sock \ github-runner:latest
步骤2:Kubernetes部署Runner
$ cat > runner-deployment.yaml << 'EOF' apiVersion: apps/v1 kind: Deployment metadata: name: github-runner namespace: github-actions spec: replicas: 3 selector: matchLabels: app: github-runner template: metadata: labels: app: github-runner spec: containers: - name: runner image: ghcr.io/actions/actions-runner:latest env: - name: GITHUB_URL value: "https://github.com/fgedu/fgedu-app" - name: GITHUB_TOKEN valueFrom: secretKeyRef: name: github-runner-secret key: token - name: RUNNER_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: RUNNER_LABELS value: "kubernetes,build,deploy" volumeMounts: - name: docker-sock mountPath: /var/run/docker.sock - name: work mountPath: /home/runner/_work volumes: - name: docker-sock hostPath: path: /var/run/docker.sock - name: work emptyDir: {} EOF # 创建Secret $ kubectl create secret generic github-runner-secret \ --from-literal=token=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA \ -n github-actions # 部署Runner $ kubectl apply -f runner-deployment.yaml 输出示例如下: deployment.apps/github-runner created # 查看部署状态 $ kubectl get pods -n github-actions 输出示例如下: NAME READY STATUS RESTARTS AGE github-runner-abc123d-def456 1/1 Running 0 1m github-runner-ghi789-jkl012 1/1 Running 0 1m github-runner-mno345-pqr678 1/1 Running 0 1m
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
