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