赞
踩
有些东西真的就是要不断的试错不断地试错才能摸索到一点点,就是摸索到凌晨两三点第二天要8点起床感觉要死。
为什么我会用这个东东,因为我搞的阿里云服务器2个g的运行内存,打包这玩意贼消耗内存,本来想搞Jenkins但是服务器上搞更要内存,本机搞又没必要,刚好之前的公司里面了解过这东东,直接就是试试就试试了
摸索出来能打包了野心也不会止步于此
怎么使用GitHub的工作流?
在项目根目录下创建.github/workflows/main.yml (main你顺便 叫ikun也行)
文件里面就是写环境和命令行命令
然后推送到GitHub 就会自动识别并执行里面的命令
当有代码被推送到main分支时触发
这里用到了推送别的分支,GitHub默认是关闭的,要自己打开
授予 GitHub Actions 推送权限:
- 进入你的 GitHub 仓库的「Settings」-「Actions」页面。
- 在「Workflow permissions」下,勾选「Allow write access to repository」选项。
- 这样 GitHub Actions 就被授予了推送代码的权限。
命令里面用了很多${{ secrets.*** }}
这些就是不想被别人看到的一些敏感数据 比如密码 我比较保守账号密码URL全部都用这些表示了,那么怎么用呢?
- 进入仓库设置: 在您的仓库页面上,点击顶部的
Settings
(设置)标签。- 访问
Secrets
部分: 在左侧菜单中,找到并点击Secrets and variables
(秘密)下面的Actions
。这里存储了仓库的敏感数据。- 添加新的 Secret: 点击 “New repository secret”(新建仓库秘密)按钮。
- 输入 Secret 的名称和值:
– 在 “Name”(名称)字段中输入 Secret 的名称,例如 EMAIL_USERNAME。
– 在 “Value”(值)字段中输入对应的数据,例如您的邮箱用户名。- 保存 Secret: 完成输入后,点击 “Add secret”(添加秘密)按钮保存。
name: Build and Deploy # 当代码被推送到 main 分支时触发此工作流程 on: push: branches: [main] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 # 设置 Node.js 环境,版本为 16 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: 16 # 安装项目依赖 - name: Install Dependencies run: yarn install # 执行构建脚本 - name: Build run: yarn run build # 先设置时区并获取东八区当前时间 - name: Get Beijing Time id: beijing_time run: echo "BEIJING_TIME=$(TZ=Asia/Shanghai date +'%Y-%m-%d %H:%M:%S')" >> $GITHUB_ENV # 推送构建结果到 build 分支 - name: Push to Build Branch run: | git config --local user.email "action@github.com" git config --local user.name "Yc Action" git checkout --orphan temp-build git rm -rf . rm -rf node_modules # 移除 node_modules find . -name "*s.map" -exec rm -f {} \; # 移除所有js.map和css.map文件 mv build/* . git add -f * git commit -m "yc自动打包 - ${{ env.BEIJING_TIME }}" git push origin HEAD:build -f # 请求脚本并获取返回值 - name: Run Script and Get Output run: | echo "SCRIPT_OUTPUT=$(curl -s ${{ secrets.URL }})" >> $GITHUB_ENV # 构建成功后发送邮件 - name: Send Email on Success if: success() # 这会确保只在成功时发送邮件 uses: dawidd6/action-send-mail@v2 with: # 以下是发送邮件需要提供的一些配置信息 server_address: smtp.qq.com server_port: 587 username: ${{ secrets.EMAIL_USERNAME }} password: ${{ secrets.EMAIL_PASSWORD }} subject: 打包成功 - ${{ env.SCRIPT_OUTPUT }} to: ${{ secrets.TO_EMAIL }} from: GitHub Actions body: 构建成功。构建时间:${{ env.BEIJING_TIME }}。脚本输出:${{ env.SCRIPT_OUTPUT }}
上面请求的URL是springboot 一个接口
有兴趣就看看(一定要自己加些校验)@GetMapping("/run-script") public String runScript(String scriptName) { try { // 判断操作系统是否为Linux String osName = System.getProperty("os.name").toLowerCase(); if (!osName.contains("linux")) return "该脚本只能在Linux上运行。"; // 指定要运行的脚本路径 String scriptPath = "/var/script/"+scriptName; // 检查脚本是否存在 if (!Files.exists(Paths.get(scriptPath))) return "脚本文件不存在。"; // 在新的线程中执行脚本 new Thread(() -> { try { Process process = Runtime.getRuntime().exec(scriptPath); process.waitFor(); } catch (Exception e) {log.error(e.getMessage());} }).start(); return "脚本在后台运行。"; } catch (Exception e) { log.error(e.getMessage()); return "执行脚本时出错。"; } }
- 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
代码被推送到 gitee-build 分支时触发
这里的name都用中文了,name就是个名字,比如工作流出错了 GitHub就会告诉你那个名字下面的工作出错,还有就像下图一样 清晰明了
name: 构建和推送 # 当代码被推送到 gitee-build 分支时触发此工作流程 on: push: branches: [gitee-build] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: 设置 Node.js 环境,版本为 16 uses: actions/setup-node@v3 with: node-version: 16 - name: 安装项目依赖 run: yarn install - name: 执行构建脚本 run: yarn run build - name: 先设置时区并获取东八区当前时间 id: beijing_time run: echo "BEIJING_TIME=$(TZ=Asia/Shanghai date +'%Y-%m-%d %H:%M:%S')" >> $GITHUB_ENV - name: 推送构建结果到gitee的 build 分支 run: | git config --local user.email "action@github.com" git config --local user.name "Yc Action" git checkout --orphan temp-build git rm -rf . rm -rf node_modules # 移除 node_modules find . -name "*s.map" -exec rm -f {} \; # 移除所有js.map和css.map文件 mv build/* . git add -f * git commit -m "GitHub Actions自动打包 - ${{ env.BEIJING_TIME }}" git remote add gitee https://yc556:${{ secrets.GITEE_TOKEN }}@gitee.com/yc556/yc556.git git push gitee HEAD:build -f - name: 构建成功后发送邮件 uses: dawidd6/action-send-mail@v2 with: # 以下是发送邮件需要提供的一些配置信息 server_address: smtp.qq.com server_port: 587 username: ${{ secrets.EMAIL_USERNAME }} password: ${{ secrets.EMAIL_PASSWORD }} subject: 推送到gitee成功 - ${{ env.SCRIPT_OUTPUT }} to: ${{ secrets.TO_EMAIL }} from: GitHub Actions body: 推送成功。请自己去更新构建内容,时间:${{ env.BEIJING_TIME }}。脚本输出:${{ env.SCRIPT_OUTPUT }}
不只是能搞Git 毕竟动作流就像是一台免费的服务器,打包后端 定时任务,爬虫 都是可以的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。