-
Notifications
You must be signed in to change notification settings - Fork 103
124 lines (114 loc) Β· 4.91 KB
/
pre-release.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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
name: Pre-Release on Push
on:
push:
branches:
- "develop"
paths-ignore:
- "README.md"
- "LICENSE"
- "package.json"
- "package-lock.json"
- "tailwind.config.js"
- ".gitignore"
- ".dockerignore"
- "Dockerfile"
- "scripts/**"
- "**.sh"
- "docs/**"
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-pre-release
cancel-in-progress: true
permissions:
contents: write
jobs:
pre-release:
runs-on: ubuntu-latest
steps:
- name: Checkout ποΈ
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Go π¦
uses: actions/setup-go@v4
with:
go-version-file: "go.mod"
- name: Setup android NDK
run: |
wget -q https://dl.google.com/android/repository/android-ndk-r26b-linux.zip
unzip -qq android-ndk-r26b-linux.zip
echo "$PWD/android-ndk-r26b/toolchains/llvm/prebuilt/linux-x86_64/bin" >> $GITHUB_PATH
- name: Build Executables ποΈ π
run: |
mkdir -p bin
allowed_archs="amd64 arm arm64 386"
for var in $(go tool dist list); do
# skip disallowed archs
if [[ ! $allowed_archs =~ "$(cut -d '/' -f 2 <<<$var)" ]]; then
echo "Skipping: $var"
continue
fi
# skip arm for windows
if [[ "$(cut -d '/' -f 1 <<<$var)" == "windows" && "$(cut -d '/' -f 2 <<<$var)" == "arm" ]]; then
echo "Skipping: $var (windows/arm)"
continue
fi
file_name="jiotv_go-$(cut -d '/' -f 1 <<< $var)-$(cut -d '/' -f 2 <<< $var)"
case "$(cut -d '/' -f 1 <<< $var)" in
"windows")
echo "Building $var"
CGO_ENABLED=0 GOOS="$(cut -d '/' -f 1 <<< $var)" GOARCH="$(cut -d '/' -f 2 <<< $var)" go build -o bin/"$file_name.exe" -trimpath -ldflags="-s -w" . &
;;
"linux" | "darwin")
echo "Building $var"
CGO_ENABLED=0 GOOS="$(cut -d '/' -f 1 <<< $var)" GOARCH="$(cut -d '/' -f 2 <<< $var)" go build -o bin/"$file_name" -trimpath -ldflags="-s -w" . &
;;
"android")
echo "Building $var"
case "$(cut -d '/' -f 2 <<<$var)" in
"arm")
CGO_ENABLED=1 GOOS="$(cut -d '/' -f 1 <<<$var)" GOARCH="$(cut -d '/' -f 2 <<<$var)" CC="armv7a-linux-androideabi28-clang" CXX="armv7a-linux-androideabi28-clang++" go build -o bin/"jiotv_go-$(cut -d '/' -f 1 <<<$var)-$(cut -d '/' -f 2 <<<$var)" -trimpath -ldflags="-s -w" .
;;
"arm64")
CGO_ENABLED=1 GOOS="$(cut -d '/' -f 1 <<<$var)" GOARCH="$(cut -d '/' -f 2 <<<$var)" CC="aarch64-linux-android32-clang" CXX="aarch64-linux-android32-clang++" go build -o bin/"jiotv_go-$(cut -d '/' -f 1 <<<$var)-$(cut -d '/' -f 2 <<<$var)" -trimpath -ldflags="-s -w" .
;;
"amd64")
CGO_ENABLED=1 GOOS="$(cut -d '/' -f 1 <<<$var)" GOARCH="$(cut -d '/' -f 2 <<<$var)" CC="x86_64-linux-android32-clang" CXX="x86_64-linux-android32-clang++" go build -o bin/"jiotv_go-$(cut -d '/' -f 1 <<<$var)-$(cut -d '/' -f 2 <<<$var)" -trimpath -ldflags="-s -w" .
;;
*)
echo "Skipping: $var"
;;
esac
;;
*)
echo "Skipping: $var"
;;
esac
done
# Wait for all background jobs to finish
wait
# Build for android5 arm with CC=armv7a-linux-androideabi21-clang
echo "Building android5 arm"
CGO_ENABLED=1 GOOS=android GOARCH=arm GOARM=7 CC="armv7a-linux-androideabi21-clang" CXX="armv7a-linux-androideabi21-clang++" go build -o bin/jiotv_go-android5-armv7 -trimpath -ldflags="-s -w" .
- name: Delete previous release ποΈ
run: |
tag=$(git describe --tags --match "${{ github.ref_name }}.[0-9]*.[0-9]*.[0-9]*" --abbrev=0)
gh release delete -y $tag --cleanup-tag
continue-on-error: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Generate tag
id: gen_tag
run: |
echo "tag=${{ github.ref_name }}.$(date +'%Y.%m.%d.%H.%M.%s')" >> $GITHUB_OUTPUT
- name: Release π¦
uses: softprops/action-gh-release@v1
with:
draft: false
prerelease: true
tag_name: ${{ steps.gen_tag.outputs.tag }}
files: |
./bin/*
generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}