# https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions name: Build on: push: branches: - '**' tags-ignore: - '**' paths-ignore: - '**/*.md' pull_request: workflow_dispatch: # https://github.blog/changelog/2020-07-06-github-actions-manual-triggers-with-workflow_dispatch/ defaults: run: shell: bash jobs: build: strategy: fail-fast: false matrix: os: - macos-latest - ubuntu-latest - windows-latest runs-on: ${{ matrix.os }} steps: - name: Git Checkout uses: actions/checkout@v2 #https://github.com/actions/checkout - uses: actions/setup-python@v2 with: python-version: "3.10" - name: Install python dependencies run: | set -eux python --version pip install .[dev] - name: bandit run: | set -eux bandit -c pyproject.toml --exclude '*/.eggs/*' -r . - name: pylint run: | set -eux pip install pylint pylint kleinanzeigen_bot - name: pytest run: | set -eux python -m pytest - name: run kleinanzeigen_bot run: | echo " login: username: 'john.doe@example.com' password: 'such_a_secret' " > config.yaml set -eux python -m kleinanzeigen_bot help python -m kleinanzeigen_bot version python -m kleinanzeigen_bot verify - name: py2exe if: startsWith(matrix.os, 'windows') run: | python setup.py py2exe ls -l dist - name: run kleinanzeigen_bot.exe if: startsWith(matrix.os, 'windows') run: | set -eux dist/kleinanzeigen-bot.exe help dist/kleinanzeigen-bot.exe version dist/kleinanzeigen-bot.exe verify - name: "Delete previous 'latest' release" if: startsWith(matrix.os, 'windows') && github.ref == 'refs/heads/main' run: | set -eu api_base_url="$GITHUB_API_URL/repos/$GITHUB_REPOSITORY" # delete 'latest' github release release_id=$(curl -fsL -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" https://api.github.com/repos/$GITHUB_REPOSITORY/releases | jq -r '.[] | select(.name == "latest") | .id') if [[ -n $release_id ]]; then echo "Deleting release [$api_base_url/releases/$release_id]..." curl -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" -fsSL -X DELETE "$api_base_url/releases/$release_id" fi # delete 'latest' git tag tag_url="$api_base_url/git/refs/tags/latest" if curl -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" -fsLo /dev/null --head "$tag_url"; then echo "Deleting tag [$tag_url]..." curl -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" -fsSL -X DELETE "$tag_url" fi - name: "Create 'latest' Release" if: startsWith(matrix.os, 'windows') && github.ref == 'refs/heads/main' env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | set -eux # https://hub.github.com/hub-release.1.html hub release create "latest" \ --prerelease \ --message "latest" \ --attach "dist/kleinanzeigen-bot.exe#kleinanzeigen-bot.exe" - name: "Delete intermediate build artifacts" uses: geekyeggo/delete-artifact@1-glob-support # https://github.com/GeekyEggo/delete-artifact/ with: name: "*" useGlob: true failOnError: false