mirror of
https://github.com/Threnklyn/wg-ui.git
synced 2026-06-07 14:03:33 +02:00
CI Overhaul (#83)
Multiple changes made to the CI workflow. Docker images are now built for AMD64, ARM64 and ARMv7 Docker images are now built for each release and published on docker hub Release workflow now successfully create release and upload assets Added ARM64 to list of binaries compiled during release
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
name: Review & Build
|
name: PR
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches-ignore: master
|
branches-ignore: master
|
||||||
@@ -7,10 +7,10 @@ on:
|
|||||||
- master
|
- master
|
||||||
jobs:
|
jobs:
|
||||||
review:
|
review:
|
||||||
name: Review code
|
name: Code Review
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@master
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Use Node.js
|
- name: Use Node.js
|
||||||
uses: actions/setup-node@v1
|
uses: actions/setup-node@v1
|
||||||
@@ -40,7 +40,7 @@ jobs:
|
|||||||
- name: Check suspicious constructs (1)
|
- name: Check suspicious constructs (1)
|
||||||
uses: "cedrickring/golang-action@1.5.2"
|
uses: "cedrickring/golang-action@1.5.2"
|
||||||
with:
|
with:
|
||||||
args: go get honnef.co/go/tools/cmd/staticcheck; staticcheck -checks all,-ST1003,-U1000,-ST1005 ./... # have to disable ST1003,U1000,ST1005 due to the generated code
|
args: go get -u honnef.co/go/tools/cmd/staticcheck; staticcheck -checks all,-ST1003,-U1000,-ST1005 ./... # have to disable ST1003,U1000,ST1005 due to the generated code
|
||||||
|
|
||||||
- name: Check suspicious constructs (2)
|
- name: Check suspicious constructs (2)
|
||||||
uses: "cedrickring/golang-action@1.5.2"
|
uses: "cedrickring/golang-action@1.5.2"
|
||||||
@@ -51,27 +51,30 @@ jobs:
|
|||||||
uses: "cedrickring/golang-action@1.5.2"
|
uses: "cedrickring/golang-action@1.5.2"
|
||||||
with:
|
with:
|
||||||
# TODO: remove `-exclude=G110` once https://github.com/go-bindata/go-bindata/pull/50 is merged and released
|
# TODO: remove `-exclude=G110` once https://github.com/go-bindata/go-bindata/pull/50 is merged and released
|
||||||
args: go get github.com/securego/gosec/cmd/gosec; gosec -exclude=G110 ./... # https://github.com/securego/gosec
|
args: go get -u github.com/securego/gosec/cmd/gosec; gosec -exclude=G110 ./... # https://github.com/securego/gosec
|
||||||
|
|
||||||
build:
|
build:
|
||||||
name: Build code
|
name: Build wg-ui
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@master
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Clean out old builds from disk
|
- name: Setup NodeJS
|
||||||
run: |
|
uses: actions/setup-node@v1
|
||||||
df -h / && df -h /mnt
|
with:
|
||||||
sudo apt-get clean -qq
|
node-verison: '12.x'
|
||||||
sudo apt-get autoclean -qq
|
|
||||||
docker rmi $(docker image ls -aq)
|
|
||||||
df -h / && df -h /mnt
|
|
||||||
|
|
||||||
- name: Install buildah
|
- name: Setup Go
|
||||||
run: |
|
uses: actions/setup-go@v2
|
||||||
sudo apt-get install -qq -y software-properties-common
|
with:
|
||||||
sudo apt-get update -qq
|
go-version: '1.14'
|
||||||
sudo apt-get -qq -y install buildah
|
|
||||||
|
|
||||||
- name: Build the Docker image
|
- name: Build binary
|
||||||
run: buildah bud --format=docker --layers -f Dockerfile .
|
run: make build
|
||||||
|
|
||||||
|
- name: Check binary
|
||||||
|
run: file bin/wireguard-ui
|
||||||
|
|
||||||
|
- name: Cleanup
|
||||||
|
run: rm -rf bin/
|
||||||
|
|||||||
+100
-116
@@ -1,127 +1,111 @@
|
|||||||
name: Build & Release
|
name: Main
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
docker-build:
|
||||||
name: Build
|
name: Docker
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v1
|
-
|
||||||
- name: Install buildah
|
name: Checkout
|
||||||
run: |
|
uses: actions/checkout@v2
|
||||||
sudo apt-get install -qq -y software-properties-common
|
-
|
||||||
sudo apt-get update -qq
|
name: Prepare
|
||||||
sudo apt-get -qq -y install buildah
|
id: prepare
|
||||||
- name: Free disk space
|
run: |
|
||||||
run: |
|
DOCKER_IMAGE=embarkstudios/wireguard-ui
|
||||||
df -h / && df -h /mnt
|
DOCKER_PLATFORMS=linux/amd64,linux/arm64,linux/arm/v7
|
||||||
sudo apt-get clean -qq
|
VERSION=latest
|
||||||
sudo apt-get autoclean -qq
|
|
||||||
docker rmi $(docker image ls -aq)
|
|
||||||
df -h / && df -h /mnt
|
|
||||||
- name: Build & push the Docker image
|
|
||||||
env:
|
|
||||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
|
||||||
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
|
||||||
run: |
|
|
||||||
buildah bud --format=docker --layers -t embarkstudios/wireguard-ui:latest -t embarkstudios/wireguard-ui:$GITHUB_SHA -f Dockerfile .
|
|
||||||
buildah push --creds $DOCKER_USERNAME:$DOCKER_PASSWORD --format=v2s2 embarkstudios/wireguard-ui
|
|
||||||
|
|
||||||
release:
|
TAGS="--tag ${DOCKER_IMAGE}:${VERSION}"
|
||||||
name: Release
|
echo ::set-output name=docker_image::${DOCKER_IMAGE}
|
||||||
needs: build
|
echo ::set-output name=version::${VERSION}
|
||||||
if: startsWith(github.ref, 'refs/tags/')
|
echo ::set-output name=buildx_args::--platform ${DOCKER_PLATFORMS} \
|
||||||
|
--build-arg VERSION=${VERSION} \
|
||||||
|
${TAGS} --file Dockerfile .
|
||||||
|
-
|
||||||
|
name: Set up Docker Buildx
|
||||||
|
uses: crazy-max/ghaction-docker-buildx@master
|
||||||
|
-
|
||||||
|
name: Docker Buildx (build)
|
||||||
|
run: |
|
||||||
|
docker buildx build --output "type=image,push=false" ${{ steps.prepare.outputs.buildx_args }}
|
||||||
|
-
|
||||||
|
name: Docker Login
|
||||||
|
if: success()
|
||||||
|
env:
|
||||||
|
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||||
|
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
|
run: |
|
||||||
|
echo "${DOCKER_PASSWORD}" | docker login --username "${DOCKER_USERNAME}" --password-stdin
|
||||||
|
-
|
||||||
|
name: Docker Buildx (push)
|
||||||
|
if: success()
|
||||||
|
run: |
|
||||||
|
docker buildx build --output "type=image,push=true" ${{ steps.prepare.outputs.buildx_args }}
|
||||||
|
-
|
||||||
|
name: Docker Check Manifest
|
||||||
|
if: always()
|
||||||
|
run: |
|
||||||
|
docker run --rm mplatform/mquery ${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }}
|
||||||
|
-
|
||||||
|
name: Clear
|
||||||
|
if: always()
|
||||||
|
run: |
|
||||||
|
rm -f ${HOME}/.docker/config.json
|
||||||
|
|
||||||
|
docker-debug:
|
||||||
|
name: Debug
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@master
|
-
|
||||||
|
name: Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
-
|
||||||
|
name: Prepare
|
||||||
|
id: prepare
|
||||||
|
run: |
|
||||||
|
DOCKER_IMAGE=embarkstudios/wireguard-ui
|
||||||
|
DOCKER_PLATFORMS=linux/amd64,linux/arm64,linux/arm/v7
|
||||||
|
VERSION=debug
|
||||||
|
|
||||||
- name: Setup NodeJS
|
TAGS="--tag ${DOCKER_IMAGE}:${VERSION}"
|
||||||
uses: actions/setup-node@v1
|
echo ::set-output name=docker_image::${DOCKER_IMAGE}
|
||||||
with:
|
echo ::set-output name=version::${VERSION}
|
||||||
node-verison: '12.x'
|
echo ::set-output name=buildx_args::--platform ${DOCKER_PLATFORMS} \
|
||||||
|
--build-arg VERSION=${VERSION} \
|
||||||
- name: npm install & build
|
${TAGS} --file Dockerfile.debug .
|
||||||
run: |
|
-
|
||||||
make ui
|
name: Set up Buildx
|
||||||
|
uses: crazy-max/ghaction-docker-buildx@master
|
||||||
- name: Setup Go
|
-
|
||||||
uses: actions/setup-go@v2
|
name: Bocker Buildx (build)
|
||||||
with:
|
run: |
|
||||||
go-version: '1.14'
|
docker buildx build --output "type=image,push=false" ${{ steps.prepare.outputs.buildx_args }}
|
||||||
|
-
|
||||||
- name: Insert assets into go
|
name: Docker Login
|
||||||
run: |
|
if: success()
|
||||||
make assets
|
env:
|
||||||
|
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||||
- name: Build wg-ui for Linux (AMD64)
|
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
run: |
|
run: |
|
||||||
name=wg-ui
|
echo "${DOCKER_PASSWORD}" | docker login --username "${DOCKER_USERNAME}" --password-stdin
|
||||||
tag=$(git describe --tags --abbrev=0)
|
-
|
||||||
target=linux-amd64
|
name: Docker Buildx (push)
|
||||||
release_name="$name-$tag-$target"
|
if: success()
|
||||||
release_tar="$release_name.tar.gz"
|
run: |
|
||||||
env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o "$release_name"
|
docker buildx build --output "type=image,push=true" ${{ steps.prepare.outputs.buildx_args }}
|
||||||
tar czvf "$release_tar" "$release_name"
|
-
|
||||||
echo -n "$(shasum -ba 256 "${release_tar}" | cut -d " " -f 1)" > "${release_tar}.sha256"
|
name: Docker Check Manifest
|
||||||
rm "$release_name"
|
if: always()
|
||||||
|
run: |
|
||||||
- name: Build wg-ui for Linux (ARMv5)
|
docker run --rm mplatform/mquery ${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }}
|
||||||
run: |
|
-
|
||||||
name=wg-ui
|
name: Clear
|
||||||
tag=$(git describe --tags --abbrev=0)
|
if: always()
|
||||||
target=linux-armv5
|
run: |
|
||||||
release_name="$name-$tag-$target"
|
rm -f ${HOME}/.docker/config.json
|
||||||
release_tar="$release_name.tar.gz"
|
|
||||||
env CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=5 go build -o "$release_name"
|
|
||||||
tar czvf "$release_tar" "$release_name"
|
|
||||||
echo -n "$(shasum -ba 256 "${release_tar}" | cut -d " " -f 1)" > "${release_tar}.sha256"
|
|
||||||
rm "$release_name"
|
|
||||||
|
|
||||||
- name: Build wg-ui for Linux (ARMv6)
|
|
||||||
run: |
|
|
||||||
name=wg-ui
|
|
||||||
tag=$(git describe --tags --abbrev=0)
|
|
||||||
target=linux-armv6
|
|
||||||
release_name="$name-$tag-$target"
|
|
||||||
release_tar="$release_name.tar.gz"
|
|
||||||
env CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=6 go build -o "$release_name"
|
|
||||||
tar czvf "$release_tar" "$release_name"
|
|
||||||
echo -n "$(shasum -ba 256 "${release_tar}" | cut -d " " -f 1)" > "${release_tar}.sha256"
|
|
||||||
rm "$release_name"
|
|
||||||
|
|
||||||
- name: Build wg-ui for Linux (ARMv7)
|
|
||||||
run: |
|
|
||||||
name=wg-ui
|
|
||||||
tag=$(git describe --tags --abbrev=0)
|
|
||||||
target=linux-armv7
|
|
||||||
release_name="$name-$tag-$target"
|
|
||||||
release_tar="$release_name.tar.gz"
|
|
||||||
env CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build -o "$release_name"
|
|
||||||
tar czvf "$release_tar" "$release_name"
|
|
||||||
echo -n "$(shasum -ba 256 "${release_tar}" | cut -d " " -f 1)" > "${release_tar}.sha256"
|
|
||||||
rm "$release_name"
|
|
||||||
|
|
||||||
- name: Install buildah
|
|
||||||
run: |
|
|
||||||
sudo apt-get install -qq -y software-properties-common
|
|
||||||
sudo apt-get update -qq
|
|
||||||
sudo apt-get -qq -y install buildah
|
|
||||||
|
|
||||||
- name: Build & push wg-ui to docker hub
|
|
||||||
env:
|
|
||||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
|
||||||
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
|
||||||
run: |
|
|
||||||
tag=$(git describe --tags --abbrev=0)
|
|
||||||
buildah bud --format=docker --layers -t embarkstudios/wireguard-ui:$tag -t embarkstudios/wireguard-ui:$GITHUB_SHA -f Dockerfile .
|
|
||||||
buildah push --creds $DOCKER_USERNAME:$DOCKER_PASSWORD --format=v2s2 embarkstudios/wireguard-ui
|
|
||||||
|
|
||||||
- name: Publish release
|
|
||||||
uses: softprops/action-gh-release@v1
|
|
||||||
with:
|
|
||||||
draft: true
|
|
||||||
files: "wg-ui*"
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|||||||
@@ -0,0 +1,154 @@
|
|||||||
|
name: Release
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
tags:
|
||||||
|
- v*
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
release-docker:
|
||||||
|
name: Docker
|
||||||
|
if: startsWith(github.ref, 'refs/tags/')
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
-
|
||||||
|
name: Prepare
|
||||||
|
id: prepare
|
||||||
|
run: |
|
||||||
|
DOCKER_IMAGE=embarkstudios/wireguard-ui
|
||||||
|
DOCKER_PLATFORMS=linux/amd64,linux/arm64,linux/arm/v7
|
||||||
|
VERSION=${GITHUB_REF#refs/tags/v}
|
||||||
|
|
||||||
|
TAGS="--tag ${DOCKER_IMAGE}:${VERSION}"
|
||||||
|
echo ::set-output name=docker_image::${DOCKER_IMAGE}
|
||||||
|
echo ::set-output name=version::${VERSION}
|
||||||
|
echo ::set-output name=buildx_args::--platform ${DOCKER_PLATFORMS} \
|
||||||
|
--build-arg VERSION=${VERSION} \
|
||||||
|
${TAGS} --file Dockerfile .
|
||||||
|
-
|
||||||
|
name: Set up Docker Buildx
|
||||||
|
uses: crazy-max/ghaction-docker-buildx@master
|
||||||
|
-
|
||||||
|
name: Docker Buildx (build)
|
||||||
|
run: |
|
||||||
|
docker buildx build --output "type=image,push=false" ${{ steps.prepare.outputs.buildx_args }}
|
||||||
|
-
|
||||||
|
name: Docker Login
|
||||||
|
if: success()
|
||||||
|
env:
|
||||||
|
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||||
|
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
|
run: |
|
||||||
|
echo "${DOCKER_PASSWORD}" | docker login --username "${DOCKER_USERNAME}" --password-stdin
|
||||||
|
-
|
||||||
|
name: Docker Buildx (push)
|
||||||
|
if: success()
|
||||||
|
run: |
|
||||||
|
docker buildx build --output "type=image,push=true" ${{ steps.prepare.outputs.buildx_args }}
|
||||||
|
-
|
||||||
|
name: Docker Check Manifest
|
||||||
|
if: always()
|
||||||
|
run: |
|
||||||
|
docker run --rm mplatform/mquery ${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }}
|
||||||
|
-
|
||||||
|
name: Clear
|
||||||
|
if: always()
|
||||||
|
run: |
|
||||||
|
rm -f ${HOME}/.docker/config.json
|
||||||
|
|
||||||
|
release-binary:
|
||||||
|
name: Binary
|
||||||
|
if: startsWith(github.ref, 'refs/tags/')
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Setup NodeJS
|
||||||
|
uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-verison: '12.x'
|
||||||
|
|
||||||
|
- name: npm install & build
|
||||||
|
run: |
|
||||||
|
make ui
|
||||||
|
|
||||||
|
- name: Setup Go
|
||||||
|
uses: actions/setup-go@v2
|
||||||
|
with:
|
||||||
|
go-version: '1.14'
|
||||||
|
|
||||||
|
- name: Insert assets into go
|
||||||
|
run: |
|
||||||
|
make assets
|
||||||
|
|
||||||
|
- name: Build wg-ui for Linux (AMD64)
|
||||||
|
run: |
|
||||||
|
name=wg-ui
|
||||||
|
target=linux-amd64
|
||||||
|
release_name="$name-${GITHUB_REF#refs/tags/v}-$target"
|
||||||
|
release_tar="$release_name.tar.gz"
|
||||||
|
env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o "$release_name"
|
||||||
|
tar czvf "$release_tar" "$release_name"
|
||||||
|
echo -n "$(shasum -ba 256 "${release_tar}" | cut -d " " -f 1)" > "${release_tar}.sha256"
|
||||||
|
rm "$release_name"
|
||||||
|
|
||||||
|
- name: Build wg-ui for Linux (ARMv5)
|
||||||
|
run: |
|
||||||
|
name=wg-ui
|
||||||
|
target=linux-armv5
|
||||||
|
release_name="$name-${GITHUB_REF#refs/tags/v}-$target"
|
||||||
|
release_tar="$release_name.tar.gz"
|
||||||
|
env CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=5 go build -o "$release_name"
|
||||||
|
tar czvf "$release_tar" "$release_name"
|
||||||
|
echo -n "$(shasum -ba 256 "${release_tar}" | cut -d " " -f 1)" > "${release_tar}.sha256"
|
||||||
|
rm "$release_name"
|
||||||
|
|
||||||
|
- name: Build wg-ui for Linux (ARMv6)
|
||||||
|
run: |
|
||||||
|
name=wg-ui
|
||||||
|
target=linux-armv6
|
||||||
|
release_name="$name-${GITHUB_REF#refs/tags/v}-$target"
|
||||||
|
release_tar="$release_name.tar.gz"
|
||||||
|
env CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=6 go build -o "$release_name"
|
||||||
|
tar czvf "$release_tar" "$release_name"
|
||||||
|
echo -n "$(shasum -ba 256 "${release_tar}" | cut -d " " -f 1)" > "${release_tar}.sha256"
|
||||||
|
rm "$release_name"
|
||||||
|
|
||||||
|
- name: Build wg-ui for Linux (ARMv7)
|
||||||
|
run: |
|
||||||
|
name=wg-ui
|
||||||
|
target=linux-armv7
|
||||||
|
release_name="$name-${GITHUB_REF#refs/tags/v}-$target"
|
||||||
|
release_tar="$release_name.tar.gz"
|
||||||
|
env CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build -o "$release_name"
|
||||||
|
tar czvf "$release_tar" "$release_name"
|
||||||
|
echo -n "$(shasum -ba 256 "${release_tar}" | cut -d " " -f 1)" > "${release_tar}.sha256"
|
||||||
|
rm "$release_name"
|
||||||
|
|
||||||
|
- name: Build wg-ui for Linux (ARM64)
|
||||||
|
run: |
|
||||||
|
name=wg-ui
|
||||||
|
target=linux-arm64
|
||||||
|
release_name="$name-${GITHUB_REF#refs/tags/v}-$target"
|
||||||
|
release_tar="$release_name.tar.gz"
|
||||||
|
env CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o "$release_name"
|
||||||
|
tar czvf "$release_tar" "$release_name"
|
||||||
|
echo -n "$(shasum -ba 256 "${release_tar}" | cut -d " " -f 1)" > "${release_tar}.sha256"
|
||||||
|
rm "$release_name"
|
||||||
|
|
||||||
|
- name: List content
|
||||||
|
run: |
|
||||||
|
ls -lah wg-ui*
|
||||||
|
|
||||||
|
- name: GitHub Release
|
||||||
|
uses: softprops/action-gh-release@master
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
draft: true
|
||||||
|
files: "wg-ui-*"
|
||||||
Reference in New Issue
Block a user