-
Notifications
You must be signed in to change notification settings - Fork 108
85 lines (79 loc) · 3.5 KB
/
build.yml
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
name: OEM GSI Builder
on:
workflow_dispatch:
defaults:
run:
shell: bash
jobs:
build:
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Load Configuration
uses: falti/[email protected]
id: config
with:
path: config.env
- name: Check Configuration
run: |
function required () { if ! [[ "$1" ]]; then echo "$2 variable can't be null." && exit 1; fi }
required "${{ secrets.USERNAME }}" "USERNAME secret"
required "${{ secrets.PASSWORD }}" "PASSWORD secret"
required "${{ steps.config.outputs.tool_repo }}" "TOOL_REPO config"
required "${{ steps.config.outputs.url }}" "URL config"
required "${{ steps.config.outputs.firmware_type }}" "FIRMWARE_TYPE config"
required "${{ steps.config.outputs.sourceforge_dir }}" "SOURCEFORGE_DIR config"
required "${{ steps.config.outputs.output_type }}" "OUTPUT_TYPE config"
- name: Setup ErfanGSIs Tools
run: |
git clone --recurse-submodules "${{ steps.config.outputs.tool_repo }}"
bash ErfanGSIs/setup.sh
sed -i '$d' ErfanGSIs/url2GSI.sh
- name: Build A/B
if: ${{ steps.config.outputs.output_type == 'all' }}
run: |
sudo ./ErfanGSIs/url2GSI.sh "${{ steps.config.outputs.url }}" "${{ steps.config.outputs.firmware_type }}" "${{ steps.config.outputs.extra_args }}"
- name: Build AB
if: ${{ steps.config.outputs.output_type == 'ab' }}
run: |
sudo ./ErfanGSIs/url2GSI.sh "${{ steps.config.outputs.url }}" "${{ steps.config.outputs.firmware_type }}" --ab ${{ steps.config.outputs.extra_args }}
- name: Build AOnly
if: ${{ steps.config.outputs.output_type == 'a' }}
run: |
sudo ./ErfanGSIs/url2GSI.sh "${{ steps.config.outputs.url }}" "${{ steps.config.outputs.firmware_type }}" --aonly ${{ steps.config.outputs.extra_args }}
- name: Pre-Upload
run: |
mkdir build/
sudo mv ErfanGSIs/output/*.img build/
gzip -r build/
sudo mv ErfanGSIs/output/*.txt build/
- name: Setup SSH
uses: fastai/workflows/ssh@master
with:
ssh_key: ${{ secrets.SSH_KEY }}
key_file: id_ecdsa
- name: Upload
run: |
ssh-keyscan frs.sourceforge.net >> ~/.ssh/known_hosts
sshpass -p "${{ secrets.PASSWORD }}" rsync -arsP -e ssh build/ "${{ secrets.USERNAME }}@frs.sourceforge.net:${{ steps.config.outputs.sourceforge_dir }}"
- name: Telegram Notify
if: ${{ steps.config.outputs.tg_chat_ids != 0 }}
run: |
BOT_TOKEN="${{ secrets.TG_BOT_TOKEN }}"
CHAT_IDS="${{ steps.config.outputs.tg_chat_ids }}"
TG_URL="https://api.telegram.org/bot$BOT_TOKEN/sendMessage"
chatids=("$CHAT_IDS")
for chat in "${chatids[@]}"; do
TYPE="${{ steps.config.outputs.firmware_type }}"
OUTPUT="${{ steps.config.outputs.output_type }}"
BASE="${{ steps.config.outputs.url }}"
SOURCEFORGE="${{ steps.config.outputs.sourceforge_url }}"
for file in build/*.txt; do
filename=$(basename -- "$file")
sed -i "1s/^/Name: ${filename%.*}\n/" "$file"
printf "\n\nBase Firmware Link: $BASE" >> "$file"
printf "\n\nDownload Link: $SOURCEFORGE" >> "$file"
curl -s -d "chat_id=$chat" --data-urlencode text@$file "$TG_URL"
done
done