mirror of
https://github.com/nspcc-dev/neo-go.git
synced 2024-11-26 09:42:22 +00:00
b8b85ce911
We build multiarch linux/amd64 and linux/arm64, because MacOS runner can't build docker images and even if it could that'd be linux/amd64 while we want linux/arm64 for Apple CPUs. Unfortunately, given the way GitHub workflows work we can't avoid using a Makefile helper, there is no easy way to set variables conditionally and/or use some logic to affect their contents. We reintroduce build_image_wsc as well here because Windows images can't be built with buildx using GitHub runners.
146 lines
3.5 KiB
YAML
146 lines
3.5 KiB
YAML
name: Build
|
|
|
|
on:
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
types: [opened, synchronize]
|
|
paths-ignore:
|
|
- 'scripts/**'
|
|
- '**/*.md'
|
|
workflow_dispatch:
|
|
inputs:
|
|
ref:
|
|
description: 'Ref to build CLI for Ubuntu and Windows Server Core [default: latest master; examples: v0.92.0, 0a4ff9d3e4a9ab432fd5812eb18c98e03b5a7432]'
|
|
required: false
|
|
default: ''
|
|
|
|
env:
|
|
GO111MODULE: "on"
|
|
|
|
jobs:
|
|
build_cli:
|
|
name: Build CLI
|
|
runs-on: ${{matrix.os}}
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-20.04, windows-2022, macos-12]
|
|
arch: [amd64, arm64]
|
|
exclude:
|
|
- os: windows-2022
|
|
arch: 'arm64'
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
ref: ${{ github.event.inputs.ref }}
|
|
# Allows to fetch all history for all branches and tags. Need this for proper versioning.
|
|
fetch-depth: 0
|
|
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: 1.18
|
|
|
|
- name: Restore Go modules from cache
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: /home/runner/go/pkg/mod
|
|
key: deps-${{ hashFiles('go.sum') }}
|
|
|
|
- name: Update Go modules
|
|
run: go mod download -json
|
|
|
|
- name: Build CLI
|
|
run: make build
|
|
env:
|
|
GOARCH: ${{ matrix.arch }}
|
|
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: neo-go-${{ matrix.os }}-${{ matrix.arch }}
|
|
path: ./bin/neo-go*
|
|
if-no-files-found: error
|
|
|
|
build_image:
|
|
needs: build_cli
|
|
name: Build Docker image
|
|
runs-on: ubuntu-20.04
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
ref: ${{ github.event.inputs.ref }}
|
|
fetch-depth: 0
|
|
|
|
- name: Set up QEMU
|
|
if: runner.os != 'Windows'
|
|
uses: docker/setup-qemu-action@v2
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v2
|
|
|
|
- name: Set vars
|
|
id: setvars
|
|
run: make gh-docker-vars
|
|
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v3
|
|
with:
|
|
push: false
|
|
platforms: linux/amd64,linux/arm64
|
|
build-args: |
|
|
REPO=${{ steps.setvars.outputs.repo }}
|
|
VERSION=${{ steps.setvars.outputs.version }}
|
|
tags: ${{ steps.setvars.outputs.repo }}:${{ steps.setvars.outputs.version }}${{ steps.setvars.outputs.suffix }}
|
|
|
|
build_image_wsc:
|
|
needs: build_cli
|
|
name: Build Docker image (Windows Server Core)
|
|
runs-on: windows-2022
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
ref: ${{ github.event.inputs.ref }}
|
|
fetch-depth: 0
|
|
|
|
# For proper `deps` make target execution.
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: 1.18
|
|
|
|
- name: Build Docker image
|
|
run: make image
|
|
|
|
build_privnet_image:
|
|
needs: build_cli
|
|
name: Build privnet Docker image
|
|
runs-on: ${{matrix.os}}
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-20.04, windows-2022]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
ref: ${{ github.event.inputs.ref }}
|
|
fetch-depth: 0
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v2
|
|
|
|
# For proper `deps` make target execution.
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: 1.18
|
|
|
|
# For information purposes.
|
|
- name: Print Docker version
|
|
run: docker --version
|
|
|
|
- name: Build privnet Docker image
|
|
run: make env_image
|