mirror of
https://github.com/drakkan/sftpgo.git
synced 2025-12-06 14:20:55 +03:00
The Azure Trusted Signing certificate is expiring soon, and renewal is no longer available for individuals or organizations outside of Canada and USA. Due to this limitation, we are removing the Trusted Signing step from our CI pipeline. Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
595 lines
24 KiB
YAML
595 lines
24 KiB
YAML
name: Release
|
|
|
|
on:
|
|
push:
|
|
tags: 'v*'
|
|
|
|
permissions:
|
|
id-token: write
|
|
contents: write
|
|
|
|
env:
|
|
GO_VERSION: 1.24.7
|
|
|
|
jobs:
|
|
prepare-sources-with-deps:
|
|
name: Prepare sources with deps
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v6
|
|
with:
|
|
go-version: ${{ env.GO_VERSION }}
|
|
|
|
- name: Get SFTPGo version
|
|
id: get_version
|
|
run: echo "VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_OUTPUT
|
|
|
|
- name: Prepare release
|
|
run: |
|
|
go mod vendor
|
|
echo "${SFTPGO_VERSION}" > VERSION.txt
|
|
echo "${GITHUB_SHA::8}" >> VERSION.txt
|
|
tar cJvf sftpgo_${SFTPGO_VERSION}_src_with_deps.tar.xz *
|
|
env:
|
|
SFTPGO_VERSION: ${{ steps.get_version.outputs.VERSION }}
|
|
|
|
- name: Upload build artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.VERSION }}_src_with_deps.tar.xz
|
|
path: ./sftpgo_${{ steps.get_version.outputs.VERSION }}_src_with_deps.tar.xz
|
|
retention-days: 1
|
|
|
|
prepare-windows:
|
|
name: Prepare Windows binaries
|
|
environment: signing
|
|
runs-on: windows-2022
|
|
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v6
|
|
with:
|
|
go-version: ${{ env.GO_VERSION }}
|
|
|
|
- name: Get SFTPGo version
|
|
id: get_version
|
|
run: echo "VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_OUTPUT
|
|
shell: bash
|
|
|
|
- name: Build
|
|
run: |
|
|
$GIT_COMMIT = (git describe --always --abbrev=8 --dirty) | Out-String
|
|
$DATE_TIME = ([datetime]::Now.ToUniversalTime().toString("yyyy-MM-ddTHH:mm:ssZ")) | Out-String
|
|
$FILE_VERSION = $Env:SFTPGO_VERSION.substring(1) + ".0"
|
|
go install github.com/tc-hib/go-winres@latest
|
|
go-winres simply --arch amd64 --product-version $Env:SFTPGO_VERSION-$GIT_COMMIT --file-version "$FILE_VERSION" --file-description "SFTPGo server" --product-name SFTPGo --copyright "2019-2025 Nicola Murino" --original-filename sftpgo.exe --icon .\windows-installer\icon.ico
|
|
go build -trimpath -tags nopgxregisterdefaulttypes,disable_grpc_modules -ldflags "-s -w -X github.com/drakkan/sftpgo/v2/internal/version.commit=$GIT_COMMIT -X github.com/drakkan/sftpgo/v2/internal/version.date=$DATE_TIME" -o sftpgo.exe
|
|
mkdir arm64
|
|
$Env:CGO_ENABLED='0'
|
|
$Env:GOOS='windows'
|
|
$Env:GOARCH='arm64'
|
|
go-winres simply --arch arm64 --product-version $Env:SFTPGO_VERSION-$GIT_COMMIT --file-version "$FILE_VERSION" --file-description "SFTPGo server" --product-name SFTPGo --copyright "2019-2025 Nicola Murino" --original-filename sftpgo.exe --icon .\windows-installer\icon.ico
|
|
go build -trimpath -tags nopgxregisterdefaulttypes,disable_grpc_modules,nosqlite -ldflags "-s -w -X github.com/drakkan/sftpgo/v2/internal/version.commit=$GIT_COMMIT -X github.com/drakkan/sftpgo/v2/internal/version.date=$DATE_TIME" -o .\arm64\sftpgo.exe
|
|
mkdir x86
|
|
$Env:GOARCH='386'
|
|
go-winres simply --arch 386 --product-version $Env:SFTPGO_VERSION-$GIT_COMMIT --file-version "$FILE_VERSION" --file-description "SFTPGo server" --product-name SFTPGo --copyright "2019-2025 Nicola Murino" --original-filename sftpgo.exe --icon .\windows-installer\icon.ico
|
|
go build -trimpath -tags nopgxregisterdefaulttypes,disable_grpc_modules,nosqlite -ldflags "-s -w -X github.com/drakkan/sftpgo/v2/internal/version.commit=$GIT_COMMIT -X github.com/drakkan/sftpgo/v2/internal/version.date=$DATE_TIME" -o .\x86\sftpgo.exe
|
|
Remove-Item Env:\CGO_ENABLED
|
|
Remove-Item Env:\GOOS
|
|
Remove-Item Env:\GOARCH
|
|
env:
|
|
SFTPGO_VERSION: ${{ steps.get_version.outputs.VERSION }}
|
|
|
|
- name: Initialize data provider
|
|
run: ./sftpgo initprovider
|
|
shell: bash
|
|
|
|
- name: Prepare Release
|
|
run: |
|
|
mkdir output
|
|
copy .\sftpgo.exe .\output
|
|
copy .\sftpgo.json .\output
|
|
copy .\sftpgo.db .\output
|
|
copy .\LICENSE .\output\LICENSE.txt
|
|
copy .\NOTICE .\output\NOTICE.txt
|
|
mkdir output\templates
|
|
xcopy .\templates .\output\templates\ /E
|
|
mkdir output\static
|
|
xcopy .\static .\output\static\ /E
|
|
mkdir output\openapi
|
|
xcopy .\openapi .\output\openapi\ /E
|
|
iscc .\windows-installer\sftpgo.iss
|
|
rm .\output\sftpgo.exe
|
|
rm .\output\sftpgo.db
|
|
copy .\arm64\sftpgo.exe .\output
|
|
(Get-Content .\output\sftpgo.json).replace('"sqlite"', '"bolt"') | Set-Content .\output\sftpgo.json
|
|
$Env:SFTPGO_DATA_PROVIDER__DRIVER='bolt'
|
|
$Env:SFTPGO_DATA_PROVIDER__NAME='.\output\sftpgo.db'
|
|
.\sftpgo.exe initprovider
|
|
Remove-Item Env:\SFTPGO_DATA_PROVIDER__DRIVER
|
|
Remove-Item Env:\SFTPGO_DATA_PROVIDER__NAME
|
|
$Env:SFTPGO_ISS_ARCH='arm64'
|
|
iscc .\windows-installer\sftpgo.iss
|
|
|
|
rm .\output\sftpgo.exe
|
|
copy .\x86\sftpgo.exe .\output
|
|
$Env:SFTPGO_ISS_ARCH='x86'
|
|
iscc .\windows-installer\sftpgo.iss
|
|
env:
|
|
SFTPGO_ISS_VERSION: ${{ steps.get_version.outputs.VERSION }}
|
|
|
|
- name: Prepare Portable Release
|
|
run: |
|
|
mkdir win-portable
|
|
copy .\sftpgo.exe .\win-portable
|
|
mkdir win-portable\arm64
|
|
copy .\arm64\sftpgo.exe .\win-portable\arm64
|
|
mkdir win-portable\x86
|
|
copy .\x86\sftpgo.exe .\win-portable\x86
|
|
copy .\sftpgo.json .\win-portable
|
|
(Get-Content .\win-portable\sftpgo.json).replace('"sqlite"', '"bolt"') | Set-Content .\win-portable\sftpgo.json
|
|
copy .\output\sftpgo.db .\win-portable
|
|
copy .\LICENSE .\win-portable\LICENSE.txt
|
|
copy .\NOTICE .\win-portable\NOTICE.txt
|
|
mkdir win-portable\templates
|
|
xcopy .\templates .\win-portable\templates\ /E
|
|
mkdir win-portable\static
|
|
xcopy .\static .\win-portable\static\ /E
|
|
mkdir win-portable\openapi
|
|
xcopy .\openapi .\win-portable\openapi\ /E
|
|
Compress-Archive .\win-portable\* sftpgo_portable.zip
|
|
|
|
- name: Upload Windows installer x86_64 artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.VERSION }}_windows_x86_64.exe
|
|
path: ./sftpgo_windows_x86_64.exe
|
|
retention-days: 1
|
|
|
|
- name: Upload Windows installer arm64 artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.VERSION }}_windows_arm64.exe
|
|
path: ./sftpgo_windows_arm64.exe
|
|
retention-days: 1
|
|
|
|
- name: Upload Windows installer x86 artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.VERSION }}_windows_x86.exe
|
|
path: ./sftpgo_windows_x86.exe
|
|
retention-days: 1
|
|
|
|
- name: Upload Windows portable artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.VERSION }}_windows_portable.zip
|
|
path: ./sftpgo_portable.zip
|
|
retention-days: 1
|
|
|
|
prepare-mac:
|
|
name: Prepare macOS binaries
|
|
runs-on: macos-13
|
|
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v6
|
|
with:
|
|
go-version: ${{ env.GO_VERSION }}
|
|
|
|
- name: Get SFTPGo version
|
|
id: get_version
|
|
run: echo "VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_OUTPUT
|
|
shell: bash
|
|
|
|
- name: Build for macOS x86_64
|
|
run: go build -trimpath -tags nopgxregisterdefaulttypes,disable_grpc_modules -ldflags "-s -w -X github.com/drakkan/sftpgo/v2/internal/version.commit=`git describe --always --abbrev=8 --dirty` -X github.com/drakkan/sftpgo/v2/internal/version.date=`date -u +%FT%TZ`" -o sftpgo
|
|
|
|
- name: Build for macOS arm64
|
|
run: CGO_ENABLED=1 GOOS=darwin GOARCH=arm64 SDKROOT=$(xcrun --sdk macosx --show-sdk-path) go build -trimpath -tags nopgxregisterdefaulttypes,disable_grpc_modules -ldflags "-s -w -X github.com/drakkan/sftpgo/v2/internal/version.commit=`git describe --always --abbrev=8 --dirty` -X github.com/drakkan/sftpgo/v2/internal/version.date=`date -u +%FT%TZ`" -o sftpgo_arm64
|
|
|
|
- name: Initialize data provider
|
|
run: ./sftpgo initprovider
|
|
shell: bash
|
|
|
|
- name: Prepare Release
|
|
run: |
|
|
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://docs.sftpgo.com" >> output/README.txt
|
|
cp LICENSE output/
|
|
cp NOTICE output/
|
|
cp sftpgo output/
|
|
cp sftpgo.json output/
|
|
cp sftpgo.db output/sqlite/
|
|
cp -r static output/
|
|
cp -r openapi output/
|
|
cp -r templates 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/*
|
|
cd output
|
|
tar cJvf ../sftpgo_${SFTPGO_VERSION}_macOS_x86_64.tar.xz *
|
|
cd ..
|
|
cp sftpgo_arm64 output/sftpgo
|
|
cd output
|
|
tar cJvf ../sftpgo_${SFTPGO_VERSION}_macOS_arm64.tar.xz *
|
|
cd ..
|
|
env:
|
|
SFTPGO_VERSION: ${{ steps.get_version.outputs.VERSION }}
|
|
|
|
- name: Upload macOS x86_64 artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.VERSION }}_macOS_x86_64.tar.xz
|
|
path: ./sftpgo_${{ steps.get_version.outputs.VERSION }}_macOS_x86_64.tar.xz
|
|
retention-days: 1
|
|
|
|
- name: Upload macOS arm64 artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.VERSION }}_macOS_arm64.tar.xz
|
|
path: ./sftpgo_${{ steps.get_version.outputs.VERSION }}_macOS_arm64.tar.xz
|
|
retention-days: 1
|
|
|
|
prepare-linux:
|
|
name: Prepare Linux binaries
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- arch: amd64
|
|
distro: ubuntu:18.04
|
|
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
|
|
- arch: armv7
|
|
distro: ubuntu18.04
|
|
go-arch: arm7
|
|
deb-arch: armhf
|
|
rpm-arch: armv7hl
|
|
tar-arch: armv7
|
|
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
|
|
- name: Get versions
|
|
id: get_version
|
|
run: |
|
|
echo "SFTPGO_VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_OUTPUT
|
|
echo "GO_VERSION=${GO_VERSION}" >> $GITHUB_OUTPUT
|
|
echo "COMMIT=${GITHUB_SHA::8}" >> $GITHUB_OUTPUT
|
|
shell: bash
|
|
env:
|
|
GO_VERSION: ${{ env.GO_VERSION }}
|
|
|
|
- name: Build on amd64
|
|
if: ${{ matrix.arch == 'amd64' }}
|
|
run: |
|
|
echo '#!/bin/bash' > build.sh
|
|
echo '' >> build.sh
|
|
echo 'set -e' >> build.sh
|
|
echo 'apt-get update -q -y' >> build.sh
|
|
echo 'apt-get install -q -y curl gcc' >> build.sh
|
|
echo 'curl --retry 5 --retry-delay 2 --connect-timeout 10 -o go.tar.gz -L https://go.dev/dl/go${{ steps.get_version.outputs.GO_VERSION }}.linux-${{ matrix.go-arch }}.tar.gz' >> build.sh
|
|
echo 'tar -C /usr/local -xzf go.tar.gz' >> build.sh
|
|
echo 'export PATH=$PATH:/usr/local/go/bin' >> build.sh
|
|
echo 'go version' >> build.sh
|
|
echo 'cd /usr/local/src' >> build.sh
|
|
echo 'go build -buildvcs=false -trimpath -tags nopgxregisterdefaulttypes,disable_grpc_modules -ldflags "-s -w -X github.com/drakkan/sftpgo/v2/internal/version.commit=${{ steps.get_version.outputs.COMMIT }} -X github.com/drakkan/sftpgo/v2/internal/version.date=`date -u +%FT%TZ`" -o sftpgo' >> build.sh
|
|
|
|
chmod 755 build.sh
|
|
docker run --rm --name ubuntu-build --mount type=bind,source=`pwd`,target=/usr/local/src ${{ matrix.distro }} /usr/local/src/build.sh
|
|
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 NOTICE output/
|
|
cp sftpgo.json output/
|
|
cp -r templates output/
|
|
cp -r static output/
|
|
cp -r openapi 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@v3
|
|
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 xz-utils
|
|
GO_DOWNLOAD_ARCH=${{ matrix.go-arch }}
|
|
if [ ${{ matrix.arch}} == 'armv7' ]
|
|
then
|
|
GO_DOWNLOAD_ARCH=armv6l
|
|
fi
|
|
curl --retry 5 --retry-delay 2 --connect-timeout 10 -o go.tar.gz -L https://go.dev/dl/go${{ steps.get_version.outputs.GO_VERSION }}.linux-${GO_DOWNLOAD_ARCH}.tar.gz
|
|
tar -C /usr/local -xzf go.tar.gz
|
|
run: |
|
|
export PATH=$PATH:/usr/local/go/bin
|
|
go version
|
|
go build -buildvcs=false -trimpath -tags nopgxregisterdefaulttypes,disable_grpc_modules -ldflags "-s -w -X github.com/drakkan/sftpgo/v2/internal/version.commit=${{ steps.get_version.outputs.COMMIT }} -X github.com/drakkan/sftpgo/v2/internal/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 NOTICE output/
|
|
cp sftpgo.json output/
|
|
cp -r templates output/
|
|
cp -r static output/
|
|
cp -r openapi 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: Upload build artifact for ${{ matrix.arch }}
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_linux_${{ matrix.tar-arch }}.tar.xz
|
|
path: ./output/sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_linux_${{ matrix.tar-arch }}.tar.xz
|
|
retention-days: 1
|
|
|
|
- name: Build Packages
|
|
id: build_linux_pkgs
|
|
run: |
|
|
export NFPM_ARCH=${{ matrix.go-arch }}
|
|
cd pkgs
|
|
./build.sh
|
|
PKG_VERSION=${SFTPGO_VERSION:1}
|
|
echo "pkg-version=${PKG_VERSION}" >> $GITHUB_OUTPUT
|
|
env:
|
|
SFTPGO_VERSION: ${{ steps.get_version.outputs.SFTPGO_VERSION }}
|
|
|
|
- name: Upload Deb Package
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: sftpgo_${{ steps.build_linux_pkgs.outputs.pkg-version }}-1_${{ matrix.deb-arch}}.deb
|
|
path: ./pkgs/dist/deb/sftpgo_${{ steps.build_linux_pkgs.outputs.pkg-version }}-1_${{ matrix.deb-arch}}.deb
|
|
retention-days: 1
|
|
|
|
- name: Upload RPM Package
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: sftpgo-${{ steps.build_linux_pkgs.outputs.pkg-version }}-1.${{ matrix.rpm-arch}}.rpm
|
|
path: ./pkgs/dist/rpm/sftpgo-${{ steps.build_linux_pkgs.outputs.pkg-version }}-1.${{ matrix.rpm-arch}}.rpm
|
|
retention-days: 1
|
|
|
|
prepare-linux-bundle:
|
|
name: Prepare Linux bundle
|
|
needs: prepare-linux
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Get versions
|
|
id: get_version
|
|
run: |
|
|
echo "SFTPGO_VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_OUTPUT
|
|
shell: bash
|
|
|
|
- name: Download amd64 artifact
|
|
uses: actions/download-artifact@v5
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_linux_x86_64.tar.xz
|
|
|
|
- name: Download arm64 artifact
|
|
uses: actions/download-artifact@v5
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_linux_arm64.tar.xz
|
|
|
|
- name: Download ppc64le artifact
|
|
uses: actions/download-artifact@v5
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_linux_ppc64le.tar.xz
|
|
|
|
- name: Download armv7 artifact
|
|
uses: actions/download-artifact@v5
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_linux_armv7.tar.xz
|
|
|
|
- name: Build bundle
|
|
shell: bash
|
|
run: |
|
|
mkdir -p bundle/{arm64,ppc64le,armv7}
|
|
cd bundle
|
|
tar xvf ../sftpgo_${SFTPGO_VERSION}_linux_x86_64.tar.xz
|
|
cd arm64
|
|
tar xvf ../../sftpgo_${SFTPGO_VERSION}_linux_arm64.tar.xz sftpgo
|
|
cd ../ppc64le
|
|
tar xvf ../../sftpgo_${SFTPGO_VERSION}_linux_ppc64le.tar.xz sftpgo
|
|
cd ../armv7
|
|
tar xvf ../../sftpgo_${SFTPGO_VERSION}_linux_armv7.tar.xz sftpgo
|
|
cd ..
|
|
tar cJvf sftpgo_${SFTPGO_VERSION}_linux_bundle.tar.xz *
|
|
cd ..
|
|
env:
|
|
SFTPGO_VERSION: ${{ steps.get_version.outputs.SFTPGO_VERSION }}
|
|
|
|
- name: Upload Linux bundle
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_linux_bundle.tar.xz
|
|
path: ./bundle/sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_linux_bundle.tar.xz
|
|
retention-days: 1
|
|
|
|
create-release:
|
|
name: Release
|
|
needs: [prepare-linux-bundle, prepare-sources-with-deps, prepare-mac, prepare-windows]
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- name: Get versions
|
|
id: get_version
|
|
run: |
|
|
SFTPGO_VERSION=${GITHUB_REF/refs\/tags\//}
|
|
PKG_VERSION=${SFTPGO_VERSION:1}
|
|
echo "SFTPGO_VERSION=${SFTPGO_VERSION}" >> $GITHUB_OUTPUT
|
|
echo "PKG_VERSION=${PKG_VERSION}" >> $GITHUB_OUTPUT
|
|
shell: bash
|
|
|
|
- name: Download amd64 artifact
|
|
uses: actions/download-artifact@v5
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_linux_x86_64.tar.xz
|
|
|
|
- name: Download arm64 artifact
|
|
uses: actions/download-artifact@v5
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_linux_arm64.tar.xz
|
|
|
|
- name: Download ppc64le artifact
|
|
uses: actions/download-artifact@v5
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_linux_ppc64le.tar.xz
|
|
|
|
- name: Download armv7 artifact
|
|
uses: actions/download-artifact@v5
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_linux_armv7.tar.xz
|
|
|
|
- name: Download Linux bundle artifact
|
|
uses: actions/download-artifact@v5
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_linux_bundle.tar.xz
|
|
|
|
- name: Download Deb amd64 artifact
|
|
uses: actions/download-artifact@v5
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.PKG_VERSION }}-1_amd64.deb
|
|
|
|
- name: Download Deb arm64 artifact
|
|
uses: actions/download-artifact@v5
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.PKG_VERSION }}-1_arm64.deb
|
|
|
|
- name: Download Deb ppc64le artifact
|
|
uses: actions/download-artifact@v5
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.PKG_VERSION }}-1_ppc64el.deb
|
|
|
|
- name: Download Deb armv7 artifact
|
|
uses: actions/download-artifact@v5
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.PKG_VERSION }}-1_armhf.deb
|
|
|
|
- name: Download RPM x86_64 artifact
|
|
uses: actions/download-artifact@v5
|
|
with:
|
|
name: sftpgo-${{ steps.get_version.outputs.PKG_VERSION }}-1.x86_64.rpm
|
|
|
|
- name: Download RPM aarch64 artifact
|
|
uses: actions/download-artifact@v5
|
|
with:
|
|
name: sftpgo-${{ steps.get_version.outputs.PKG_VERSION }}-1.aarch64.rpm
|
|
|
|
- name: Download RPM ppc64le artifact
|
|
uses: actions/download-artifact@v5
|
|
with:
|
|
name: sftpgo-${{ steps.get_version.outputs.PKG_VERSION }}-1.ppc64le.rpm
|
|
|
|
- name: Download RPM armv7 artifact
|
|
uses: actions/download-artifact@v5
|
|
with:
|
|
name: sftpgo-${{ steps.get_version.outputs.PKG_VERSION }}-1.armv7hl.rpm
|
|
|
|
- name: Download macOS x86_64 artifact
|
|
uses: actions/download-artifact@v5
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_macOS_x86_64.tar.xz
|
|
|
|
- name: Download macOS arm64 artifact
|
|
uses: actions/download-artifact@v5
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_macOS_arm64.tar.xz
|
|
|
|
- name: Download Windows installer x86_64 artifact
|
|
uses: actions/download-artifact@v5
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_windows_x86_64.exe
|
|
|
|
- name: Download Windows installer arm64 artifact
|
|
uses: actions/download-artifact@v5
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_windows_arm64.exe
|
|
|
|
- name: Download Windows installer x86 artifact
|
|
uses: actions/download-artifact@v5
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_windows_x86.exe
|
|
|
|
- name: Download Windows portable artifact
|
|
uses: actions/download-artifact@v5
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_windows_portable.zip
|
|
|
|
- name: Download source with deps artifact
|
|
uses: actions/download-artifact@v5
|
|
with:
|
|
name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_src_with_deps.tar.xz
|
|
|
|
- name: Create release
|
|
run: |
|
|
mv sftpgo_windows_x86_64.exe sftpgo_${SFTPGO_VERSION}_windows_x86_64.exe
|
|
mv sftpgo_windows_arm64.exe sftpgo_${SFTPGO_VERSION}_windows_arm64.exe
|
|
mv sftpgo_windows_x86.exe sftpgo_${SFTPGO_VERSION}_windows_x86.exe
|
|
mv sftpgo_portable.zip sftpgo_${SFTPGO_VERSION}_windows_portable.zip
|
|
gh release create "${SFTPGO_VERSION}" -t "${SFTPGO_VERSION}"
|
|
gh release upload "${SFTPGO_VERSION}" sftpgo_*.xz --clobber
|
|
gh release upload "${SFTPGO_VERSION}" sftpgo-*.rpm --clobber
|
|
gh release upload "${SFTPGO_VERSION}" sftpgo_*.deb --clobber
|
|
gh release upload "${SFTPGO_VERSION}" sftpgo_*.exe --clobber
|
|
gh release upload "${SFTPGO_VERSION}" sftpgo_*.zip --clobber
|
|
gh release view "${SFTPGO_VERSION}"
|
|
env:
|
|
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
|
SFTPGO_VERSION: ${{ steps.get_version.outputs.SFTPGO_VERSION }} |