From 150aebf8d24fcaef9ec495be002e865eb431b9cc Mon Sep 17 00:00:00 2001 From: Nicola Murino Date: Wed, 7 Apr 2021 15:12:09 +0200 Subject: [PATCH] CI: replace xgo with QEMU currently xgo don't allow to choose the building OS, this could cause unexpected issues, for example v2.0.3 packages for arm64 and ppc64 don't run on Ubuntu 18.04 --- .github/workflows/development.yml | 212 ++++++++++--------- .github/workflows/release.yml | 338 ++++++++++++++---------------- pkgs/build.sh | 23 +- 3 files changed, 291 insertions(+), 282 deletions(-) diff --git a/.github/workflows/development.yml b/.github/workflows/development.yml index 1b15325d..1527c95e 100644 --- a/.github/workflows/development.yml +++ b/.github/workflows/development.yml @@ -15,9 +15,6 @@ jobs: os: [ubuntu-latest, macos-latest] upload-coverage: [true] include: - #- go: 1.15 - # os: ubuntu-latest - # upload-coverage: false - go: 1.16 os: windows-latest upload-coverage: false @@ -72,49 +69,20 @@ jobs: SFTPGO_DATA_PROVIDER__DRIVER: memory SFTPGO_DATA_PROVIDER__NAME: '' - - name: Gather cross build info - id: cross_info - if: ${{ matrix.upload-coverage && startsWith(matrix.os, 'ubuntu-') }} + - name: Prepare build artifact for macOS + if: startsWith(matrix.os, 'macos-') == true run: | - GIT_COMMIT=$(git describe --always) - BUILD_DATE=$(date -u +%FT%TZ) - echo ::set-output name=sha::${GIT_COMMIT} - echo ::set-output name=created::${BUILD_DATE} - - - name: Cross build with xgo - if: ${{ matrix.upload-coverage && startsWith(matrix.os, 'ubuntu-') }} - uses: crazy-max/ghaction-xgo@v1 - with: - go_version: 1.16.x - dest: cross - prefix: sftpgo - targets: linux/arm64,linux/ppc64le - v: true - x: false - race: false - ldflags: -s -w -X github.com/drakkan/sftpgo/version.commit=${{ steps.cross_info.outputs.sha }} -X github.com/drakkan/sftpgo/version.date=${{ steps.cross_info.outputs.created }} - buildmode: default - - - name: Prepare build artifact for Linux/macOS - if: startsWith(matrix.os, 'windows-') != true - run: | - mkdir -p output/{bash_completion,zsh_completion} + mkdir -p output/{init,bash_completion,zsh_completion} cp sftpgo output/ cp sftpgo.json output/ cp -r templates output/ cp -r static output/ - cp -r init output/ + cp init/com.github.drakkan.sftpgo.plist output/init/ ./sftpgo gen completion bash > output/bash_completion/sftpgo ./sftpgo gen completion zsh > output/zsh_completion/_sftpgo ./sftpgo gen man -d output/man/man1 gzip output/man/man1/* - - name: Copy cross compiled Linux binaries - if: ${{ matrix.upload-coverage && startsWith(matrix.os, 'ubuntu-') }} - run: | - cp cross/sftpgo-linux-arm64 output/ - cp cross/sftpgo-linux-ppc64le output/ - - name: Prepare build artifact for Windows if: startsWith(matrix.os, 'windows-') run: | @@ -127,76 +95,12 @@ jobs: xcopy .\static .\output\static\ /E - name: Upload build artifact + if: startsWith(matrix.os, 'ubuntu-') != true uses: actions/upload-artifact@v2 with: name: sftpgo-${{ matrix.os }}-go${{ matrix.go }} path: output - - name: Build Linux Packages - id: build_linux_pkgs - if: ${{ matrix.upload-coverage && startsWith(matrix.os, 'ubuntu-') }} - run: | - cp -r pkgs pkgs_arm64 - cp -r pkgs pkgs_ppc64le - cd pkgs - ./build.sh - cd .. - export NFPM_ARCH=arm64 - export BIN_SUFFIX=-linux-arm64 - cp cross/sftpgo${BIN_SUFFIX} . - cd pkgs_arm64 - ./build.sh - cd .. - export NFPM_ARCH=ppc64le - export BIN_SUFFIX=-linux-ppc64le - cp cross/sftpgo${BIN_SUFFIX} . - cd pkgs_ppc64le - ./build.sh - PKG_VERSION=$(cat dist/version) - echo "::set-output name=pkg-version::${PKG_VERSION}" - - - name: Upload Debian Package - if: ${{ matrix.upload-coverage && startsWith(matrix.os, 'ubuntu-') }} - uses: actions/upload-artifact@v2 - with: - name: sftpgo-${{ steps.build_linux_pkgs.outputs.pkg-version }}-x86_64-deb - path: pkgs/dist/deb/* - - - name: Upload RPM Package - if: ${{ matrix.upload-coverage && startsWith(matrix.os, 'ubuntu-') }} - uses: actions/upload-artifact@v2 - with: - name: sftpgo-${{ steps.build_linux_pkgs.outputs.pkg-version }}-x86_64-rpm - path: pkgs/dist/rpm/* - - - name: Upload Debian Package arm64 - if: ${{ matrix.upload-coverage && startsWith(matrix.os, 'ubuntu-') }} - uses: actions/upload-artifact@v2 - with: - name: sftpgo-${{ steps.build_linux_pkgs.outputs.pkg-version }}-arm64-deb - path: pkgs_arm64/dist/deb/* - - - name: Upload RPM Package arm64 - if: ${{ matrix.upload-coverage && startsWith(matrix.os, 'ubuntu-') }} - uses: actions/upload-artifact@v2 - with: - name: sftpgo-${{ steps.build_linux_pkgs.outputs.pkg-version }}-arm64-rpm - path: pkgs_arm64/dist/rpm/* - - - name: Upload Debian Package ppc64le - if: ${{ matrix.upload-coverage && startsWith(matrix.os, 'ubuntu-') }} - uses: actions/upload-artifact@v2 - with: - name: sftpgo-${{ steps.build_linux_pkgs.outputs.pkg-version }}-ppc64le-deb - path: pkgs_ppc64le/dist/deb/* - - - name: Upload RPM Package ppc64le - if: ${{ matrix.upload-coverage && startsWith(matrix.os, 'ubuntu-') }} - uses: actions/upload-artifact@v2 - with: - name: sftpgo-${{ steps.build_linux_pkgs.outputs.pkg-version }}-ppc64le-rpm - path: pkgs_ppc64le/dist/rpm/* - test-postgresql-mysql-crdb: name: Test with PgSQL/MySQL/Cockroach runs-on: ubuntu-latest @@ -277,6 +181,112 @@ jobs: SFTPGO_DATA_PROVIDER__USERNAME: root SFTPGO_DATA_PROVIDER__PASSWORD: + build-linux-packages: + name: Build Linux packages + runs-on: ubuntu-18.04 + strategy: + matrix: + include: + - arch: amd64 + go: 1.16 + go-arch: amd64 + - arch: aarch64 + distro: ubuntu18.04 + go: latest + go-arch: arm64 + - arch: ppc64le + distro: ubuntu18.04 + go: latest + go-arch: ppc64le + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Set up Go + if: ${{ matrix.arch == 'amd64' }} + uses: actions/setup-go@v2 + with: + go-version: ${{ matrix.go }} + + - name: Build on amd64 + if: ${{ matrix.arch == 'amd64' }} + run: | + go build -ldflags "-s -w -X github.com/drakkan/sftpgo/version.commit=`git describe --always --dirty` -X github.com/drakkan/sftpgo/version.date=`date -u +%FT%TZ`" -o sftpgo + mkdir -p output/{init,bash_completion,zsh_completion} + cp sftpgo.json output/ + cp -r templates output/ + cp -r static output/ + cp init/sftpgo.service output/init/ + ./sftpgo gen completion bash > output/bash_completion/sftpgo + ./sftpgo gen completion zsh > output/zsh_completion/_sftpgo + ./sftpgo gen man -d output/man/man1 + gzip output/man/man1/* + cp sftpgo output/ + + - uses: uraimo/run-on-arch-action@v2.0.9 + if: ${{ matrix.arch != 'amd64' }} + name: Build for ${{ matrix.arch }} + id: build + with: + arch: ${{ matrix.arch }} + distro: ${{ matrix.distro }} + setup: | + mkdir -p "${PWD}/output" + dockerRunArgs: | + --volume "${PWD}/output:/output" + shell: /bin/bash + install: | + apt-get update -q -y + apt-get install -q -y curl gcc git + if [ ${{ matrix.go }} == 'latest' ] + then + GO_VERSION=$(curl https://golang.org/VERSION?m=text) + else + GO_VERSION=${{ matrix.go }} + fi + curl --retry 5 --retry-delay 2 --connect-timeout 10 -o go.tar.gz -L https://golang.org/dl/${GO_VERSION}.linux-${{ matrix.go-arch }}.tar.gz + tar -C /usr/local -xzf go.tar.gz + run: | + export PATH=$PATH:/usr/local/go/bin + go build -ldflags "-s -w -X github.com/drakkan/sftpgo/version.commit=`git describe --always --dirty` -X github.com/drakkan/sftpgo/version.date=`date -u +%FT%TZ`" -o sftpgo + mkdir -p output/{init,bash_completion,zsh_completion} + cp sftpgo.json output/ + cp -r templates output/ + cp -r static output/ + cp init/sftpgo.service output/init/ + ./sftpgo gen completion bash > output/bash_completion/sftpgo + ./sftpgo gen completion zsh > output/zsh_completion/_sftpgo + ./sftpgo gen man -d output/man/man1 + gzip output/man/man1/* + cp sftpgo output/ + + - name: Upload build artifact + uses: actions/upload-artifact@v2 + with: + name: sftpgo-linux-go-${{ matrix.go }}-${{ matrix.arch }} + path: output + + - name: Build Packages + id: build_linux_pkgs + run: | + export NFPM_ARCH=${{ matrix.go-arch }} + cd pkgs + ./build.sh + PKG_VERSION=$(cat dist/version) + echo "::set-output name=pkg-version::${PKG_VERSION}" + + - name: Upload Debian Package + uses: actions/upload-artifact@v2 + with: + name: sftpgo-${{ steps.build_linux_pkgs.outputs.pkg-version }}-${{ matrix.go-arch }}-deb + path: pkgs/dist/deb/* + + - name: Upload RPM Package + uses: actions/upload-artifact@v2 + with: + name: sftpgo-${{ steps.build_linux_pkgs.outputs.pkg-version }}-${{ matrix.go-arch }}-rpm + path: pkgs/dist/rpm/* + golangci-lint: name: golangci-lint runs-on: ubuntu-latest diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bec69078..04ed847d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,12 +5,12 @@ on: tags: 'v*' env: - GO_VERSION: 1.15.8 + GO_VERSION: 1.16.3 jobs: create-release: name: Create - runs-on: ubuntu-latest + runs-on: ubuntu-18.04 steps: - name: Create Release id: create_release @@ -36,7 +36,7 @@ jobs: release-sources-with-deps: name: Publish sources needs: create-release - runs-on: ubuntu-latest + runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 - name: Set up Go @@ -79,13 +79,13 @@ jobs: asset_name: sftpgo_${{ steps.get_version.outputs.VERSION }}_src_with_deps.tar.xz asset_content_type: application/x-xz - publish: - name: Publish binary + publish-window-mac: + name: Publish binaries needs: create-release runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-latest, macos-latest, windows-latest] + os: [macos-10.15, windows-2019] steps: - uses: actions/checkout@v2 @@ -94,7 +94,7 @@ jobs: with: go-version: ${{ env.GO_VERSION }} - - name: Build for Linux/macOS + - name: Build for macOS if: startsWith(matrix.os, 'windows-') != true run: go build -ldflags "-s -w -X github.com/drakkan/sftpgo/version.commit=`git describe --always --dirty` -X github.com/drakkan/sftpgo/version.date=`date -u +%FT%TZ`" -o sftpgo @@ -117,10 +117,7 @@ jobs: - name: Get OS name id: get_os_name run: | - if [ $MATRIX_OS == 'ubuntu-latest' ] - then - echo ::set-output name=OS::linux - elif [ $MATRIX_OS == 'macos-latest' ] + if [[ $MATRIX_OS =~ ^macos.* ]] then echo ::set-output name=OS::macOS else @@ -130,31 +127,8 @@ jobs: env: MATRIX_OS: ${{ matrix.os }} - - name: Gather cross build info - id: cross_info - if: ${{ matrix.os == 'ubuntu-latest' }} - run: | - GIT_COMMIT=$(git describe --always) - BUILD_DATE=$(date -u +%FT%TZ) - echo ::set-output name=sha::${GIT_COMMIT} - echo ::set-output name=created::${BUILD_DATE} - - - name: Cross build with xgo - if: ${{ matrix.os == 'ubuntu-latest' }} - uses: crazy-max/ghaction-xgo@v1 - with: - go_version: ${{ env.GO_VERSION }} - dest: cross - prefix: sftpgo - targets: linux/arm64,linux/ppc64le - v: true - x: false - race: false - ldflags: -s -w -X github.com/drakkan/sftpgo/version.commit=${{ steps.cross_info.outputs.sha }} -X github.com/drakkan/sftpgo/version.date=${{ steps.cross_info.outputs.created }} - buildmode: default - - - name: Prepare Release for Linux/macOS - if: startsWith(matrix.os, 'windows-') != true + - name: Prepare Release for macOS + if: startsWith(matrix.os, 'macos-') run: | mkdir -p output/{init,sqlite,bash_completion,zsh_completion} echo "For documentation please take a look here:" > output/README.txt @@ -166,72 +140,18 @@ jobs: cp sftpgo.db output/sqlite/ cp -r static output/ cp -r templates output/ - if [ $OS == 'linux' ] - then - cp init/sftpgo.service output/init/ - else - cp init/com.github.drakkan.sftpgo.plist output/init/ - fi + cp init/com.github.drakkan.sftpgo.plist output/init/ ./sftpgo gen completion bash > output/bash_completion/sftpgo ./sftpgo gen completion zsh > output/zsh_completion/_sftpgo ./sftpgo gen man -d output/man/man1 gzip output/man/man1/* - if [ $OS == 'linux' ] - then - cp -r output output_arm64 - cp -r output output_ppc64le - cp -r output output_all - fi cd output tar cJvf sftpgo_${SFTPGO_VERSION}_${OS}_x86_64.tar.xz * cd .. - if [ $OS == 'linux' ] - then - cp cross/sftpgo-linux-arm64 output_arm64/sftpgo - cd output_arm64 - tar cJvf sftpgo_${SFTPGO_VERSION}_${OS}_arm64.tar.xz * - cd .. - cp cross/sftpgo-linux-ppc64le output_ppc64le/sftpgo - cd output_ppc64le - tar cJvf sftpgo_${SFTPGO_VERSION}_${OS}_ppc64le.tar.xz * - cd .. - mkdir output_all/{arm64,ppc64le} - cp cross/sftpgo-linux-arm64 output_all/arm64/sftpgo - cp cross/sftpgo-linux-ppc64le output_all/ppc64le/sftpgo - cd output_all - tar cJvf sftpgo_${SFTPGO_VERSION}_${OS}_bundle.tar.xz * - cd .. - fi env: SFTPGO_VERSION: ${{ steps.get_version.outputs.VERSION }} OS: ${{ steps.get_os_name.outputs.OS }} - - name: Prepare Linux Packages - id: build_linux_pkgs - if: ${{ matrix.os == 'ubuntu-latest' }} - run: | - cp -r pkgs pkgs_arm64 - cp -r pkgs pkgs_ppc64le - cd pkgs - ./build.sh - cd .. - export NFPM_ARCH=arm64 - export BIN_SUFFIX=-linux-arm64 - cp cross/sftpgo${BIN_SUFFIX} . - cd pkgs_arm64 - ./build.sh - cd .. - export NFPM_ARCH=ppc64le - export BIN_SUFFIX=-linux-ppc64le - cp cross/sftpgo${BIN_SUFFIX} . - cd pkgs_ppc64le - ./build.sh - cd .. - PKG_VERSION=${SFTPGO_VERSION:1} - echo "::set-output name=pkg-version::${PKG_VERSION}" - env: - SFTPGO_VERSION: ${{ steps.get_version.outputs.VERSION }} - - name: Prepare Release for Windows if: startsWith(matrix.os, 'windows-') run: | @@ -278,8 +198,8 @@ jobs: echo "::set-output name=url::${URL}" shell: bash - - name: Upload Linux/macOS Release - if: startsWith(matrix.os, 'windows-') != true + - name: Upload macOS Release + if: startsWith(matrix.os, 'macos-') uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -289,39 +209,6 @@ jobs: asset_name: sftpgo_${{ steps.get_version.outputs.VERSION }}_${{ steps.get_os_name.outputs.OS }}_x86_64.tar.xz asset_content_type: application/x-xz - - name: Upload Linux/arm64 Release - if: ${{ matrix.os == 'ubuntu-latest' }} - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.upload_url.outputs.url }} - asset_path: ./output_arm64/sftpgo_${{ steps.get_version.outputs.VERSION }}_${{ steps.get_os_name.outputs.OS }}_arm64.tar.xz - asset_name: sftpgo_${{ steps.get_version.outputs.VERSION }}_${{ steps.get_os_name.outputs.OS }}_arm64.tar.xz - asset_content_type: application/x-xz - - - name: Upload Linux/ppc64le Release - if: ${{ matrix.os == 'ubuntu-latest' }} - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.upload_url.outputs.url }} - asset_path: ./output_ppc64le/sftpgo_${{ steps.get_version.outputs.VERSION }}_${{ steps.get_os_name.outputs.OS }}_ppc64le.tar.xz - asset_name: sftpgo_${{ steps.get_version.outputs.VERSION }}_${{ steps.get_os_name.outputs.OS }}_ppc64le.tar.xz - asset_content_type: application/x-xz - - - name: Upload Linux Bundle Release - if: ${{ matrix.os == 'ubuntu-latest' }} - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.upload_url.outputs.url }} - asset_path: ./output_all/sftpgo_${{ steps.get_version.outputs.VERSION }}_${{ steps.get_os_name.outputs.OS }}_bundle.tar.xz - asset_name: sftpgo_${{ steps.get_version.outputs.VERSION }}_${{ steps.get_os_name.outputs.OS }}_bundle.tar.xz - asset_content_type: application/x-xz - - name: Upload Windows Release if: startsWith(matrix.os, 'windows-') uses: actions/upload-release-asset@v1 @@ -344,68 +231,163 @@ jobs: asset_name: sftpgo_${{ steps.get_version.outputs.VERSION }}_${{ steps.get_os_name.outputs.OS }}_portable_x86_64.zip asset_content_type: application/zip - - name: Upload Debian Package - if: ${{ matrix.os == 'ubuntu-latest' }} + publish-linux: + name: Publish Linux binaries + needs: create-release + runs-on: ubuntu-18.04 + strategy: + matrix: + include: + - arch: amd64 + go-arch: amd64 + deb-arch: amd64 + rpm-arch: x86_64 + tar-arch: x86_64 + - arch: aarch64 + distro: ubuntu18.04 + go-arch: arm64 + deb-arch: arm64 + rpm-arch: aarch64 + tar-arch: arm64 + - arch: ppc64le + distro: ubuntu18.04 + go-arch: ppc64le + deb-arch: ppc64el + rpm-arch: ppc64le + tar-arch: ppc64le + + steps: + - uses: actions/checkout@v2 + - name: Set up Go + if: ${{ matrix.arch == 'amd64' }} + uses: actions/setup-go@v2 + with: + go-version: ${{ env.GO_VERSION }} + + - name: Get versions + id: get_version + run: | + echo ::set-output name=SFTPGO_VERSION::${GITHUB_REF/refs\/tags\//} + echo ::set-output name=GO_VERSION::${GO_VERSION} + shell: bash + env: + GO_VERSION: ${{ env.GO_VERSION }} + + - name: Build on amd64 + if: ${{ matrix.arch == 'amd64' }} + run: | + go build -ldflags "-s -w -X github.com/drakkan/sftpgo/version.commit=`git describe --always --dirty` -X github.com/drakkan/sftpgo/version.date=`date -u +%FT%TZ`" -o sftpgo + mkdir -p output/{init,sqlite,bash_completion,zsh_completion} + echo "For documentation please take a look here:" > output/README.txt + echo "" >> output/README.txt + echo "https://github.com/drakkan/sftpgo/blob/${SFTPGO_VERSION}/README.md" >> output/README.txt + cp LICENSE output/ + cp sftpgo.json output/ + cp -r templates output/ + cp -r static output/ + cp init/sftpgo.service output/init/ + ./sftpgo initprovider + ./sftpgo gen completion bash > output/bash_completion/sftpgo + ./sftpgo gen completion zsh > output/zsh_completion/_sftpgo + ./sftpgo gen man -d output/man/man1 + gzip output/man/man1/* + cp sftpgo output/ + cp sftpgo.db output/sqlite/ + cd output + tar cJvf sftpgo_${SFTPGO_VERSION}_linux_${{ matrix.tar-arch }}.tar.xz * + cd .. + env: + SFTPGO_VERSION: ${{ steps.get_version.outputs.SFTPGO_VERSION }} + + - uses: uraimo/run-on-arch-action@v2.0.9 + if: ${{ matrix.arch != 'amd64' }} + name: Build for ${{ matrix.arch }} + id: build + with: + arch: ${{ matrix.arch }} + distro: ${{ matrix.distro }} + setup: | + mkdir -p "${PWD}/output" + dockerRunArgs: | + --volume "${PWD}/output:/output" + shell: /bin/bash + install: | + apt-get update -q -y + apt-get install -q -y curl gcc git xz-utils + curl --retry 5 --retry-delay 2 --connect-timeout 10 -o go.tar.gz -L https://golang.org/dl/go${{ steps.get_version.outputs.GO_VERSION }}.linux-${{ matrix.go-arch }}.tar.gz + tar -C /usr/local -xzf go.tar.gz + run: | + export PATH=$PATH:/usr/local/go/bin + go build -ldflags "-s -w -X github.com/drakkan/sftpgo/version.commit=`git describe --always --dirty` -X github.com/drakkan/sftpgo/version.date=`date -u +%FT%TZ`" -o sftpgo + mkdir -p output/{init,sqlite,bash_completion,zsh_completion} + echo "For documentation please take a look here:" > output/README.txt + echo "" >> output/README.txt + echo "https://github.com/drakkan/sftpgo/blob/${{ steps.get_version.outputs.SFTPGO_VERSION }}/README.md" >> output/README.txt + cp LICENSE output/ + cp sftpgo.json output/ + cp -r templates output/ + cp -r static output/ + cp init/sftpgo.service output/init/ + ./sftpgo initprovider + ./sftpgo gen completion bash > output/bash_completion/sftpgo + ./sftpgo gen completion zsh > output/zsh_completion/_sftpgo + ./sftpgo gen man -d output/man/man1 + gzip output/man/man1/* + cp sftpgo output/ + cp sftpgo.db output/sqlite/ + cd output + tar cJvf sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_linux_${{ matrix.tar-arch }}.tar.xz * + cd .. + + - name: Build Packages + id: build_linux_pkgs + run: | + export NFPM_ARCH=${{ matrix.go-arch }} + cd pkgs + ./build.sh + PKG_VERSION=${SFTPGO_VERSION:1} + echo "::set-output name=pkg-version::${PKG_VERSION}" + env: + SFTPGO_VERSION: ${{ steps.get_version.outputs.SFTPGO_VERSION }} + + - name: Download release upload URL + uses: actions/download-artifact@v2 + with: + name: upload_url + + - name: Get release upload URL + id: upload_url + run: | + URL=$(cat upload_url.txt) + echo "::set-output name=url::${URL}" + shell: bash + + - name: Upload Linux Release uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.upload_url.outputs.url }} - asset_path: ./pkgs/dist/deb/sftpgo_${{ steps.build_linux_pkgs.outputs.pkg-version }}-1_amd64.deb - asset_name: sftpgo_${{ steps.build_linux_pkgs.outputs.pkg-version }}-1_amd64.deb + asset_path: ./output/sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_linux_${{ matrix.tar-arch }}.tar.xz + asset_name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_linux_${{ matrix.tar-arch }}.tar.xz + asset_content_type: application/x-xz + + - name: Upload Deb Package + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.upload_url.outputs.url }} + asset_path: ./pkgs/dist/deb/sftpgo_${{ steps.build_linux_pkgs.outputs.pkg-version }}-1_${{ matrix.deb-arch}}.deb + asset_name: sftpgo_${{ steps.build_linux_pkgs.outputs.pkg-version }}-1_${{ matrix.deb-arch}}.deb asset_content_type: application/vnd.debian.binary-package - name: Upload RPM Package - if: ${{ matrix.os == 'ubuntu-latest' }} uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.upload_url.outputs.url }} - asset_path: ./pkgs/dist/rpm/sftpgo-${{ steps.build_linux_pkgs.outputs.pkg-version }}-1.x86_64.rpm - asset_name: sftpgo-${{ steps.build_linux_pkgs.outputs.pkg-version }}-1.x86_64.rpm - asset_content_type: application/x-rpm - - - name: Upload Debian Package arm64 - if: ${{ matrix.os == 'ubuntu-latest' }} - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.upload_url.outputs.url }} - asset_path: ./pkgs_arm64/dist/deb/sftpgo_${{ steps.build_linux_pkgs.outputs.pkg-version }}-1_arm64.deb - asset_name: sftpgo_${{ steps.build_linux_pkgs.outputs.pkg-version }}-1_arm64.deb - asset_content_type: application/vnd.debian.binary-package - - - name: Upload RPM Package arm64 - if: ${{ matrix.os == 'ubuntu-latest' }} - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.upload_url.outputs.url }} - asset_path: ./pkgs_arm64/dist/rpm/sftpgo-${{ steps.build_linux_pkgs.outputs.pkg-version }}-1.aarch64.rpm - asset_name: sftpgo-${{ steps.build_linux_pkgs.outputs.pkg-version }}-1.aarch64.rpm - asset_content_type: application/x-rpm - - - name: Upload Debian Package ppc64le - if: ${{ matrix.os == 'ubuntu-latest' }} - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.upload_url.outputs.url }} - asset_path: ./pkgs_ppc64le/dist/deb/sftpgo_${{ steps.build_linux_pkgs.outputs.pkg-version }}-1_ppc64el.deb - asset_name: sftpgo_${{ steps.build_linux_pkgs.outputs.pkg-version }}-1_ppc64el.deb - asset_content_type: application/vnd.debian.binary-package - - - name: Upload RPM Package ppc64le - if: ${{ matrix.os == 'ubuntu-latest' }} - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.upload_url.outputs.url }} - asset_path: ./pkgs_ppc64le/dist/rpm/sftpgo-${{ steps.build_linux_pkgs.outputs.pkg-version }}-1.ppc64le.rpm - asset_name: sftpgo-${{ steps.build_linux_pkgs.outputs.pkg-version }}-1.ppc64le.rpm - asset_content_type: application/x-rpm + asset_path: ./pkgs/dist/rpm/sftpgo-${{ steps.build_linux_pkgs.outputs.pkg-version }}-1.${{ matrix.rpm-arch}}.rpm + asset_name: sftpgo-${{ steps.build_linux_pkgs.outputs.pkg-version }}-1.${{ matrix.rpm-arch}}.rpm + asset_content_type: application/x-rpm \ No newline at end of file diff --git a/pkgs/build.sh b/pkgs/build.sh index 0ca3af49..733f149a 100755 --- a/pkgs/build.sh +++ b/pkgs/build.sh @@ -17,6 +17,26 @@ echo -n ${VERSION} > dist/version cd dist BASE_DIR="../.." +if [ -f "${BASE_DIR}/output/bash_completion/sftpgo" ] +then + cp ${BASE_DIR}/output/bash_completion/sftpgo sftpgo-completion.bash +else + $BASE_DIR/sftpgo gen completion bash > sftpgo-completion.bash +fi + +if [ -d "${BASE_DIR}/output/man/man1" ] +then + cp -r ${BASE_DIR}/output/man/man1 . +else + $BASE_DIR/sftpgo gen man -d man1 +fi + +if [ ! -f ${BASE_DIR}/sftpgo ] +then + cp ${BASE_DIR}/output/sftpgo ${BASE_DIR}/sftpgo + chmod 755 ${BASE_DIR}/sftpgo +fi + cp ${BASE_DIR}/sftpgo.json . sed -i "s|sftpgo.db|/var/lib/sftpgo/sftpgo.db|" sftpgo.json sed -i "s|\"users_base_dir\": \"\",|\"users_base_dir\": \"/srv/sftpgo/data\",|" sftpgo.json @@ -25,9 +45,6 @@ sed -i "s|\"static\"|\"/usr/share/sftpgo/static\"|" sftpgo.json sed -i "s|\"backups\"|\"/srv/sftpgo/backups\"|" sftpgo.json sed -i "s|\"credentials\"|\"/var/lib/sftpgo/credentials\"|" sftpgo.json -$BASE_DIR/sftpgo gen completion bash > sftpgo-completion.bash -$BASE_DIR/sftpgo gen man -d man1 - cat >nfpm.yaml <