惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
P
Palo Alto Networks Blog
月光博客
月光博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
I
InfoQ
aimingoo的专栏
aimingoo的专栏
腾讯CDC
T
Threatpost
D
DataBreaches.Net
Vercel News
Vercel News
F
Fortinet All Blogs
Engineering at Meta
Engineering at Meta
C
Cybersecurity and Infrastructure Security Agency CISA
Forbes - Security
Forbes - Security
U
Unit 42
C
Check Point Blog
Blog — PlanetScale
Blog — PlanetScale
O
OpenAI News
量子位
TaoSecurity Blog
TaoSecurity Blog
Microsoft Azure Blog
Microsoft Azure Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
V
Visual Studio Blog
Recorded Future
Recorded Future
云风的 BLOG
云风的 BLOG
Security Archives - TechRepublic
Security Archives - TechRepublic
The Last Watchdog
The Last Watchdog
S
Security Affairs
Attack and Defense Labs
Attack and Defense Labs
罗磊的独立博客
Stack Overflow Blog
Stack Overflow Blog
Microsoft Security Blog
Microsoft Security Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
V2EX
小众软件
小众软件
S
SegmentFault 最新的问题
www.infosecurity-magazine.com
www.infosecurity-magazine.com
W
WeLiveSecurity
AI
AI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
博客园 - 聂微东
I
Intezer
Know Your Adversary
Know Your Adversary
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Proofpoint News Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The Cloudflare Blog
博客园_首页
NISL@THU
NISL@THU
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO

泠泫凝的异次元空间

