-
Notifications
You must be signed in to change notification settings - Fork 109
155 lines (152 loc) · 7.64 KB
/
debian-frpc.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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
name: GitHub Actions Continuous Delivery (Debian Frpc)
on:
push:
branches:
- "main"
- "dev"
- "feat/**"
- "feature/**"
- "fix/**"
- "pr/**"
tags:
- "[0-9]+.[0-9]+.[0-9]+"
- "v[0-9]+.[0-9]+.[0-9]+"
- "V[0-9]+.[0-9]+.[0-9]+"
- "debian-[0-9]+.[0-9]+.[0-9]+"
- "[0-9]+.[0-9]+"
- "v[0-9]+.[0-9]+"
- "V[0-9]+.[0-9]+"
- "debian-[0-9]+.[0-9]+"
- "[0-9]+"
- "v[0-9]+"
- "V[0-9]+"
- "debian-[0-9]+"
pull_request:
branches:
- "main"
- "dev"
- "feat/**"
- "feature/**"
- "fix/**"
- "pr/**"
schedule:
# Automatically run on every Day
- cron: "0 17 * * *"
workflow_dispatch:
jobs:
buildx:
runs-on: ubuntu-latest
steps:
- name: Bypass Cloudflare for Github Action Pro
uses: snowdreamtech/bypass-cloudflare-for-github-action@v0.0.4
with:
mode: 'list'
cf_account_id: ${{ secrets.CF_ACCOUNT_ID }}
cf_api_token: ${{ secrets.CF_API_TOKEN }}
cf_zone_id: ${{ secrets.CF_ZONE_ID }}
github_api_token: ${{ secrets.GITHUB_TOKEN }}
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@v1.3.1
with:
# this might remove tools that are actually needed,
# if set to "true" but frees about 6 GB
tool-cache: false
# all of these default to true, but feel free to set to
# "false" if necessary for your workflow
android: true
dotnet: true
haskell: true
large-packages: true
docker-images: false
swap-storage: false
- name: Checkout
uses: actions/checkout@v4.2.2
with:
# [Required] Access token with `workflow` scope.
token: ${{ secrets.WORKFLOW_SECRET }}
- name: Set env variables
run: |
echo "BRANCH=${GITHUB_REF##*/}" >> $GITHUB_ENV
echo "http_proxy=${http_proxy}" >> $GITHUB_ENV
echo "no_proxy=${no_proxy}" >> $GITHUB_ENV
- # Add support for more platforms with QEMU (optional)
# https://github.com/docker/setup-qemu-action
name: Set up QEMU
uses: docker/setup-qemu-action@v3.3.0
- # https://github.com/docker/setup-buildx-action/issues/57#issuecomment-1059657292
# https://github.com/docker/buildx/issues/136#issuecomment-550205439
# docker buildx create --driver-opt env.http_proxy=$http_proxy --driver-opt env.https_proxy=$https_proxy --driver-opt '"env.no_proxy='$no_proxy'"'
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.8.0
with:
buildkitd-config: .github/buildkitd.toml
driver-opts: |
env.http_proxy=${{ env.http_proxy }}
env.https_proxy=${{ env.http_proxy }}
"env.no_proxy='${{ env.no_proxy}}'"
- name: Login to DockerHub
uses: docker/login-action@v3.3.0
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}
- name: Login to Quay.io
uses: docker/login-action@v3.3.0
with:
registry: quay.io
username: ${{ secrets.QUAY_USERNAME }}
password: ${{ secrets.QUAY_ROBOT_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v3.3.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Docker meta
id: meta
uses: docker/metadata-action@v5.6.1
with:
images: |
name=snowdreamtech/frpc,enable=true
name=ghcr.io/snowdreamtech/frpc,enable=true
name=quay.io/snowdreamtech/frpc,enable=true
flavor: |
latest=false
prefix=
suffix=
tags: |
type=ref,enable=${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/master' && github.event_name != 'schedule' }},priority=600,prefix=,suffix=-debian,event=branch
type=edge,enable=true,priority=700,prefix=,suffix=-debian,branch=dev
type=raw,enable=${{ (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master') && github.event_name != 'schedule' }},priority=200,prefix=,suffix=,value=debian
type=raw,enable=${{ startsWith(github.ref, 'refs/tags/') }},priority=200,prefix=,suffix=,value=debian
type=schedule,enable=true,priority=1000,prefix=,suffix=-debian,pattern=nightly
type=match,enable=true,priority=800,prefix=,suffix=-debian,pattern=\d+.\d+.\d+,group=0,value=
type=match,enable=true,priority=800,prefix=,suffix=-debian,pattern=\d+.\d+,group=0,value=
type=match,enable=${{ !startsWith(github.ref, 'refs/tags/0.') && !startsWith(github.ref, 'refs/tags/v0.') && !startsWith(github.ref, 'refs/tags/V0.') && !startsWith(github.ref, 'refs/tags/debian-0.') && !startsWith(github.ref, 'refs/tags/debian-v0.') && !startsWith(github.ref, 'refs/tags/debian-V0.') }},priority=800,prefix=,suffix=-debian,pattern=\d+,group=0,value=
type=ref,enable=${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/master' && github.event_name != 'schedule' }},priority=600,prefix=,suffix=-bookworm,event=branch
type=edge,enable=true,priority=700,prefix=,suffix=-bookworm,branch=dev
type=raw,enable=${{ (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master') && github.event_name != 'schedule' }},priority=200,prefix=,suffix=,value=bookworm
type=raw,enable=${{ startsWith(github.ref, 'refs/tags/') }},priority=200,prefix=,suffix=,value=bookworm
type=schedule,enable=true,priority=1000,prefix=,suffix=-bookworm,pattern=nightly
type=match,enable=true,priority=800,prefix=,suffix=-bookworm,pattern=\d+.\d+.\d+,group=0,value=
type=match,enable=true,priority=800,prefix=,suffix=-bookworm,pattern=\d+.\d+,group=0,value=
type=match,enable=${{ !startsWith(github.ref, 'refs/tags/0.') && !startsWith(github.ref, 'refs/tags/v0.') && !startsWith(github.ref, 'refs/tags/V0.') && !startsWith(github.ref, 'refs/tags/debian-0.') && !startsWith(github.ref, 'refs/tags/debian-v0.') && !startsWith(github.ref, 'refs/tags/debian-V0.') }},priority=800,prefix=,suffix=-bookworm,pattern=\d+,group=0,value=
env:
DOCKER_METADATA_ANNOTATIONS_LEVELS: manifest,index
- name: Build and push
uses: docker/build-push-action@v6.11.0
with:
context: debian/frpc
build-args: |
"http_proxy=${{ env.http_proxy }}"
"https_proxy=${{ env.http_proxy }}"
BUILDTIME=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.created'] }}
VERSION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }}
REVISION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }}
platforms: linux/386,linux/amd64,linux/arm/v5,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x
# platforms: linux/386,linux/amd64,linux/arm/v5,linux/arm/v7,linux/arm64,linux/mips64le,linux/ppc64le,linux/s390x
push: ${{ github.event_name != 'pull_request' && !startsWith(github.ref, 'refs/heads/feat/') && !startsWith(github.ref, 'refs/heads/feature/') && !startsWith(github.ref, 'refs/heads/fix/') && !startsWith(github.ref, 'refs/heads/pr/') }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
annotations: ${{ steps.meta.outputs.annotations }}
cache-from: type=gha
cache-to: type=gha,mode=max