# This script can be tested locally with act: # # act --secret GITHUB_TOKEN=... --job release # # https://github.com/nektos/act/ # To generate a token: https://github.com/settings/tokens (add r/w permissions for "Contents") name: Release on: push: tags: - '*' workflow_dispatch: jobs: release: runs-on: ${{ matrix.os }} strategy: matrix: include: # https://github.com/actions/runner-images#available-images # It's important that we build the tutor binaries with the *oldest* possible # OS releases and Python version. See these docs for more information: # https://pyinstaller.org/en/stable/usage.html#making-gnu-linux-apps-forward-compatible - os: ubuntu-20.04 locale: C.UTF-8 # https://endoflife.date/macos - os: macos-11 locale: en_US.UTF-8 env: LC_ALL: ${{ matrix.locale }} LANG: ${{ matrix.locale }} steps: ##### Setup environment # https://github.com/actions/checkout - uses: actions/checkout@v3 - name: Set up Python # https://github.com/actions/setup-python uses: actions/setup-python@v3 with: python-version: 3.8 cache: 'pip' cache-dependency-path: requirements/dev.txt - name: Upgrade pip and setuptools # https://pypi.org/project/pip/ # https://pypi.org/project/setuptools/ # https://pypi.org/project/wheel/ run: python -m pip install --upgrade pip setuptools==65.6.3 wheel - name: Print info about the current python installation run: make ci-info - name: Install requirements run: make bootstrap-dev-plugins ##### Run tests, generate bundle # - name: Run tests # run: make test - name: Create bundle run: make bundle # - name: Test bundle # run: make ci-test-bundle ##### Download gh utility: https://github.com/cli/cli/releases # This is unnecessary on GitHub, but useful when running locally with act. # WARNING: this will only work on amd64 - name: Check or download gh utility run: | if ! which gh; then echo "Downloading 'gh' utility" if [ "$(uname -s)" = "Linux" ]; then curl -L -o gh.tar.gz https://github.com/cli/cli/releases/download/v2.28.0/gh_2.28.0_linux_amd64.tar.gz tar xzf gh.tar.gz mv ./gh_2.28.0_linux_amd64/bin/gh /usr/local/bin/gh else curl -L -o gh.zip https://github.com/cli/cli/releases/download/v2.28.0/gh_2.28.0_macOS_amd64.zip unzip xzf gh.zip mv ./gh_2.28.0_macOS_amd64/bin/gh /usr/local/bin/gh fi which gh fi ##### Create release on GitHub - name: Create or update GitHub release run: scriv github-release --repo=overhangio/tutor env: GITHUB_TOKEN: ${{ github.token }} # scriv command will fail when not on a tag, such as running with act or a # manual trigger. if: ${{ github.ref_type == 'tag' }} - name: Upload release asset to GitHub run: | export FILENAME="tutor-$(uname -s)_$(uname -m)" mv ./dist/tutor $FILENAME gh release upload --clobber v$(make version) $FILENAME env: GH_TOKEN: ${{ github.token }}