name: GitHub CI on: push: branches: [ master ] tags: - '**' workflow_dispatch: pull_request: concurrency: group: ${{ github.ref }}-${{ github.workflow }} cancel-in-progress: true jobs: linux_build: strategy: matrix: include: - arch: x86 artifact: subconverter_linux32 os: ubuntu-latest - arch: amd64 artifact: subconverter_linux64 os: ubuntu-latest - arch: armv7 artifact: subconverter_armv7 os: ubuntu-latest - arch: aarch64 artifact: subconverter_aarch64 os: ubuntu-latest runs-on: ${{ matrix.os }} name: Linux ${{ matrix.arch }} Build steps: - name: Checkout base uses: actions/checkout@v4 - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Add commit id into version if: ${{ !startsWith(github.ref, 'refs/tags/') }} run: SHA=$(git rev-parse --short HEAD) && sed -i 's/\(v[0-9]\.[0-9]\.[0-9]\)/\1-'"$SHA"'/' src/version.h - name: Build run: docker run --rm -v $GITHUB_WORKSPACE:/root/workdir multiarch/alpine:${{ matrix.arch }}-latest-stable /bin/sh -c "apk add bash git nodejs npm && cd /root/workdir && chmod +x scripts/build.alpine.release.sh && bash scripts/build.alpine.release.sh" - name: Upload uses: actions/upload-artifact@v4 with: name: ${{ matrix.artifact }} path: subconverter/ - name: Package Release if: ${{ github.event_name != 'pull_request' && startsWith(github.ref, 'refs/tags/') }} run: tar czf ${{ matrix.artifact }}.tar.gz subconverter - name: Draft Release if: ${{ github.event_name != 'pull_request' && startsWith(github.ref, 'refs/tags/') }} uses: softprops/action-gh-release@v2 with: files: ${{ matrix.artifact }}.tar.gz draft: true macos_build: strategy: matrix: include: - arch: x86 artifact: subconverter_darwin64 os: macos-13 - arch: arm artifact: subconverter_darwinarm os: macos-14 runs-on: ${{ matrix.os }} name: macOS ${{ matrix.arch }} Build steps: - name: Checkout base uses: actions/checkout@v4 - name: Setup Python uses: actions/setup-python@v5 with: python-version: '3.11' - name: Add commit id into version if: ${{ !startsWith(github.ref, 'refs/tags/') }} run: SHA=$(git rev-parse --short HEAD) && sed -i -e 's/\(v[0-9]\.[0-9]\.[0-9]\)/\1-'"$SHA"'/' src/version.h - name: Build run: bash scripts/build.macos.release.sh - name: Upload uses: actions/upload-artifact@v4 with: name: ${{ matrix.artifact }} path: subconverter/ - name: Package Release if: ${{ github.event_name != 'pull_request' && startsWith(github.ref, 'refs/tags/') }} run: tar czf ${{ matrix.artifact }}.tar.gz subconverter - name: Draft Release if: ${{ github.event_name != 'pull_request' && startsWith(github.ref, 'refs/tags/') }} uses: softprops/action-gh-release@v2 with: files: ${{ matrix.artifact }}.tar.gz draft: true windows_build: strategy: matrix: include: - arch: x86 artifact: subconverter_win32 env: i686 msystem: MINGW32 - arch: amd64 artifact: subconverter_win64 env: x86_64 msystem: MINGW64 runs-on: windows-latest name: Windows ${{ matrix.arch }} Build defaults: run: shell: msys2 {0} steps: - name: Checkout base uses: actions/checkout@v4 - name: Setup Python uses: actions/setup-python@v5 with: python-version: '3.11' - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '16' - name: Setup MSYS2 uses: msys2/setup-msys2@v2 with: update: true install: base-devel git mingw-w64-${{ matrix.env }}-gcc mingw-w64-${{ matrix.env }}-cmake mingw-w64-${{ matrix.env }}-pcre2 patch msystem: ${{ matrix.msystem }} path-type: inherit - name: Add commit id into version if: ${{ !startsWith(github.ref, 'refs/tags/') }} run: SHA=$(git rev-parse --short HEAD) && sed -i 's/\(v[0-9]\.[0-9]\.[0-9]\)/\1-'"$SHA"'/' src/version.h - name: Build run: bash scripts/build.windows.release.sh - name: Upload uses: actions/upload-artifact@v4 with: name: ${{ matrix.artifact }} path: subconverter/ - name: Package Release if: ${{ github.event_name != 'pull_request' && startsWith(github.ref, 'refs/tags/') }} run: 7z a ${{ matrix.artifact }}.7z subconverter/ - name: Draft Release if: ${{ github.event_name != 'pull_request' && startsWith(github.ref, 'refs/tags/') }} uses: softprops/action-gh-release@v2 with: files: ${{ matrix.artifact }}.7z draft: true