name: Executables on: workflow_dispatch: push: branches: - master tags-ignore: - "*" env: DATE_FORMAT: "%Y.%m.%d" jobs: build: if: github.repository == 'mikf/gallery-dl' runs-on: ${{ matrix.os }} defaults: run: shell: bash strategy: fail-fast: false matrix: os: ["windows-latest", "macOS-latest"] architecture: ["x64"] python-version: ["3.12"] python-packages: [""] include: - os: "ubuntu-latest" architecture: "x64" python-version: "3.12" python-packages: "secretstorage" - os: "windows-2019" architecture: "x86" python-version: "3.8" python-packages: "toml" steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} ${{ matrix.architecture }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} architecture: ${{ matrix.architecture }} - name: Environment Variables run: | echo "DATE=$(date '+${{ env.DATE_FORMAT }}')" >> "$GITHUB_ENV" echo "LABEL=$(python ./scripts/pyinstaller.py --print --os '${{ matrix.os }}' --arch '${{ matrix.architecture }}')" >> "$GITHUB_ENV" - name: Update Version # use Python since its behavior is consistent across operating systems shell: python run: | import re path = "./gallery_dl/version.py" with open(path) as fp: content = fp.read() content = re.sub( r'\b(__version__ = "[^"]+)', r"\1:${{ env.DATE }}", content) content = re.sub( r'\b(__variant__ =).+', r'\1 "dev/${{ env.LABEL }}"', content) with open(path, "w") as fp: fp.write(content) - name: Build executable run: | pip install 'setuptools<71' 'requests<2.32' requests[socks] yt-dlp pyyaml ${{ matrix.python-packages }} pyinstaller python ./scripts/pyinstaller.py --label '${{ env.LABEL }}' - uses: actions/upload-artifact@v4 with: name: executable-${{ matrix.os }}-${{ matrix.architecture }}-${{ matrix.python-version }} path: dist/* retention-days: 1 compression-level: 0 release: needs: build runs-on: ubuntu-latest steps: - uses: actions/download-artifact@v4 - name: Environment Variables run: echo "DATE=$(date '+${{ env.DATE_FORMAT }}')" >> "$GITHUB_ENV" - name: Body run: printf 'https://github.com/%s/commit/%s' '${{ github.repository }}' '${{ github.sha }}' > body.md - uses: ncipollo/release-action@v1 with: owner: gdl-org repo: builds tag: ${{ env.DATE }} bodyFile: body.md artifacts: "executable-*/*" allowUpdates: true makeLatest: true token: ${{ secrets.REPO_TOKEN }}