2025年1月6日 星期一

github actions可不可以寫funcion,試試看複合動作

就我知道github actions應該算腳本類的語法吧,在工作上遇到要連線vpn就要落落長一大堆語法,所幸問一下ai,有沒有類似function的用法,還真的有,做一下紀錄

# ./github/actions/vpn/action.yml
# 路径除了vpn其他都必须一样
name: vpn connect
description: 'vpn connect'
# description這裏不能省

inputs:
OVPN_CONFIG:
description: 'ovpn config'
required: true

# actions里面不能有env跟secrets只能透过with传入

runs:
using: "composite"
steps:
- name: Write OpenVPN config
shell: bash # shell这行必填
run: echo "${{ inputs.OVPN_CONFIG }}" > xxx.ovpn

- name: Install OpenVPN
shell: bash
run: sudo apt-get update && sudo apt-get install -y openvpn

- name: Configure OpenVPN
shell: bash
run: |
sudo openvpn --config cywang.ovpn &
sleep 10 # Wait for the VPN to establish connection
ps aux | grep openvpn
ip addr
ip route

這樣就寫好了,接著我們要來示範使用方式

jobs:
  deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
      # 因為要使用到repo裡面的檔案一定要有這行

- name: vpn connect
uses: ./.github/actions/vpn
        # 直接uses就可以使用,要注意路徑要正確
with:
OVPN_CONFIG: ${{ env.OVPN_CONFIG }}

以上就是這次的分享