diff options
| -rw-r--r-- | .github/workflows/build.yml | 57 | ||||
| -rw-r--r-- | .github/workflows/lint-test.yml (renamed from .github/workflows/lint-test-build.yml) | 68 | ||||
| -rw-r--r-- | Pipfile | 4 | ||||
| -rw-r--r-- | README.md | 8 | ||||
| -rw-r--r-- | docker-compose.yml | 2 | 
5 files changed, 80 insertions, 59 deletions
| diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..706ab462f --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,57 @@ +name: Build + +on: +  workflow_run: +    workflows: ["Lint & Test"] +    branches: +      - master +    types: +      - completed + +jobs: +  build: +    if: github.event.workflow_run.conclusion == 'success' +    name: Build & Push +    runs-on: ubuntu-latest + +    steps: +      # Create a commit SHA-based tag for the container repositories +      - name: Create SHA Container Tag +        id: sha_tag +        run: | +          tag=$(cut -c 1-7 <<< $GITHUB_SHA) +          echo "::set-output name=tag::$tag" + +      - name: Checkout code +        uses: actions/checkout@v2 + +      # The current version (v2) of Docker's build-push action uses +      # buildx, which comes with BuildKit features that help us speed +      # up our builds using additional cache features. Buildx also +      # has a lot of other features that are not as relevant to us. +      # +      # See https://github.com/docker/build-push-action +      - name: Set up Docker Buildx +        uses: docker/setup-buildx-action@v1 + +      - name: Login to Github Container Registry +        uses: docker/login-action@v1 +        with: +          registry: ghcr.io +          username: ${{ github.repository_owner }} +          password: ${{ secrets.GHCR_TOKEN  }} + +      # Build and push the container to the GitHub Container +      # Repository. The container will be tagged as "latest" +      # and with the short SHA of the commit. +      - name: Build and push +        uses: docker/build-push-action@v2 +        with: +          context: . +          file: ./Dockerfile +          push: true +          cache-from: type=registry,ref=ghcr.io/python-discord/bot:latest +          cache-to: type=inline +          tags: | +            ghcr.io/python-discord/bot:latest +            ghcr.io/python-discord/bot:${{ steps.sha_tag.outputs.tag }} diff --git a/.github/workflows/lint-test-build.yml b/.github/workflows/lint-test.yml index c63f78ff6..5444fc3de 100644 --- a/.github/workflows/lint-test-build.yml +++ b/.github/workflows/lint-test.yml @@ -1,13 +1,10 @@ -name: Lint, Test, Build +name: Lint & Test  on:    push:      branches:        - master -  # We use pull_request_target as we get PRs from -  # forks, but need to be able to add annotations -  # for our flake8 step. -  pull_request_target: +  pull_request:  jobs: @@ -42,12 +39,8 @@ jobs:        - name: Add custom PYTHONUSERBASE to PATH          run: echo '${{ env.PYTHONUSERBASE }}/bin/' >> $GITHUB_PATH -      # We don't want to persist credentials, as our GitHub Action -      # may be run when a PR is made from a fork.        - name: Checkout repository          uses: actions/checkout@v2 -        with: -          persist-credentials: false        - name: Setup python          id: python @@ -94,14 +87,18 @@ jobs:        - name: Run pre-commit hooks          run: export PIP_USER=0; SKIP=flake8 pre-commit run --all-files -      # This step requires `pull_request_target`, as adding annotations -      # requires "write" permissions to the repo. +      # Run flake8 and have it format the linting errors in the format of +      # the GitHub Workflow command to register error annotations. This +      # means that our flake8 output is automatically added as an error +      # annotation to both the run result and in the "Files" tab of a +      # pull request. +      # +      # Format used: +      # ::error file={filename},line={line},col={col}::{message}        - name: Run flake8 -        uses: julianwachholz/flake8-action@v1 -        with: -          checkName: lint-test -        env: -          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +        run: "flake8 \ +        --format='::error file=%(path)s,line=%(row)d,col=%(col)d::\ +        [flake8] %(code)s: %(text)s'"        # We run `coverage` using the `python` command so we can suppress        # irrelevant warnings in our CI output. @@ -116,42 +113,3 @@ jobs:          env:              GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}          run: coveralls - -  build-and-push: -    needs: lint-test -    if: github.event_name != 'pull_request_target' && github.ref == 'refs/heads/master' -    runs-on: ubuntu-latest - -    steps: -      # Create a commit SHA-based tag for the container repositories -      - name: Create SHA Container Tag -        id: sha_tag -        run: | -          tag=$(cut -c 1-7 <<< $GITHUB_SHA) -          echo "::set-output name=tag::$tag" -      - name: Checkout code -        uses: actions/checkout@v2 - -      - name: Set up Docker Buildx -        uses: docker/setup-buildx-action@v1 - -      - name: Login to Github Container Registry -        uses: docker/login-action@v1 -        with: -          registry: ghcr.io -          username: ${{ github.repository_owner }} -          password: ${{ secrets.GHCR_TOKEN  }} - -      # This step builds and pushed the container to the -      # Github Container Registry tagged with "latest" and -      # the short SHA of the commit. -      - name: Build and push -        uses: docker/build-push-action@v2 -        with: -          context: . -          file: ./Dockerfile -          push: true -          cache-from: type=registry,ref=ghcr.io/python-discord/bot:latest -          tags: | -            ghcr.io/python-discord/bot:latest -            ghcr.io/python-discord/bot:${{ steps.sha_tag.outputs.tag }} @@ -48,8 +48,8 @@ python_version = "3.8"  start = "python -m bot"  lint = "pre-commit run --all-files"  precommit = "pre-commit install" -build = "docker build -t pythondiscord/bot:latest -f Dockerfile ." -push = "docker push pythondiscord/bot:latest" +build = "docker build -t ghcr.io/python-discord/bot:latest -f Dockerfile ." +push = "docker push ghcr.io/python-discord/bot:latest"  test = "coverage run -m unittest"  html = "coverage html"  report = "coverage report" @@ -1,7 +1,8 @@  # Python Utility Bot  [](https://discord.gg/2B963hn) - +[![Lint & Test][1]][2] +[![Build][3]][4]  [](https://coveralls.io/github/python-discord/bot)  [](LICENSE)  [](https://pythondiscord.com) @@ -10,3 +11,8 @@ This project is a Discord bot specifically for use with the Python Discord serve  and other tools to help keep the server running like a well-oiled machine.  Read the [Contributing Guide](https://pythondiscord.com/pages/contributing/bot/) on our website if you're interested in helping out. + +[1]: https://github.com/python-discord/bot/workflows/Lint%20&%20Test/badge.svg?branch=master +[2]: https://github.com/python-discord/bot/actions?query=workflow%3A%22Lint+%26+Test%22+branch%3Amaster +[3]: https://github.com/python-discord/bot/workflows/Build/badge.svg?branch=master +[4]: https://github.com/python-discord/bot/actions?query=workflow%3ABuild+branch%3Amaster diff --git a/docker-compose.yml b/docker-compose.yml index dc89e8885..0002d1d56 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -18,7 +18,7 @@ services:        - "127.0.0.1:6379:6379"    snekbox: -    image: pythondiscord/snekbox:latest +    image: ghcr.io/python-discord/snekbox:latest      init: true      ipc: none      ports: | 