通过串口安装Linux | 泠泫凝的异次元空间 curl自编译 | 泠泫凝的异次元空间 Minecraft 认证服务器代理 | 泠泫凝的异次元空间 飞塔分流配置实战 | 泠泫凝的异次元空间 Windows 安全启动证书检查 | 泠泫凝的异次元空间 Lxn-OneDriveCLI | 泠泫凝的异次元空间 华三交换机配置 ERPS 环网 | 泠泫凝的异次元空间 PVE 配置 VLAN 感知 | 泠泫凝的异次元空间 MT7922 无线网卡安装 | 泠泫凝的异次元空间 无显示输出 Linux 主机配置桌面显示 | 泠泫凝的异次元空间 Wireguard 部署 SOP 手册(自用) | 泠泫凝的异次元空间 Zabbix 7.4 通过钉钉发送告警提醒 | 泠泫凝的异次元空间 Debian with xfce 通过 VNC 共享屏幕 华三S6860 IRF堆叠 | 泠泫凝的异次元空间 iPad 应用侧载 | 泠泫凝的异次元空间 Smart DNS 分区解析 | 泠泫凝的异次元空间 建立 NFS 服务器并挂载到客户端 | 泠泫凝的异次元空间 将 Android 以 MTP 方式连接至 Debian PVE 虚拟机迁移至 vCenter | 泠泫凝的异次元空间 vCenter 虚拟机迁移至 PVE | 泠泫凝的异次元空间 PVE迁移时提示密钥验证失败 | 泠泫凝的异次元空间 修改Windows设备设置区域 | 泠泫凝的异次元空间 恢复 SecureCRT 7.x 保存的密码 | 泠泫凝的异次元空间 PVE 超融合下电与上电流程 | 泠泫凝的异次元空间 记一次Zabbix异常处理 | 泠泫凝的异次元空间 苹果设备保存SHSH2 | 泠泫凝的异次元空间 PVE超融合部署 | 泠泫凝的异次元空间 树莓派启用zram | 泠泫凝的异次元空间 在 Hyper-V 上安装 EVE-NG | 泠泫凝的异次元空间 Zabbix 部署与 Windows 硬件信息收集 | 泠泫凝的异次元空间 在WSL2中安装CUDA支持 | 泠泫凝的异次元空间 MinIO 集群部署 | 泠泫凝的异次元空间 vmware 虚拟化平台备份工具 Veeam 12 安装及配置 ubuntu 24.04 安装 nVidia 驱动后网卡消失 XMRig 自编译 | 泠泫凝的异次元空间 云桌面通过组策略统一体验配置 | 泠泫凝的异次元空间 Fortigate SSLVPN 无法连接内网 VNC 服务器 CentOS 7 使用镜像作为本地源并将自身作为YUM源服务器 | 泠泫凝的异次元空间 CentOS 7 离线更新 OpenSSH 服务 使用KubeKey离线部署Kubernetes | 泠泫凝的异次元空间 使用PGP对消息进行签名 | 泠泫凝的异次元空间 禁止MinIO展示桶内文件列表 | 泠泫凝的异次元空间 华为 Fusion Access 云桌面部署 | 泠泫凝的异次元空间 vmware Horizon 模板机部署 | 泠泫凝的异次元空间 vmware Horizon 云桌面与云应用部署 | 泠泫凝的异次元空间 Citrix XenApp 云应用交付 | 泠泫凝的异次元空间 Citrix XenDesktop 云桌面部署 | 泠泫凝的异次元空间 PVE LVM 扩容 | 泠泫凝的异次元空间 Linux 网络聚合(bond方式) | 泠泫凝的异次元空间 Citrix XenServer 7.2 部署教程 | 泠泫凝的异次元空间 在 Windows Server 2019 上安装 AMD 显卡驱动 openEuler 安装并使用 EPEL 源 | 泠泫凝的异次元空间 从已有Linux系统创建带桌面环境的Docker镜像 | 泠泫凝的异次元空间 下载联想原厂镜像及解密 | 泠泫凝的异次元空间 在基于 arm 架构的服务器上安装 PVE | 泠泫凝的异次元空间 自制 EVE-NG 镜像 | 泠泫凝的异次元空间 不使用 Snap 在 ubuntu 上安装 Chromium 浏览器 Fortigate 6.2 固件从 PPPoE 获得 IPv6 地址 Fortigate 手记 | 泠泫凝的异次元空间 Fortigate 通过命令行自定义 NTP 服务器 | 泠泫凝的异次元空间 arm 架构 CentOS 7 安装 MySQL 5.7 版本 ubuntu 20 安装计算卡驱动和 CUDA Toolkit 锐捷诺客云添加设备后一直显示“等待同步” | 泠泫凝的异次元空间 Windows 10 自动登录 | 泠泫凝的异次元空间 OpenWRT IPv6 防火墙设置 | 泠泫凝的异次元空间 k8s 部署踩坑合集 | 泠泫凝的异次元空间 改变 Ubuntu TTY 终端字体 | 泠泫凝的异次元空间 Parted 无损扩容磁盘分区 | 泠泫凝的异次元空间 NTP服务器测试 | 泠泫凝的异次元空间 【相亲相爱】2024祝大家!新年快乐!!! ESXi中重新挂载数据盘 | 泠泫凝的异次元空间 使用 MediaMTX + RTSP 搭建低延迟直播服务器 Firewalld 手记 | 泠泫凝的异次元空间 Ubuntu 上不使用 snapd 安装 Firefox 在 armbian 上安装 xfce 和 VNC 做远程桌面 在 ubuntu 20 上使用 TigerVNC 做远程桌面 在 openEuler 上部署安装 openGauss | 泠泫凝的异次元空间 Wireguard 组网笔记 | 泠泫凝的异次元空间 让特定IP(段)走VPN连接 | 泠泫凝的异次元空间 在Wireguard中排除部分IP(段) | 泠泫凝的异次元空间 CentOS 7 上升级 OpenSSL | 泠泫凝的异次元空间 将黑群晖部署到ESXi(笔记) | 泠泫凝的异次元空间 apk 代码反编译笔记 | 泠泫凝的异次元空间 Windows 搭建 iSCSI 服务器全攻略 | 泠泫凝的异次元空间 CentOS 7 编译安装 Python 3 开源语音识别工具 Whisper | 泠泫凝的异次元空间 Ubuntu 下 Python 编译安装及关联问题解决 | 泠泫凝的异次元空间 Ansible Tower 安装 | 泠泫凝的异次元空间 提高 PowerPoint 导出到图片时的分辨率 | 泠泫凝的异次元空间 利用亚马逊云服务器和VPC 构建安全可靠的虚拟网络 | 泠泫凝的异次元空间 Windows Server 多网卡链路聚合 | 泠泫凝的异次元空间 MT3000路由+移远EC20模块体验 | 泠泫凝的异次元空间 Python安装依赖时出现ctype问题 | 泠泫凝的异次元空间 GL-MT3000日用设置 | 泠泫凝的异次元空间 解除 vCenter 的最低内存限制 | 泠泫凝的异次元空间 跳过Windows 11的强制联网和账户登录 | 泠泫凝的异次元空间 Cloudflare Trace API 信息详解 | 泠泫凝的异次元空间 在CentOS中搭建由nginx反代和Apache2作为后端的Wordpress | 泠泫凝的异次元空间 通过nginx进行文件共享 | 泠泫凝的异次元空间 禁用 sudo 时密码认证 | 泠泫凝的异次元空间
Github Actions 笔记 | 泠泫凝的异次元空间
Lxn's Area · 2023-01-29 · via 泠泫凝的异次元空间

有关Github Actions的一些技巧和操作方法,包括现有运行环境、配置、在Action文件中获取时间等等。

基本概念

Github Actions(下面简称“Actions”)就相当于 Github 给你一个你指定操作系统的虚拟机,然后在虚拟机里面执行你指定的操作。

Actions的运行依赖于提前创建好的YAML文件,该文件要求严格缩进,由基本结构组成,分别是Action名称、触发方式、任务组和步骤构成

1
2
3
4
5
6
7
8
9
name: example
on:
workflow_dispatch:
jobs:
MyJob:
runs-on: ubuntu-20.04
steps:
- name: Checkingout
uses: actions/checkout@v3

这些YMAL文件统一存放在仓库下面的/.github/workflows/文件夹下面,扩展名必须有,名称随意。

笔记

以下主要记录一些定义和可用值,仅供参考。

触发方式

