Merge pull request #28 from 0xJacky/docker-actions

Docker actions
This commit is contained in:
Jacky 2022-08-05 15:44:32 +08:00 committed by GitHub
commit c8b1110c7e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -32,70 +32,70 @@ jobs:
build_frontend:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Checkout
uses: actions/checkout@v2
- name: Set up nodejs
uses: actions/setup-node@v2
with:
node-version: '18.x'
cache: 'yarn'
cache-dependency-path: 'frontend/yarn.lock'
- name: Set up nodejs
uses: actions/setup-node@v2
with:
node-version: '18.x'
cache: 'yarn'
cache-dependency-path: 'frontend/yarn.lock'
- name: Install dependencies
run: yarn install
working-directory: frontend
- name: Install dependencies
run: yarn install
working-directory: frontend
- name: Update tranlations
run: yarn gettext:compile
working-directory: frontend
- name: Update translations
run: yarn gettext:compile
working-directory: frontend
- name: Build
run: |
npx browserslist@latest --update-db
yarn build
working-directory: frontend
- name: Build
run: |
npx browserslist@latest --update-db
yarn build
working-directory: frontend
- name: Archive frontend artifacts
uses: actions/upload-artifact@v2
with:
name: frontend-dist
path: frontend/dist
- name: Archive frontend artifacts
uses: actions/upload-artifact@v2
with:
name: frontend-dist
path: frontend/dist
- name: Prepare publish
if: github.event_name == 'release'
run: |
cp README*.md frontend/dist
find frontend/dist -printf '%P\n' | tar -C frontend/dist --no-recursion -zcvf frontend-dist.tar.gz -T -
- name: Prepare publish
if: github.event_name == 'release'
run: |
cp README*.md frontend/dist
find frontend/dist -printf '%P\n' | tar -C frontend/dist --no-recursion -zcvf frontend-dist.tar.gz -T -
- name: Publish
uses: softprops/action-gh-release@v1
if: github.event_name == 'release'
with:
files: frontend-dist.tar.gz
- name: Publish
uses: softprops/action-gh-release@v1
if: github.event_name == 'release'
with:
files: frontend-dist.tar.gz
build:
runs-on: ubuntu-latest
needs: build_frontend
strategy:
matrix:
goos: [linux, darwin]
goarch: [amd64, 386, arm64]
goos: [ linux, darwin ]
goarch: [ amd64, 386, arm64 ]
exclude:
# Exclude i386 on darwin.
- goarch: 386
goos: darwin
- goarch: 386
goos: darwin
include:
# BEGIN Linux ARM 5 6 7
- goos: linux
goarch: arm
goarm: 7
- goos: linux
goarch: arm
goarm: 6
- goos: linux
goarch: arm
goarm: 5
- goos: linux
goarch: arm
goarm: 7
- goos: linux
goarch: arm
goarm: 6
- goos: linux
goarch: arm
goarm: 5
# END Linux ARM 5 6 7
env:
CGO_ENABLED: 1
@ -103,77 +103,77 @@ jobs:
GOARCH: ${{ matrix.goarch }}
GOARM: ${{ matrix.goarm }}
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Checkout
uses: actions/checkout@v2
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: ^1.19.0
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: ^1.19.0
- name: Set up cache
uses: actions/cache@v2
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-${{ env.GOOS }}-${{ env.GOARCH }}${{ env.GOARM }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-${{ env.GOOS }}-${{ env.GOARCH }}${{ env.GOARM }}-go-
- name: Set up cache
uses: actions/cache@v2
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-${{ env.GOOS }}-${{ env.GOARCH }}${{ env.GOARM }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-${{ env.GOOS }}-${{ env.GOARCH }}${{ env.GOARM }}-go-
- name: Setup compiler environment
id: info
run: |
export _NAME=nginx-ui-$(jq ".$GOOS[\"$GOARCH$GOARM\"].name" -r < .github/build/build_info.json)
export _ARCH=$(jq ".$GOOS[\"$GOARCH$GOARM\"].arch" -r < .github/build/build_info.json)
export _ABI=$(jq ".$GOOS[\"$GOARCH$GOARM\"].abi // \"\"" -r < .github/build/build_info.json)
echo "GOOS: $GOOS, GOARCH: $GOARCH, GOARM: $GOARM, ABI: $_ABI, RELEASE_NAME: $_NAME"
echo "ARCH_NAME=$_ARCH" >> $GITHUB_ENV
echo "ABI=$_ABI" >> $GITHUB_ENV
echo "DIST=$_NAME" >> $GITHUB_ENV
- name: Setup compiler environment
id: info
run: |
export _NAME=nginx-ui-$(jq ".$GOOS[\"$GOARCH$GOARM\"].name" -r < .github/build/build_info.json)
export _ARCH=$(jq ".$GOOS[\"$GOARCH$GOARM\"].arch" -r < .github/build/build_info.json)
export _ABI=$(jq ".$GOOS[\"$GOARCH$GOARM\"].abi // \"\"" -r < .github/build/build_info.json)
echo "GOOS: $GOOS, GOARCH: $GOARCH, GOARM: $GOARM, ABI: $_ABI, RELEASE_NAME: $_NAME"
echo "ARCH_NAME=$_ARCH" >> $GITHUB_ENV
echo "ABI=$_ABI" >> $GITHUB_ENV
echo "DIST=$_NAME" >> $GITHUB_ENV
- name: Install musl cross compiler
if: env.GOOS == 'linux'
uses: Lesmiscore/musl-cross-compilers@v0.5
id: musl
with:
target: ${{ env.ARCH_NAME }}-linux-musl${{ env.ABI }}
- name: Install musl cross compiler
if: env.GOOS == 'linux'
uses: Lesmiscore/musl-cross-compilers@v0.5
id: musl
with:
target: ${{ env.ARCH_NAME }}-linux-musl${{ env.ABI }}
- name: Post install musl cross compiler
if: env.GOOS == 'linux'
run: |
echo "PATH=${{ steps.musl.outputs.path }}:$PATH" >> $GITHUB_ENV
echo "CC=${{ env.ARCH_NAME }}-linux-musl${{ env.ABI }}-gcc" >> $GITHUB_ENV
echo "CXX=${{ env.ARCH_NAME }}-linux-musl${{ env.ABI }}-g++" >> $GITHUB_ENV
echo "LD_FLAGS=--extldflags '-static'" >> $GITHUB_ENV
- name: Post install musl cross compiler
if: env.GOOS == 'linux'
run: |
echo "PATH=${{ steps.musl.outputs.path }}:$PATH" >> $GITHUB_ENV
echo "CC=${{ env.ARCH_NAME }}-linux-musl${{ env.ABI }}-gcc" >> $GITHUB_ENV
echo "CXX=${{ env.ARCH_NAME }}-linux-musl${{ env.ABI }}-g++" >> $GITHUB_ENV
echo "LD_FLAGS=--extldflags '-static'" >> $GITHUB_ENV
- name: Install darwin cross compiler
if: env.GOOS == 'darwin'
run: |
curl -L https://github.com/Hintay/crossosx/releases/latest/download/crossosx.tar.zst -o crossosx.tar.zst
tar xvaf crossosx.tar.zst
echo "LD_LIBRARY_PATH=$(pwd)/crossosx/lib/" >> $GITHUB_ENV
echo "PATH=$(pwd)/crossosx/bin/:$PATH" >> $GITHUB_ENV
echo "CC=${{ env.ARCH_NAME }}-clang" >> $GITHUB_ENV
echo "CXX=${{ env.ARCH_NAME }}-clang++" >> $GITHUB_ENV
echo "LD_FLAGS=-s -w" >> $GITHUB_ENV
- name: Install darwin cross compiler
if: env.GOOS == 'darwin'
run: |
curl -L https://github.com/Hintay/crossosx/releases/latest/download/crossosx.tar.zst -o crossosx.tar.zst
tar xvaf crossosx.tar.zst
echo "LD_LIBRARY_PATH=$(pwd)/crossosx/lib/" >> $GITHUB_ENV
echo "PATH=$(pwd)/crossosx/bin/:$PATH" >> $GITHUB_ENV
echo "CC=${{ env.ARCH_NAME }}-clang" >> $GITHUB_ENV
echo "CXX=${{ env.ARCH_NAME }}-clang++" >> $GITHUB_ENV
echo "LD_FLAGS=-s -w" >> $GITHUB_ENV
- name: Download frontend artifacts
uses: actions/download-artifact@v2
with:
name: frontend-dist
path: frontend/dist
- name: Download frontend artifacts
uses: actions/download-artifact@v2
with:
name: frontend-dist
path: frontend/dist
- name: Build
run: |
mkdir -p dist
go build -ldflags "$LD_FLAGS -X 'github.com/0xJacky/Nginx-UI/server/settings.buildTime=$(date +%s)'" -o dist/nginx-ui -v main.go
- name: Build
run: |
mkdir -p dist
go build -ldflags "$LD_FLAGS -X 'github.com/0xJacky/Nginx-UI/server/settings.buildTime=$(date +%s)'" -o dist/nginx-ui -v main.go
- name: Archive backend artifacts
uses: actions/upload-artifact@v2
with:
name: ${{ env.DIST }}
path: dist/nginx-ui
- name: Archive backend artifacts
uses: actions/upload-artifact@v2
with:
name: ${{ env.DIST }}
path: dist/nginx-ui
- name: Prepare publish
if: github.event_name == 'release'
@ -186,3 +186,31 @@ jobs:
if: github.event_name == 'release'
with:
files: ${{ env.DIST }}.tar.gz
- name: Set up Docker Buildx
if: github.event_name == 'release' && env.GOOS == 'linux' && env.GOARCH == 'amd64'
id: buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
if: github.event_name == 'release' && env.GOOS == 'linux' && env.GOARCH == 'amd64'
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Prepare Dockerfile
if: github.event_name == 'release' && env.GOOS == 'linux' && env.GOARCH == 'amd64'
run: |
cp ./Dockerfile ./dist
- name: Build and push
if: github.event_name == 'release' && env.GOOS == 'linux' && env.GOARCH == 'amd64'
uses: docker/build-push-action@v2
with:
context: ./dist
file: ./dist/Dockerfile
platforms: linux/amd64
push: ${{ github.event_name != 'pull_request' }}
tags: |
uozi/nginx-ui:latest