|
| 1 | +name: Build latest for Windows 7 |
| 2 | +run-name: Check latest TorrServer release and build with go1.21.4 for Windows 7 🚀 |
| 3 | +permissions: |
| 4 | + contents: write |
| 5 | +on: |
| 6 | + schedule: |
| 7 | + # Every day at 15:30 UTC |
| 8 | + - cron: 30 15 * * * |
| 9 | + workflow_dispatch: |
| 10 | + |
| 11 | +env: |
| 12 | + TS_REPO_NAME: ${{ vars.REPO_VAR__SOURCE_REPO }} |
| 13 | + W7_REPO_NAME: ${{ github.repository }} |
| 14 | + |
| 15 | +jobs: |
| 16 | + check_build_needed: |
| 17 | + name: "Check if new build needed" |
| 18 | + runs-on: ubuntu-latest |
| 19 | + steps: |
| 20 | + - name: Get latest ${{ env.TS_REPO_NAME }} release tag |
| 21 | + id: get_ts_release_tag |
| 22 | + run: | |
| 23 | + echo "ts_release_tag=$(curl -s https://api.github.com/repos/$TS_REPO_NAME/releases/latest | jq '.tag_name' | sed 's/\"//g')" >> "$GITHUB_ENV" |
| 24 | + - name: Get latest ${{ env.W7_REPO_NAME }} release tag |
| 25 | + run: echo "w7_release_tag=$(curl -s https://api.github.com/repos/$W7_REPO_NAME/releases/latest | jq '.tag_name' | sed 's/\"//g')" >> "$GITHUB_ENV" |
| 26 | + - name: Decide that there is a need to compile a new release |
| 27 | + run: | |
| 28 | + echo "is_needed_build=${{ ((env.w7_release_tag == '') || (env.w7_release_tag == 'null') || (env.w7_release_tag != env.ts_release_tag)) && 'TRUE' || 'FALSE' }}" >> "$GITHUB_ENV" |
| 29 | + - name: Export variables |
| 30 | + id: export_vars |
| 31 | + run: | |
| 32 | + echo "is_needed_build=$is_needed_build" >> "$GITHUB_OUTPUT" |
| 33 | + echo "ts_release_tag=$ts_release_tag" >> "$GITHUB_OUTPUT" |
| 34 | + echo "w7_release_tag=$w7_release_tag" >> "$GITHUB_OUTPUT" |
| 35 | +
|
| 36 | + echo "ts_repo_name: $TS_REPO_NAME" |
| 37 | + echo "w7_repo_name: $W7_REPO_NAME" |
| 38 | + echo "Need build: $is_needed_build" |
| 39 | + echo "TS release tag: $ts_release_tag" |
| 40 | + echo "W7 release tag: $w7_release_tag" |
| 41 | +
|
| 42 | + outputs: |
| 43 | + is_needed_build: ${{ steps.export_vars.outputs.is_needed_build }} |
| 44 | + ts_release_tag: ${{ steps.export_vars.outputs.ts_release_tag }} |
| 45 | + |
| 46 | + print_data_and_check: |
| 47 | + name: "Print data" |
| 48 | + needs: check_build_needed |
| 49 | + runs-on: ubuntu-latest |
| 50 | + env: |
| 51 | + is_needed_build: ${{ needs.check_build_needed.outputs.is_needed_build }} |
| 52 | + ts_release_tag: ${{ needs.check_build_needed.outputs.ts_release_tag }} |
| 53 | + steps: |
| 54 | + - name: Print data |
| 55 | + run: | |
| 56 | + echo "is_needed_build=$is_needed_build" |
| 57 | + echo "ts_release_tag=$ts_release_tag" |
| 58 | + - name: Fail on empty TS_RELEASE_TAG |
| 59 | + if: ${{ env.ts_release_tag == '' }} |
| 60 | + run: | |
| 61 | + echo "::error ::TS_RELEASE_TAG ($ts_release_tag) is EMPTY" |
| 62 | + exit 1 |
| 63 | + - name: Succeed on IS_NEED_BUILD is TRUE |
| 64 | + if: ${{ env.is_needed_build != 'TRUE' }}" |
| 65 | + run: | |
| 66 | + echo "::notice ::IS_NEED_BUILD is TRUE" |
| 67 | + outputs: |
| 68 | + is_needed_build: ${{ env.is_needed_build }} |
| 69 | + ts_release_tag: ${{ env.ts_release_tag }} |
| 70 | + |
| 71 | + build_release: |
| 72 | + name: "Build release" |
| 73 | + needs: print_data_and_check |
| 74 | + runs-on: ubuntu-latest |
| 75 | + env: |
| 76 | + is_needed_build: ${{ needs.print_data_and_check.outputs.is_needed_build }} |
| 77 | + ts_release_tag: ${{ needs.print_data_and_check.outputs.ts_release_tag }} |
| 78 | + if: ${{ needs.print_data_and_check.outputs.is_needed_build == 'TRUE'}} |
| 79 | + steps: |
| 80 | + - name: Check out latest release |
| 81 | + uses: actions/checkout@v4 |
| 82 | + with: |
| 83 | + repository: ${{ env.TS_REPO_NAME }} |
| 84 | + ref: ${{ env.ts_release_tag }} |
| 85 | + lfs: true |
| 86 | + submodules: true |
| 87 | + path: torrserver |
| 88 | + - name: Install node |
| 89 | + uses: actions/setup-node@v4 |
| 90 | + with: |
| 91 | + node-version: '18.19.0' |
| 92 | + - name: Install Go |
| 93 | + uses: actions/setup-go@v5 |
| 94 | + with: |
| 95 | + go-version: '1.21.4' |
| 96 | + - name: Install Yarn |
| 97 | + run: | |
| 98 | + npm install --global yarn |
| 99 | + - name: Install modules |
| 100 | + working-directory: ./torrserver/web |
| 101 | + run: | |
| 102 | + npm install |
| 103 | + - name: Install swag |
| 104 | + run: | |
| 105 | + go install github.com/swaggo/swag/cmd/swag@latest |
| 106 | + - name: Run swag |
| 107 | + working-directory: ./torrserver/server |
| 108 | + run: | |
| 109 | + $HOME/go/bin/swag init -g web/server.go |
| 110 | + $HOME/go/bin/swag fmt |
| 111 | + - name: Build web |
| 112 | + run: | |
| 113 | + NODE_OPTIONS=--openssl-legacy-provider yarn build |
| 114 | + working-directory: ./torrserver/web |
| 115 | + - name: Remove non-windows platforms |
| 116 | + working-directory: ./torrserver |
| 117 | + run: | |
| 118 | + sed -i -r "/^\s+\x27(linux|darwin|freebsd)\/\S+\x27\s*$/d" ./build-all.sh |
| 119 | + sed -i -r "/^\s+\x22\S+:\S+linux-android\S+\x22\s*$/d" ./build-all.sh |
| 120 | + - name: Build TorrServer |
| 121 | + working-directory: ./torrserver |
| 122 | + run: | |
| 123 | + chmod +x ./build-all.sh |
| 124 | + ./build-all.sh |
| 125 | + - name: Create release |
| 126 | + id: create_release |
| 127 | + env: |
| 128 | + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| 129 | + uses: softprops/action-gh-release@v1 |
| 130 | + with: |
| 131 | + name: ${{ env.ts_release_tag }} for Windows 7 |
| 132 | + tag_name: ${{ env.ts_release_tag }} |
| 133 | + draft: false |
| 134 | + prerelease: false |
| 135 | + files: | |
| 136 | + ./torrserver/dist/*.exe |
| 137 | + body: | |
| 138 | + ${{ env.ts_release_tag }} для Windows 7 |
| 139 | + Эта сборка выполнена автоматически и предоставляется AS-IS. |
| 140 | + Скрипт сборки вы можете найти в репозитории. |
| 141 | +
|
| 142 | + Начиная с go1.21.5 приложения, собранные с его помощью, не запускаются в Windows 7. |
| 143 | + Поддержка Windows 7 прекращена с go1.21. |
| 144 | + С помощью go1.20 уже нельзя собрать TorrServer. |
| 145 | + |
| 146 | + Таким образом, неизвестно, как долго получится поддерживать |
| 147 | + сборку с помощью go1.21.4, последней совместимой с Windows 7. |
| 148 | + |
| 149 | + This is automated daily build and provided AS-IS |
| 150 | + fail_on_unmatched_files: true |
| 151 | + generate_release_notes: false |
| 152 | + - run: echo "Finished" |
0 commit comments