Skip to content

Commit dc2a4db

Browse files
committed
gateway ami 1
1 parent 7750a63 commit dc2a4db

3 files changed

Lines changed: 243 additions & 138 deletions

File tree

.github/workflows/release.yml

Lines changed: 168 additions & 138 deletions
Original file line numberDiff line numberDiff line change
@@ -1,88 +1,97 @@
11
name: Publish
22
on:
33
push:
4-
tags:
5-
- v*.*.*
4+
# tags:
5+
# - v*.*.*
6+
branches:
7+
- gateway-ami
68

79
concurrency:
810
group: ${{ github.workflow }}-${{ github.ref }}
911
cancel-in-progress: true
1012

1113
jobs:
12-
build-docker-release:
13-
# Ignore tags with -, like v1.0.0-alpha
14-
# This job will build the docker container with the "latest" tag which
15-
# is a tag used in production, thus it should only be run for full releases.
16-
if: startsWith(github.ref, 'refs/tags/') && !contains(github.ref, '-')
17-
name: Build Release Docker image
18-
uses: ./.github/workflows/build-docker.yml
19-
with:
20-
tags: |
21-
type=raw,value=latest
22-
type=semver,pattern={{version}}
23-
type=semver,pattern={{major}}.{{minor}}
24-
type=sha
25-
26-
build-docker-prerelease:
27-
# Only build tags with -, like v1.0.0-alpha
28-
if: startsWith(github.ref, 'refs/tags/') && contains(github.ref, '-')
29-
name: Build Pre-release Docker image
30-
uses: ./.github/workflows/build-docker.yml
31-
with:
32-
tags: |
33-
type=raw,value=pre-release
34-
type=semver,pattern={{version}}
35-
type=sha
36-
# Explicitly disable latest tag. It will be added otherwise.
37-
flavor: |
38-
latest=false
39-
40-
create-release:
41-
name: create-release
42-
runs-on: self-hosted
43-
outputs:
44-
upload_url: ${{ steps.release.outputs.upload_url }}
45-
steps:
46-
- name: Create GitHub release
47-
id: release
48-
uses: softprops/action-gh-release@v1
49-
if: startsWith(github.ref, 'refs/tags/')
50-
with:
51-
draft: true
52-
generate_release_notes: true
14+
# build-docker-release:
15+
# # Ignore tags with -, like v1.0.0-alpha
16+
# # This job will build the docker container with the "latest" tag which
17+
# # is a tag used in production, thus it should only be run for full releases.
18+
# if: startsWith(github.ref, 'refs/tags/') && !contains(github.ref, '-')
19+
# name: Build Release Docker image
20+
# uses: ./.github/workflows/build-docker.yml
21+
# with:
22+
# tags: |
23+
# type=raw,value=latest
24+
# type=semver,pattern={{version}}
25+
# type=semver,pattern={{major}}.{{minor}}
26+
# type=sha
27+
28+
# build-docker-prerelease:
29+
# # Only build tags with -, like v1.0.0-alpha
30+
# if: startsWith(github.ref, 'refs/tags/') && contains(github.ref, '-')
31+
# name: Build Pre-release Docker image
32+
# uses: ./.github/workflows/build-docker.yml
33+
# with:
34+
# tags: |
35+
# type=raw,value=pre-release
36+
# type=semver,pattern={{version}}
37+
# type=sha
38+
# # Explicitly disable latest tag. It will be added otherwise.
39+
# flavor: |
40+
# latest=false
41+
42+
# create-release:
43+
# name: create-release
44+
# runs-on: self-hosted
45+
# outputs:
46+
# upload_url: ${{ steps.release.outputs.upload_url }}
47+
# steps:
48+
# - name: Create GitHub release
49+
# id: release
50+
# uses: softprops/action-gh-release@v1
51+
# if: startsWith(github.ref, 'refs/tags/')
52+
# with:
53+
# draft: true
54+
# generate_release_notes: true
5355

