diff options
| -rw-r--r-- | .github/workflows/build.yaml | 64 | ||||
| -rw-r--r-- | .github/workflows/lint.yaml (renamed from .github/workflows/lint-build-deploy.yaml) | 83 | ||||
| -rw-r--r-- | bot/exts/evergreen/branding.py | 4 | ||||
| -rw-r--r-- | bot/exts/halloween/candy_collection.py | 6 | ||||
| -rw-r--r-- | bot/exts/halloween/hacktoberstats.py | 6 | 
5 files changed, 85 insertions, 78 deletions
| diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 00000000..404e66f7 --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,64 @@ +name: Build + +on: +  workflow_run: +    workflows: ["Lint"] +    branches: +      - master +    types: +      - completed + +jobs: +  build: +    if: github.event.workflow_run.conclusion == 'success' +    name: Build, Push, & Deploy Container +    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  }} + +      # 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/seasonalbot:latest +          tags: | +            ghcr.io/python-discord/seasonalbot:latest +            ghcr.io/python-discord/seasonalbot:${{ steps.sha_tag.outputs.tag }} + +      - name: Authenticate with Kubernetes +        uses: azure/k8s-set-context@v1 +        with: +          method: kubeconfig +          kubeconfig: ${{ secrets.KUBECONFIG }} + +      - name: Deploy to Kubernetes +        uses: Azure/k8s-deploy@v1 +        with: +          manifests: | +              deployment.yaml +          images: 'ghcr.io/python-discord/seasonalbot:${{ steps.sha_tag.outputs.tag }}' +          kubectl-version: 'latest' diff --git a/.github/workflows/lint-build-deploy.yaml b/.github/workflows/lint.yaml index c70e49b7..063f406c 100644 --- a/.github/workflows/lint-build-deploy.yaml +++ b/.github/workflows/lint.yaml @@ -1,15 +1,15 @@ -name: Lint, Build & Deploy +name: Lint  on:    push:      branches:        - master -  pull_request_target: +  pull_request:  jobs:    lint: -    name: Lint using pre-commit & flake8 +    name: Run pre-commit & flake8      runs-on: ubuntu-latest      env:        # Configure pip to cache dependencies and do a user install @@ -32,12 +32,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 @@ -84,67 +80,14 @@ 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 we need "write" permissions -      # to add annotations to the Actions results. A normal `pull_request` trigger -      # does not get those permissions for security reasons. +      # 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 -        env: -          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - -  build-and-deploy: -    name: Build and Deploy to Kubernetes -    needs: lint -    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  }} - -      # 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/seasonalbot:latest -          tags: | -            ghcr.io/python-discord/seasonalbot:latest -            ghcr.io/python-discord/seasonalbot:${{ steps.sha_tag.outputs.tag }} - -      - name: Authenticate with Kubernetes -        uses: azure/k8s-set-context@v1 -        with: -          method: kubeconfig -          kubeconfig: ${{ secrets.KUBECONFIG }} - -      - name: Deploy to Kubernetes -        uses: Azure/k8s-deploy@v1 -        with: -          manifests: | -              deployment.yaml -          images: 'ghcr.io/python-discord/seasonalbot:${{ steps.sha_tag.outputs.tag }}' -          kubectl-version: 'latest' +        run: "flake8 \ +        --format='::error file=%(path)s,line=%(row)d,col=%(col)d::[flake8] %(code)s: %(text)s'" diff --git a/bot/exts/evergreen/branding.py b/bot/exts/evergreen/branding.py index b55c9b14..fa607270 100644 --- a/bot/exts/evergreen/branding.py +++ b/bot/exts/evergreen/branding.py @@ -1,6 +1,6 @@  import asyncio  import itertools -import json +# import json  import logging  import random  import typing as t @@ -18,7 +18,7 @@ from bot.seasons import SeasonBase, get_all_seasons, get_current_season, get_sea  from bot.utils import human_months  from bot.utils.decorators import with_role  from bot.utils.exceptions import BrandingError -# TODO: Implement substitute for current volume persistence requirements +# TODO: Implement substitute for current volume persistence requirements  # noqa: T000  # from bot.utils.persist import make_persistent  log = logging.getLogger(__name__) diff --git a/bot/exts/halloween/candy_collection.py b/bot/exts/halloween/candy_collection.py index 7bdc6ef0..bd0b90cc 100644 --- a/bot/exts/halloween/candy_collection.py +++ b/bot/exts/halloween/candy_collection.py @@ -1,7 +1,7 @@  import json  import logging  import random -from pathlib import Path +# from pathlib import Path  from typing import Union  import discord @@ -10,7 +10,7 @@ from discord.ext import commands  from bot.constants import Channels, Month  from bot.utils.decorators import in_month -# TODO: Implement substitutes for volume-persistent methods. +# TODO: Implement substitutes for volume-persistent methods.  # noqa: T000  # from bot.utils.persist import make_persistent  log = logging.getLogger(__name__) @@ -39,7 +39,7 @@ class CandyCollection(commands.Cog):      def __init__(self, bot: commands.Bot):          self.bot = bot -        self.json_file = make_persistent(Path("bot", "resources", "halloween", "candy_collection.json")) +        # self.json_file = make_persistent(Path("bot", "resources", "halloween", "candy_collection.json"))          with self.json_file.open() as fp:              candy_data = json.load(fp) diff --git a/bot/exts/halloween/hacktoberstats.py b/bot/exts/halloween/hacktoberstats.py index beff86e3..4fd5c324 100644 --- a/bot/exts/halloween/hacktoberstats.py +++ b/bot/exts/halloween/hacktoberstats.py @@ -3,7 +3,7 @@ import logging  import re  from collections import Counter  from datetime import datetime, timedelta -from pathlib import Path +# from pathlib import Path  from typing import List, Tuple, Union  import aiohttp @@ -13,7 +13,7 @@ from discord.ext import commands  from bot.constants import Channels, Month, Tokens, WHITELISTED_CHANNELS  from bot.utils.decorators import in_month, override_in_channel -# TODO: Implement substitutes for volume-persistent methods. +# TODO: Implement substitutes for volume-persistent methods.  # noqa: T000  # from bot.utils.persist import make_persistent  log = logging.getLogger(__name__) @@ -41,7 +41,7 @@ class HacktoberStats(commands.Cog):      def __init__(self, bot: commands.Bot):          self.bot = bot -        self.link_json = make_persistent(Path("bot", "resources", "halloween", "github_links.json")) +        # self.link_json = make_persistent(Path("bot", "resources", "halloween", "github_links.json"))          self.linked_accounts = self.load_linked_users()      @in_month(Month.SEPTEMBER, Month.OCTOBER, Month.NOVEMBER) | 
