mirror of
https://github.com/rclone/rclone.git
synced 2024-11-23 08:54:10 +01:00
f135acbdfb
The macfuse has been renamed, but brew is still picking up the old version under the old name. This corrects the name to macfuse which brings in v4.x which should support Apple Silicon.
256 lines
7.4 KiB
YAML
256 lines
7.4 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.13', 'go1.14', 'go1.15']
|
|
|
|
include:
|
|
- job_name: linux
|
|
os: ubuntu-latest
|
|
go: '1.16.0-rc1'
|
|
gotags: cmount
|
|
build_flags: '-include "^linux/"'
|
|
check: true
|
|
quicktest: true
|
|
racequicktest: true
|
|
deploy: true
|
|
|
|
- job_name: mac
|
|
os: macOS-latest
|
|
go: '1.16.0-rc1'
|
|
gotags: 'cmount'
|
|
build_flags: '-include "^darwin/amd64" -cgo'
|
|
quicktest: true
|
|
racequicktest: true
|
|
deploy: true
|
|
|
|
- job_name: windows_amd64
|
|
os: windows-latest
|
|
go: '1.16.0-rc1'
|
|
gotags: cmount
|
|
build_flags: '-include "^windows/amd64" -cgo'
|
|
build_args: '-buildmode exe'
|
|
quicktest: true
|
|
racequicktest: true
|
|
deploy: true
|
|
|
|
- job_name: windows_386
|
|
os: windows-latest
|
|
go: '1.16.0-rc1'
|
|
gotags: cmount
|
|
goarch: '386'
|
|
cgo: '1'
|
|
build_flags: '-include "^windows/386" -cgo'
|
|
build_args: '-buildmode exe'
|
|
quicktest: true
|
|
deploy: true
|
|
|
|
- job_name: other_os
|
|
os: ubuntu-latest
|
|
go: '1.16.0-rc1'
|
|
build_flags: '-exclude "^(windows/|darwin/amd64|linux/)"'
|
|
compile_all: true
|
|
deploy: 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
|
|
|
|
- job_name: go1.15
|
|
os: ubuntu-latest
|
|
go: '1.15.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 'GOTAGS=${{ matrix.gotags }}' >> $GITHUB_ENV
|
|
echo 'BUILD_FLAGS=${{ matrix.build_flags }}' >> $GITHUB_ENV
|
|
echo 'BUILD_ARGS=${{ matrix.build_args }}' >> $GITHUB_ENV
|
|
if [[ "${{ matrix.goarch }}" != "" ]]; then echo 'GOARCH=${{ matrix.goarch }}' >> $GITHUB_ENV ; fi
|
|
if [[ "${{ matrix.cgo }}" != "" ]]; then echo 'CGO_ENABLED=${{ matrix.cgo }}' >> $GITHUB_ENV ; 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 install --cask macfuse
|
|
if: matrix.os == 'macOS-latest'
|
|
|
|
- name: Install Libraries on Windows
|
|
shell: powershell
|
|
run: |
|
|
$ProgressPreference = 'SilentlyContinue'
|
|
choco install -y winfsp zip
|
|
echo "CPATH=C:\Program Files\WinFsp\inc\fuse;C:\Program Files (x86)\WinFsp\inc\fuse" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
|
if ($env:GOARCH -eq "386") {
|
|
choco install -y mingw --forcex86 --force
|
|
echo "C:\\ProgramData\\chocolatey\\lib\\mingw\\tools\\install\\mingw32\\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
|
|
}
|
|
# 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 'GOPATH=${{ runner.workspace }}' >> $GITHUB_ENV
|
|
echo '${{ runner.workspace }}/bin' >> $GITHUB_PATH
|
|
|
|
- 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'
|