这里主要写的是常用的触发方式,其他的触发方式还有很多,可以参考官方文档Events that trigger workflows

  • 手动Run:
    需要到Github仓库页面-Actions-对应的工作流-RunWorkflow
    1
    2
    on:
    workflow_dispatch:
  • 定时运行:
    指定运行的时间,cron参数是标准的cron格式,可以指定多条。
    需要额外注意的是,Github Actions的时区是UTC,如果指定的是北京时间则还需要自行换算一下。
    1
    2
    3
    on: 
    schedule:
    - cron: '50 3 * * *'
  • 当有Push活动时运行:
    当检测到有对指定branch进行Push活动时自动执行,也可以不指定branch,当仓库有任何Push活动时执行。
    1
    2
    3
    on:
    push:
    branches: [ main,secondbranch ]
  • 外部API触发
    可以通过外部API触发,types中是自定义的事件名称。
    1
    2
    3
    on:
    repository_dispatch:
    types: [upload, download]
    在外部可以用如下的API启动该Actions:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    curl --location --request POST 'https://api.github.com/repos/<YourName>/<RepoName>/dispatches' \
    --header 'Accept: application/vnd.github.v3+json' \
    --header 'Authorization: Bearer <Github Token>' \
    --header 'Content-Type: application/json' \
    --data-raw '{
    "event_type": "upload",
    "client_payload": {
    "text": "my custom text here"
    }
    }'
    client_payload是外部输入的参数;<Github Token>位置填入你的Token,申请位置在Settings->Developer settings->Personal access tokens,建议使用Fine-grained personal access tokens,记得勾选Actions和Workflow相关权限;<YourName>/<RepoName>填入你的仓库。

以上的所有触发方式均可以同时使用,是“和(and)”的关系。

1
2
3
4
5
6
7
8
9
on: 
workflow_dispatch:
repository_dispatch:
types: [upload, download]
push:
branches: [ main ]
schedule:
- cron: '50 3 * * *'
- cron: '33 19 * * *'

操作系统环境

操作系统目前来说Github支持三种:Windows、Linux和macOS,尽管官方支持但还是不推荐直接用xxx-latest这种,建议直接指定版本。

镜像名称可用值配置
Windows Server 2022windows-2022
Windows Server 2019windows-2019
Ubuntu 22.04ubuntu-22.04
Ubuntu 20.04ubuntu-20.042x E5-2673 v3 @ 2.39GHz
7.0GB RAM
84GB vDisk(SSD)
macOS Monterey 12macos-123x E5-1650 v2 @ 3.50GHz
15.0GB RAM
380GB vDisk
macOS Big Sur 11macos-11

基本格式就是填进runs-on后面即可:

1
runs-on: ubuntu-20.04

需要额外注意的是,Github Actions 每月有一定的免费额度,超出会额外收费,在Settings->Billing and plans右侧可以看当前总额度和当前已用额度。另外macOS的虚拟机用量按10倍计算(即使用1分钟但会扣除10分钟的额度),Windows的虚拟机按照两倍计算,请合理安排适时终止。

Checkout后仓库位置

$GITHUB_WORKSPACE

1
cd $GITHUB_WORKSPACE

Action脚本中获取当前日期

添加如下步骤:

1
2
3
4
steps:
- name: Get Date
id: date
run: echo "::set-output name=date::$(date +'%Y%m%d')"

在该Action配置文件的其他地方引用:

1
2
3
4
5
6
7
8
9
steps: 
- name: GetDate to actions
uses: actions-js/push@master
with:
github_token: ${{ secrets.GITHUBTOKEN }}
message: "autopublish "${{ steps.date.outputs.date }}
- name: GetDate to Env
env:
NDATE: ${{ steps.date.outputs.date }}

给Actions添加Secret

在仓库页面->Settings->Secrets and variables,右上角New repository secret,不是左侧栏Code and automation下面的Environments。

Actions扩容

准确的来说目前并不能扩容,不过因为Github官方处于易用的考虑在镜像中添加了诸多我们可能会用不上的SDK和toolchain,而我们可以通过移除这些不需要的东西来节约一些空间,并使用LVM使其组成一个更大的分区。

目前测试仅限 Ubuntu。

在你的yaml文件中添加如下步骤:

1
2
3
4
5
6
7
steps: 
- name: Maximize build space
uses: easimon/maximize-build-space@master
with:
root-reserve-mb: 512
swap-size-mb: 1024
remove-dotnet: 'true'

可用的输入如下(仅包含常用项,完整列表):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
root-reserve-mb:
description: '根目录下保留的空间,单位MB'
required: false
default: '1024'
temp-reserve-mb:
description: '临时文件系统(/mnt)保留空间,单位MB'
required: false
default: '100'
swap-size-mb:
description: 'Swap 大小,单位MB,不能为0'
required: false
default: '4096'
remove-dotnet:
description: '移除 .NET 运行时和库'
required: false
default: 'false'
remove-android:
description: '移除 Android SDKs 和其编译工具'
required: false
default: 'false'
remove-haskell:
description: '移除 GHC (Haskell) 解决方案.'
required: false
default: 'false'

 上一篇

Linux Network