| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607 |
- name: Release
- on:
- push:
- tags: 'v*'
- env:
- GO_VERSION: 1.21.3
- jobs:
- prepare-sources-with-deps:
- name: Prepare sources with deps
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - name: Set up Go
- uses: actions/setup-go@v5
- 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@v3
- 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-window-mac:
- name: Prepare binaries
- runs-on: ${{ matrix.os }}
- strategy:
- matrix:
- os: [macos-11, windows-2022]
- steps:
- - uses: actions/checkout@v4
- - name: Set up Go
- uses: actions/setup-go@v5
- 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: Get OS name
- id: get_os_name
- run: |
- if [[ $MATRIX_OS =~ ^macos.* ]]
- then
- echo "OS=macOS" >> $GITHUB_OUTPUT
- else
- echo "OS=windows" >> $GITHUB_OUTPUT
- fi
- shell: bash
- env:
- MATRIX_OS: ${{ matrix.os }}
- - name: Build for macOS x86_64
- if: startsWith(matrix.os, 'windows-') != true
- run: go build -trimpath -tags nopgxregisterdefaulttypes -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
- if: startsWith(matrix.os, 'macos-') == true
- run: CGO_ENABLED=1 GOOS=darwin GOARCH=arm64 SDKROOT=$(xcrun --sdk macosx --show-sdk-path) go build -trimpath -tags nopgxregisterdefaulttypes -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: Build for Windows
- if: startsWith(matrix.os, 'windows-')
- 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 "AGPL-3.0" --original-filename sftpgo.exe --icon .\windows-installer\icon.ico
- go build -trimpath -tags nopgxregisterdefaulttypes -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 "AGPL-3.0" --original-filename sftpgo.exe --icon .\windows-installer\icon.ico
- go build -trimpath -tags nopgxregisterdefaulttypes,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 "AGPL-3.0" --original-filename sftpgo.exe --icon .\windows-installer\icon.ico
- go build -trimpath -tags nopgxregisterdefaulttypes,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 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
- echo "" >> output/README.txt
- echo "https://github.com/drakkan/sftpgo/blob/${SFTPGO_VERSION}/README.md" >> output/README.txt
- cp LICENSE 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}_${OS}_x86_64.tar.xz *
- cd ..
- cp sftpgo_arm64 output/sftpgo
- cd output
- tar cJvf ../sftpgo_${SFTPGO_VERSION}_${OS}_arm64.tar.xz *
- cd ..
- env:
- SFTPGO_VERSION: ${{ steps.get_version.outputs.VERSION }}
- OS: ${{ steps.get_os_name.outputs.OS }}
- - name: Prepare Release for Windows
- if: startsWith(matrix.os, 'windows-')
- run: |
- mkdir output
- copy .\sftpgo.exe .\output
- copy .\sftpgo.json .\output
- copy .\sftpgo.db .\output
- copy .\LICENSE .\output\LICENSE.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
- $CERT_PATH=(Get-Location -PSProvider FileSystem).ProviderPath + "\cert.pfx"
- [IO.File]::WriteAllBytes($CERT_PATH,[System.Convert]::FromBase64String($Env:CERT_DATA))
- certutil -f -p "$Env:CERT_PASS" -importpfx MY "$CERT_PATH"
- rm "$CERT_PATH"
- & 'C:/Program Files (x86)/Windows Kits/10/bin/10.0.20348.0/x86/signtool.exe' sign /sm /tr http://timestamp.sectigo.com /td sha256 /fd sha256 /n "Nicola Murino" /d "SFTPGo" .\sftpgo.exe
- & 'C:/Program Files (x86)/Windows Kits/10/bin/10.0.20348.0/x86/signtool.exe' sign /sm /tr http://timestamp.sectigo.com /td sha256 /fd sha256 /n "Nicola Murino" /d "SFTPGo" .\arm64\sftpgo.exe
- & 'C:/Program Files (x86)/Windows Kits/10/bin/10.0.20348.0/x86/signtool.exe' sign /sm /tr http://timestamp.sectigo.com /td sha256 /fd sha256 /n "Nicola Murino" /d "SFTPGo" .\x86\sftpgo.exe
- $INNO_S='/Ssigntool=$qC:/Program Files (x86)/Windows Kits/10/bin/10.0.20348.0/x86/signtool.exe$q sign /sm /tr http://timestamp.sectigo.com /td sha256 /fd sha256 /n $qNicola Murino$q /d $qSFTPGo$q $f'
- iscc "$INNO_S" .\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 "$INNO_S" .\windows-installer\sftpgo.iss
- rm .\output\sftpgo.exe
- copy .\x86\sftpgo.exe .\output
- $Env:SFTPGO_ISS_ARCH='x86'
- iscc "$INNO_S" .\windows-installer\sftpgo.iss
- certutil -delstore MY "Nicola Murino"
- env:
- SFTPGO_ISS_VERSION: ${{ steps.get_version.outputs.VERSION }}
- SFTPGO_ISS_DOC_URL: https://github.com/drakkan/sftpgo/blob/${{ steps.get_version.outputs.VERSION }}/README.md
- CERT_DATA: ${{ secrets.CERT_DATA }}
- CERT_PASS: ${{ secrets.CERT_PASS }}
- - name: Prepare Portable Release for Windows
- if: startsWith(matrix.os, 'windows-')
- 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
- 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 macOS x86_64 artifact
- if: startsWith(matrix.os, 'macos-')
- uses: actions/upload-artifact@v3
- with:
- name: sftpgo_${{ steps.get_version.outputs.VERSION }}_${{ steps.get_os_name.outputs.OS }}_x86_64.tar.xz
- path: ./sftpgo_${{ steps.get_version.outputs.VERSION }}_${{ steps.get_os_name.outputs.OS }}_x86_64.tar.xz
- retention-days: 1
- - name: Upload macOS arm64 artifact
- if: startsWith(matrix.os, 'macos-')
- uses: actions/upload-artifact@v3
- with:
- name: sftpgo_${{ steps.get_version.outputs.VERSION }}_${{ steps.get_os_name.outputs.OS }}_arm64.tar.xz
- path: ./sftpgo_${{ steps.get_version.outputs.VERSION }}_${{ steps.get_os_name.outputs.OS }}_arm64.tar.xz
- retention-days: 1
- - name: Upload Windows installer x86_64 artifact
- if: startsWith(matrix.os, 'windows-')
- uses: actions/upload-artifact@v3
- with:
- name: sftpgo_${{ steps.get_version.outputs.VERSION }}_${{ steps.get_os_name.outputs.OS }}_x86_64.exe
- path: ./sftpgo_windows_x86_64.exe
- retention-days: 1
- - name: Upload Windows installer arm64 artifact
- if: startsWith(matrix.os, 'windows-')
- uses: actions/upload-artifact@v3
- with:
- name: sftpgo_${{ steps.get_version.outputs.VERSION }}_${{ steps.get_os_name.outputs.OS }}_arm64.exe
- path: ./sftpgo_windows_arm64.exe
- retention-days: 1
- - name: Upload Windows installer x86 artifact
- if: startsWith(matrix.os, 'windows-')
- uses: actions/upload-artifact@v3
- with:
- name: sftpgo_${{ steps.get_version.outputs.VERSION }}_${{ steps.get_os_name.outputs.OS }}_x86.exe
- path: ./sftpgo_windows_x86.exe
- retention-days: 1
- - name: Upload Windows portable artifact
- if: startsWith(matrix.os, 'windows-')
- uses: actions/upload-artifact@v3
- with:
- name: sftpgo_${{ steps.get_version.outputs.VERSION }}_${{ steps.get_os_name.outputs.OS }}_portable.zip
- path: ./sftpgo_portable.zip
- 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@v4
- - 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 -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 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@v2
- 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 -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 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@v3
- 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@v3
- 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@v3
- 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@v3
- with:
- name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_linux_x86_64.tar.xz
- - name: Download arm64 artifact
- uses: actions/download-artifact@v3
- with:
- name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_linux_arm64.tar.xz
- - name: Download ppc64le artifact
- uses: actions/download-artifact@v3
- with:
- name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_linux_ppc64le.tar.xz
- - name: Download armv7 artifact
- uses: actions/download-artifact@v3
- 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@v3
- 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-window-mac]
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - 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@v3
- with:
- name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_linux_x86_64.tar.xz
- - name: Download arm64 artifact
- uses: actions/download-artifact@v3
- with:
- name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_linux_arm64.tar.xz
- - name: Download ppc64le artifact
- uses: actions/download-artifact@v3
- with:
- name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_linux_ppc64le.tar.xz
- - name: Download armv7 artifact
- uses: actions/download-artifact@v3
- with:
- name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_linux_armv7.tar.xz
- - name: Download Linux bundle artifact
- uses: actions/download-artifact@v3
- with:
- name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_linux_bundle.tar.xz
- - name: Download Deb amd64 artifact
- uses: actions/download-artifact@v3
- with:
- name: sftpgo_${{ steps.get_version.outputs.PKG_VERSION }}-1_amd64.deb
- - name: Download Deb arm64 artifact
- uses: actions/download-artifact@v3
- with:
- name: sftpgo_${{ steps.get_version.outputs.PKG_VERSION }}-1_arm64.deb
- - name: Download Deb ppc64le artifact
- uses: actions/download-artifact@v3
- with:
- name: sftpgo_${{ steps.get_version.outputs.PKG_VERSION }}-1_ppc64el.deb
- - name: Download Deb armv7 artifact
- uses: actions/download-artifact@v3
- with:
- name: sftpgo_${{ steps.get_version.outputs.PKG_VERSION }}-1_armhf.deb
- - name: Download RPM x86_64 artifact
- uses: actions/download-artifact@v3
- with:
- name: sftpgo-${{ steps.get_version.outputs.PKG_VERSION }}-1.x86_64.rpm
- - name: Download RPM aarch64 artifact
- uses: actions/download-artifact@v3
- with:
- name: sftpgo-${{ steps.get_version.outputs.PKG_VERSION }}-1.aarch64.rpm
- - name: Download RPM ppc64le artifact
- uses: actions/download-artifact@v3
- with:
- name: sftpgo-${{ steps.get_version.outputs.PKG_VERSION }}-1.ppc64le.rpm
- - name: Download RPM armv7 artifact
- uses: actions/download-artifact@v3
- with:
- name: sftpgo-${{ steps.get_version.outputs.PKG_VERSION }}-1.armv7hl.rpm
- - name: Download macOS x86_64 artifact
- uses: actions/download-artifact@v3
- with:
- name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_macOS_x86_64.tar.xz
- - name: Download macOS arm64 artifact
- uses: actions/download-artifact@v3
- with:
- name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_macOS_arm64.tar.xz
- - name: Download Windows installer x86_64 artifact
- uses: actions/download-artifact@v3
- with:
- name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_windows_x86_64.exe
- - name: Download Windows installer arm64 artifact
- uses: actions/download-artifact@v3
- with:
- name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_windows_arm64.exe
- - name: Download Windows installer x86 artifact
- uses: actions/download-artifact@v3
- with:
- name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_windows_x86.exe
- - name: Download Windows portable artifact
- uses: actions/download-artifact@v3
- with:
- name: sftpgo_${{ steps.get_version.outputs.SFTPGO_VERSION }}_windows_portable.zip
- - name: Download source with deps artifact
- uses: actions/download-artifact@v3
- 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 }}
|