Skip to content

Merge pull request #130 from lsst-sqre/tickets/DM-44453 #436

Merge pull request #130 from lsst-sqre/tickets/DM-44453

Merge pull request #130 from lsst-sqre/tickets/DM-44453 #436

Workflow file for this run

name: CI
'on':
push:
branches-ignore:
# These should always correspond to pull requests, so ignore them for
# the push trigger and let them be triggered by the pull_request
# trigger, avoiding running the workflow twice. This is a minor
# optimization so there's no need to ensure this is comprehensive.
- 'dependabot/**'
- 'renovate/**'
- 'tickets/**'
- 'u/**'
tags:
- '*'
pull_request: {}
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Run pre-commit
uses: pre-commit/[email protected]
test:
runs-on: ubuntu-latest
needs: [lint]
strategy:
matrix:
python:
- "3.10"
db:
- sqlite
- postgres
# - mysql
steps:
- uses: actions/checkout@v3
- name: Install build tools
run: sudo apt-get install build-essential
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}
- name: Install tox
run: |
pip install 'requests<2.32.0'
pip install tox
pip install --pre tox-docker
- name: Cache tox environments
id: cache-tox
uses: actions/cache@v3
with:
path: .tox
# requirements/*.txt and pyproject.toml have versioning info
# that would impact the tox environment.
key: tox-${{ matrix.python }}--${{ matrix.db }}-${{ hashFiles('requirements/*.txt') }}-${{ hashFiles('pyproject.toml') }}
restore-keys: |
tox-${{ matrix.python }}-${{ matrix.db }}-${{ hashFiles('requirements/*.txt') }}-
- name: Run tox with external services
if: ${{ matrix.python == '3.10' && matrix.db == 'postgres' }}
env:
LTD_KEEPER_TEST_AWS_ID: ${{ secrets.LTD_KEEPER_TEST_AWS_ID }}
LTD_KEEPER_TEST_AWS_SECRET: ${{ secrets.LTD_KEEPER_TEST_AWS_SECRET }}
LTD_KEEPER_TEST_BUCKET: ${{ secrets.LTD_KEEPER_TEST_BUCKET }}
# run: tox -e typing,${{matrix.db}},coverage-report # run tox using Python in path
run: tox -e ${{matrix.db}},coverage-report # run tox using Python in path
- name: Run tox without external services
if: ${{ !(matrix.python != '3.10' && matrix.db != 'postgres') }}
# run: tox -e typing,${{matrix.db}},coverage-report # run tox using Python in path
run: tox -e ${{matrix.db}},coverage-report # run tox using Python in path
docs:
runs-on: ubuntu-latest
needs: [lint]
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Install Python dependencies
run: pip install tox ltd-conveyor
- name: Cache tox environment for docs
id: cache-tox
uses: actions/cache@v3
with:
path: .tox
# requirements/*.txt, pyproject.toml, and .pre-commit-config.yaml
# have versioning info that would impact the tox environment.
key: tox-docs-${{ hashFiles('requirements/*.txt') }}-${{ hashFiles('pyproject.toml') }}-${{ hashFiles('.pre-commit-config.yaml') }}
- name: Run tox
run: tox -e docs
- name: Upload documentation
if: ${{ github.event_name == 'push' }}
env:
LTD_PASSWORD: ${{ secrets.LTD_PASSWORD }}
LTD_USERNAME: ${{ secrets.LTD_USERNAME }}
run: |
ltd upload --gh --dir docs/_build/html --product ltd-keeper
build:
runs-on: ubuntu-latest
needs: [test]
# Only do Docker builds of ticket branches and tagged releases, as well
# as J.Sick Codes branches.
# if: >
# (startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/tickets/')) || startsWith(github.ref, 'refs/heads/u/jsickcodes/')
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Define the Docker tag
id: vars
run: echo ::set-output name=tag::$(bin/docker-tag.sh)
- name: Print the tag
id: print
run: echo ${{ steps.vars.outputs.tag }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Log in to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v3
with:
context: .
push: true
tags: |
ghcr.io/lsst-sqre/ltd-keeper:${{ steps.vars.outputs.tag }}
cache-from: type=gha
cache-to: type=gha,mode=max