mirror of
https://github.com/rclone/rclone.git
synced 2024-11-25 17:57:44 +08:00
01280798e9
The go team made the decision to drop support for 32 bit macOS as 32 bit apps are no longer supported by macOS and 32 bit hardware hasn't been produced by Apple for over 10 years.
257 lines
7.3 KiB
YAML
257 lines
7.3 KiB
YAML
---
|
|
# Github Actions build for rclone
|
|
# -*- compile-command: "yamllint -f parsable build.yml" -*-
|
|
|
|
name: build
|
|
|
|
# Trigger the workflow on push or pull request
|
|
on:
|
|
push:
|
|
branches:
|
|
- '*'
|
|
tags:
|
|
- '*'
|
|
pull_request:
|
|
|
|
jobs:
|
|
build:
|
|
timeout-minutes: 60
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
job_name: ['linux', 'mac', 'windows_amd64', 'windows_386', 'other_os', 'go1.11', 'go1.12', 'go1.13', 'go1.14']
|
|
|
|
include:
|
|
- job_name: linux
|
|
os: ubuntu-latest
|
|
go: '1.15.0-rc2'
|
|
gotags: cmount
|
|
build_flags: '-include "^linux/"'
|
|
check: true
|
|
quicktest: true
|
|
racequicktest: true
|
|
deploy: true
|
|
|
|
- job_name: mac
|
|
os: macOS-latest
|
|
go: '1.15.0-rc2'
|
|
gotags: 'cmount'
|
|
build_flags: '-include "^darwin/amd64" -cgo'
|
|
quicktest: true
|
|
racequicktest: true
|
|
deploy: true
|
|
|
|
- job_name: windows_amd64
|
|
os: windows-latest
|
|
go: '1.15.0-rc2'
|
|
gotags: cmount
|
|
build_flags: '-include "^windows/amd64" -cgo'
|
|
quicktest: true
|
|
racequicktest: true
|
|
deploy: true
|
|
|
|
- job_name: windows_386
|
|
os: windows-latest
|
|
go: '1.15.0-rc2'
|
|
gotags: cmount
|
|
goarch: '386'
|
|
cgo: '1'
|
|
build_flags: '-include "^windows/386" -cgo'
|
|
quicktest: true
|
|
deploy: true
|
|
|
|
- job_name: other_os
|
|
os: ubuntu-latest
|
|
go: '1.15.0-rc2'
|
|
build_flags: '-exclude "^(windows/|darwin/amd64|linux/)"'
|
|
compile_all: true
|
|
deploy: true
|
|
|
|
- job_name: go1.11
|
|
os: ubuntu-latest
|
|
go: '1.11.x'
|
|
quicktest: true
|
|
|
|
- job_name: go1.12
|
|
os: ubuntu-latest
|
|
go: '1.12.x'
|
|
quicktest: true
|
|
|
|
- job_name: go1.13
|
|
os: ubuntu-latest
|
|
go: '1.13.x'
|
|
quicktest: true
|
|
|
|
- job_name: go1.14
|
|
os: ubuntu-latest
|
|
go: '1.14.x'
|
|
quicktest: true
|
|
racequicktest: true
|
|
|
|
name: ${{ matrix.job_name }}
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Install Go
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
stable: 'false'
|
|
go-version: ${{ matrix.go }}
|
|
|
|
- name: Set environment variables
|
|
shell: bash
|
|
run: |
|
|
echo '::set-env name=GOTAGS::${{ matrix.gotags }}'
|
|
echo '::set-env name=BUILD_FLAGS::${{ matrix.build_flags }}'
|
|
if [[ "${{ matrix.goarch }}" != "" ]]; then echo '::set-env name=GOARCH::${{ matrix.goarch }}' ; fi
|
|
if [[ "${{ matrix.cgo }}" != "" ]]; then echo '::set-env name=CGO_ENABLED::${{ matrix.cgo }}' ; fi
|
|
|
|
- name: Install Libraries on Linux
|
|
shell: bash
|
|
run: |
|
|
sudo modprobe fuse
|
|
sudo chmod 666 /dev/fuse
|
|
sudo chown root:$USER /etc/fuse.conf
|
|
sudo apt-get install fuse libfuse-dev rpm pkg-config
|
|
if: matrix.os == 'ubuntu-latest'
|
|
|
|
- name: Install Libraries on macOS
|
|
shell: bash
|
|
run: |
|
|
brew update
|
|
brew cask install osxfuse
|
|
if: matrix.os == 'macOS-latest'
|
|
|
|
- name: Install Libraries on Windows
|
|
shell: powershell
|
|
run: |
|
|
$ProgressPreference = 'SilentlyContinue'
|
|
choco install -y winfsp zip
|
|
Write-Host "::set-env name=CPATH::C:\Program Files\WinFsp\inc\fuse;C:\Program Files (x86)\WinFsp\inc\fuse"
|
|
if ($env:GOARCH -eq "386") {
|
|
choco install -y mingw --forcex86 --force
|
|
Write-Host "::add-path::C:\\ProgramData\\chocolatey\\lib\\mingw\\tools\\install\\mingw32\\bin"
|
|
}
|
|
# Copy mingw32-make.exe to make.exe so the same command line
|
|
# can be used on Windows as on macOS and Linux
|
|
$path = (get-command mingw32-make.exe).Path
|
|
Copy-Item -Path $path -Destination (Join-Path (Split-Path -Path $path) 'make.exe')
|
|
if: matrix.os == 'windows-latest'
|
|
|
|
- name: Print Go version and environment
|
|
shell: bash
|
|
run: |
|
|
printf "Using go at: $(which go)\n"
|
|
printf "Go version: $(go version)\n"
|
|
printf "\n\nGo environment:\n\n"
|
|
go env
|
|
printf "\n\nRclone environment:\n\n"
|
|
make vars
|
|
printf "\n\nSystem environment:\n\n"
|
|
env
|
|
|
|
- name: Go module cache
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-go-
|
|
|
|
- name: Build rclone
|
|
shell: bash
|
|
run: |
|
|
make
|
|
|
|
- name: Run tests
|
|
shell: bash
|
|
run: |
|
|
make quicktest
|
|
if: matrix.quicktest
|
|
|
|
- name: Race test
|
|
shell: bash
|
|
run: |
|
|
make racequicktest
|
|
if: matrix.racequicktest
|
|
|
|
- name: Code quality test
|
|
shell: bash
|
|
run: |
|
|
make build_dep
|
|
make check
|
|
if: matrix.check
|
|
|
|
- name: Compile all architectures test
|
|
shell: bash
|
|
run: |
|
|
make
|
|
make compile_all
|
|
if: matrix.compile_all
|
|
|
|
- name: Deploy built binaries
|
|
shell: bash
|
|
run: |
|
|
if [[ "${{ matrix.os }}" == "ubuntu-latest" ]]; then make release_dep_linux ; fi
|
|
if [[ "${{ matrix.os }}" == "windows-latest" ]]; then make release_dep_windows ; fi
|
|
make ci_beta
|
|
env:
|
|
RCLONE_CONFIG_PASS: ${{ secrets.RCLONE_CONFIG_PASS }}
|
|
# working-directory: '$(modulePath)'
|
|
# Deploy binaries if enabled in config && not a PR && not a fork
|
|
if: matrix.deploy && github.head_ref == '' && github.repository == 'rclone/rclone'
|
|
|
|
xgo:
|
|
timeout-minutes: 60
|
|
name: "xgo cross compile"
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
|
|
- name: Checkout
|
|
uses: actions/checkout@v1
|
|
with:
|
|
# Checkout into a fixed path to avoid import path problems on go < 1.11
|
|
path: ./src/github.com/rclone/rclone
|
|
|
|
- name: Set environment variables
|
|
shell: bash
|
|
run: |
|
|
echo '::set-env name=GOPATH::${{ runner.workspace }}'
|
|
echo '::add-path::${{ runner.workspace }}/bin'
|
|
|
|
- name: Cross-compile rclone
|
|
run: |
|
|
docker pull billziss/xgo-cgofuse
|
|
GO111MODULE=off go get -v github.com/karalabe/xgo # don't add to go.mod
|
|
# xgo \
|
|
# -image=billziss/xgo-cgofuse \
|
|
# -targets=darwin/amd64,linux/386,linux/amd64,windows/386,windows/amd64 \
|
|
# -tags cmount \
|
|
# -dest build \
|
|
# .
|
|
xgo \
|
|
-image=billziss/xgo-cgofuse \
|
|
-targets=android/*,ios/* \
|
|
-dest build \
|
|
.
|
|
|
|
- name: Build rclone
|
|
shell: bash
|
|
run: |
|
|
make
|
|
|
|
- name: Upload artifacts
|
|
run: |
|
|
make ci_upload
|
|
env:
|
|
RCLONE_CONFIG_PASS: ${{ secrets.RCLONE_CONFIG_PASS }}
|
|
# Upload artifacts if not a PR && not a fork
|
|
if: github.head_ref == '' && github.repository == 'rclone/rclone'
|