5456
build-release:
5557
name: Release ${{ matrix.build }}
56-
needs: [create-release]
58+
# needs: [create-release]
5759
runs-on:
5860
- self-hosted
5961
- ${{ matrix.os }}
6062
- X64
6163
strategy:
6264
fail-fast: false
6365
matrix:
64-
build: [linux, linux-arm64, freebsd]
66+
# build: [linux, linux-arm64, freebsd]
67+
build: [linux]
6568
include:
6669
- build: linux
6770
arch: amd64
6871
os: Linux
6972
asset_name: defguard-gateway-linux-x86_64
7073
target: x86_64-unknown-linux-gnu
71-
- build: linux-arm64
72-
arch: arm64
73-
os: Linux
74-
asset_name: defguard-gateway-linux-arm64
75-
target: aarch64-unknown-linux-gnu
76-
- build: freebsd
77-
arch: amd64
78-
os: Linux
79-
asset_name: defguard-gateway-freebsd-x86_64
80-
target: x86_64-unknown-freebsd
74+
# - build: linux-arm64
75+
# arch: arm64
76+
# os: Linux
77+
# asset_name: defguard-gateway-linux-arm64
78+
# target: aarch64-unknown-linux-gnu
79+
# - build: freebsd
80+
# arch: amd64
81+
# os: Linux
82+
# asset_name: defguard-gateway-freebsd-x86_64
83+
# target: x86_64-unknown-freebsd
8184
steps:
8285
# Store the version, stripping any v-prefix
86+
# - name: Write release version
87+
# run: |
88+
# VERSION=${GITHUB_REF_NAME#v}
89+
# echo Version: $VERSION
90+
# echo "VERSION=$VERSION" >> $GITHUB_ENV
91+
8392
- name: Write release version
8493
run: |
85-
VERSION=${GITHUB_REF_NAME#v}
94+
VERSION=1.5.0
8695
echo Version: $VERSION
8796
echo "VERSION=$VERSION" >> $GITHUB_ENV
8897
@@ -98,6 +107,10 @@ jobs:
98107
target: ${{ matrix.target }}
99108
override: true
100109

110+
- name: Setup `packer`
111+
uses: hashicorp/setup-packer@main
112+
id: setup
113+
101114
- name: Build release binary
102115
uses: actions-rs/cargo@v1
103116
with:
@@ -116,15 +129,15 @@ jobs:
116129
${{ matrix.asset_name }}-${{ github.ref_name }}
117130
outPath: ${{ matrix.asset_name }}-${{ github.ref_name }}-${{ matrix.target }}.tar.gz
118131

119-
- name: Upload release archive
120-
uses: actions/upload-release-asset@v1
121-
env:
122-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
123-
with:
124-
upload_url: ${{ needs.create-release.outputs.upload_url }}
125-
asset_path: ${{ matrix.asset_name }}-${{ github.ref_name }}-${{ matrix.target }}.tar.gz
126-
asset_name: ${{ matrix.asset_name }}-${{ github.ref_name }}-${{ matrix.target }}.tar.gz
127-
asset_content_type: application/octet-stream
132+
# - name: Upload release archive
133+
# uses: actions/upload-release-asset@v1
134+
# env:
135+
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
136+
# with:
137+
# upload_url: ${{ needs.create-release.outputs.upload_url }}
138+
# asset_path: ${{ matrix.asset_name }}-${{ github.ref_name }}-${{ matrix.target }}.tar.gz
139+
# asset_name: ${{ matrix.asset_name }}-${{ github.ref_name }}-${{ matrix.target }}.tar.gz
140+
# asset_content_type: application/octet-stream
128141

129142
- name: Build DEB package
130143
if: matrix.build != 'freebsd'
@@ -133,77 +146,94 @@ jobs:
133146
fpm_args: "${{ matrix.asset_name }}-${{ github.ref_name }}=/usr/sbin/defguard-gateway defguard-gateway.service=/usr/lib/systemd/system/defguard-gateway.service example-config.toml=/etc/defguard/gateway.toml.sample"
134147
fpm_opts: "--architecture ${{ matrix.arch }} --debug --output-type deb --version ${{ env.VERSION }} --package defguard-gateway_${{ env.VERSION }}_${{ matrix.target }}.deb --after-install after-install.sh"
135148

136-
- name: Upload DEB
137-
if: matrix.build != 'freebsd'
138-
uses: actions/upload-release-asset@v1
139-
env:
140-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
141-
with:
142-
upload_url: ${{ needs.create-release.outputs.upload_url }}
143-
asset_path: defguard-gateway_${{ env.VERSION }}_${{ matrix.target }}.deb
144-
asset_name: defguard-gateway_${{ env.VERSION }}_${{ matrix.target }}.deb
145-
asset_content_type: application/octet-stream
146-
147-
- name: Build RPM package
148-
if: matrix.build == 'linux'
149-
uses: defGuard/fpm-action@main
150-
with:
151-
fpm_args: "${{ matrix.asset_name }}-${{ github.ref_name }}=/usr/sbin/defguard-gateway defguard-gateway.service=/usr/lib/systemd/system/defguard-gateway.service example-config.toml=/etc/defguard/gateway.toml.sample"
152-
fpm_opts: "--architecture ${{ matrix.arch }} --debug --output-type rpm --version ${{ env.VERSION }} --package defguard-gateway_${{ env.VERSION }}_${{ matrix.target }}.rpm --after-install after-install.sh"
153-
154-
- name: Upload RPM
155-
if: matrix.build == 'linux'
156-
uses: actions/upload-release-asset@v1
157-
env:
158-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
159-
with:
160-
upload_url: ${{ needs.create-release.outputs.upload_url }}
161-
asset_path: defguard-gateway_${{ env.VERSION }}_${{ matrix.target }}.rpm
162-
asset_name: defguard-gateway_${{ env.VERSION }}_${{ matrix.target }}.rpm
163-
asset_content_type: application/octet-stream
164-
165-
- name: Build FreeBSD package
166-
if: matrix.build == 'freebsd'
167-
uses: defGuard/fpm-action@main
168-
with:
169-
fpm_args:
170-
"${{ matrix.asset_name }}-${{ github.ref_name }}=/usr/local/sbin/defguard-gateway
171-
defguard-gateway.service.freebsd=/usr/local/etc/rc.d/defguard_gateway
172-
example-config.toml=/etc/defguard/gateway.toml.sample
173-
defguard-rc.conf=/etc/rc.conf.d/defguard_gateway"
174-
fpm_opts: "--architecture ${{ matrix.arch }} --debug --output-type freebsd --version ${{ env.VERSION }} --package defguard-gateway_${{ env.VERSION }}_${{ matrix.target }}.pkg --freebsd-osversion '*'"
175-
176-
- name: Upload FreeBSD
177-
if: matrix.build == 'freebsd'
178-
uses: actions/upload-release-asset@v1
179-
env:
180-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
181-
with:
182-
upload_url: ${{ needs.create-release.outputs.upload_url }}
183-
asset_path: defguard-gateway_${{ env.VERSION }}_${{ matrix.target }}.pkg
184-
asset_name: defguard-gateway_${{ env.VERSION }}_${{ matrix.target }}.pkg
185-
asset_content_type: application/octet-stream
186-
187-
- name: Build OPNsense package
188-
if: matrix.build == 'freebsd'
189-
uses: defGuard/fpm-action@main
190-
with:
191-
fpm_args:
192-
"${{ matrix.asset_name }}-${{ github.ref_name }}=/usr/local/sbin/defguard-gateway
193-
defguard-gateway.service.freebsd=/usr/local/etc/rc.d/defguard_gateway
194-
example-config.toml=/etc/defguard/gateway.toml.sample
195-
defguard-rc.conf=/etc/rc.conf.d/defguard_gateway
196-
opnsense/src/etc/=/usr/local/etc/
197-
opnsense/src/opnsense/=/usr/local/opnsense/"
198-
fpm_opts: "--architecture ${{ matrix.arch }} --debug --output-type freebsd --version ${{ env.VERSION }} --package defguard-gateway_${{ env.VERSION }}_x86_64-unknown-opnsense.pkg --freebsd-osversion '*'"
199-
200-
- name: Upload OPNsense package
201-
if: matrix.build == 'freebsd'
202-
uses: actions/upload-release-asset@v1
149+
# - name: Upload DEB
150+
# if: matrix.build != 'freebsd'
151+
# uses: actions/upload-release-asset@v1
152+
# env:
153+
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
154+
# with:
155+
# upload_url: ${{ needs.create-release.outputs.upload_url }}
156+
# asset_path: defguard-gateway_${{ env.VERSION }}_${{ matrix.target }}.deb
157+
# asset_name: defguard-gateway_${{ env.VERSION }}_${{ matrix.target }}.deb
158+
# asset_content_type: application/octet-stream
159+
160+
- name: Run `packer init`
161+
if: matrix.build == 'linux' && matrix.arch == 'amd64'
162+
id: init
163+
run: "packer init ./images/ami/gateway.pkr.hcl"
164+
165+
- name: Run `packer validate`
166+
if: matrix.build == 'linux' && matrix.arch == 'amd64'
167+
id: validate
168+
run: packer validate --var "package_version=${{ env.VERSION }}" ./images/ami/gateway.pkr.hcl
169+
170+
- name: Build AMI image
171+
if: matrix.build == 'linux' && matrix.arch == 'amd64'
172+
run: packer build -color=false -on-error=abort --var "package_version=${{ env.VERSION }}" ./images/ami/gateway.pkr.hcl
203173
env:
204-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
205-
with:
206-
upload_url: ${{ needs.create-release.outputs.upload_url }}
207-
asset_path: defguard-gateway_${{ env.VERSION }}_x86_64-unknown-opnsense.pkg
208-
asset_name: defguard-gateway_${{ env.VERSION }}_x86_64-unknown-opnsense.pkg
209-
asset_content_type: application/octet-stream
174+
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
175+
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
176+
177+
# - name: Build RPM package
178+
# if: matrix.build == 'linux'
179+
# uses: defGuard/fpm-action@main
180+
# with:
181+
# fpm_args: "${{ matrix.asset_name }}-${{ github.ref_name }}=/usr/sbin/defguard-gateway defguard-gateway.service=/usr/lib/systemd/system/defguard-gateway.service example-config.toml=/etc/defguard/gateway.toml.sample"
182+
# fpm_opts: "--architecture ${{ matrix.arch }} --debug --output-type rpm --version ${{ env.VERSION }} --package defguard-gateway_${{ env.VERSION }}_${{ matrix.target }}.rpm --after-install after-install.sh"
183+
184+
# - name: Upload RPM
185+
# if: matrix.build == 'linux'
186+
# uses: actions/upload-release-asset@v1
187+
# env:
188+
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
189+
# with:
190+
# upload_url: ${{ needs.create-release.outputs.upload_url }}
191+
# asset_path: defguard-gateway_${{ env.VERSION }}_${{ matrix.target }}.rpm
192+
# asset_name: defguard-gateway_${{ env.VERSION }}_${{ matrix.target }}.rpm
193+
# asset_content_type: application/octet-stream
194+
195+
# - name: Build FreeBSD package
196+
# if: matrix.build == 'freebsd'
197+
# uses: defGuard/fpm-action@main
198+
# with:
199+
# fpm_args:
200+
# "${{ matrix.asset_name }}-${{ github.ref_name }}=/usr/local/sbin/defguard-gateway
201+
# defguard-gateway.service.freebsd=/usr/local/etc/rc.d/defguard_gateway
202+
# example-config.toml=/etc/defguard/gateway.toml.sample
203+
# defguard-rc.conf=/etc/rc.conf.d/defguard_gateway"
204+
# fpm_opts: "--architecture ${{ matrix.arch }} --debug --output-type freebsd --version ${{ env.VERSION }} --package defguard-gateway_${{ env.VERSION }}_${{ matrix.target }}.pkg --freebsd-osversion '*'"
205+
206+
# - name: Upload FreeBSD
207+
# if: matrix.build == 'freebsd'
208+
# uses: actions/upload-release-asset@v1
209+
# env:
210+
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
211+
# with:
212+
# upload_url: ${{ needs.create-release.outputs.upload_url }}
213+
# asset_path: defguard-gateway_${{ env.VERSION }}_${{ matrix.target }}.pkg
214+
# asset_name: defguard-gateway_${{ env.VERSION }}_${{ matrix.target }}.pkg
215+
# asset_content_type: application/octet-stream
216+
217+
# - name: Build OPNsense package
218+
# if: matrix.build == 'freebsd'
219+
# uses: defGuard/fpm-action@main
220+
# with:
221+
# fpm_args:
222+
# "${{ matrix.asset_name }}-${{ github.ref_name }}=/usr/local/sbin/defguard-gateway
223+
# defguard-gateway.service.freebsd=/usr/local/etc/rc.d/defguard_gateway
224+
# example-config.toml=/etc/defguard/gateway.toml.sample
225+
# defguard-rc.conf=/etc/rc.conf.d/defguard_gateway
226+
# opnsense/src/etc/=/usr/local/etc/
227+
# opnsense/src/opnsense/=/usr/local/opnsense/"
228+
# fpm_opts: "--architecture ${{ matrix.arch }} --debug --output-type freebsd --version ${{ env.VERSION }} --package defguard-gateway_${{ env.VERSION }}_x86_64-unknown-opnsense.pkg --freebsd-osversion '*'"
229+
230+
# - name: Upload OPNsense package
231+
# if: matrix.build == 'freebsd'
232+
# uses: actions/upload-release-asset@v1
233+
# env:
234+
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
235+
# with:
236+
# upload_url: ${{ needs.create-release.outputs.upload_url }}
237+
# asset_path: defguard-gateway_${{ env.VERSION }}_x86_64-unknown-opnsense.pkg
238+
# asset_name: defguard-gateway_${{ env.VERSION }}_x86_64-unknown-opnsense.pkg
239+
# asset_content_type: application/octet-stream

0 commit comments

Comments
 (0)