Merge pull request #585 from jennydaman/fix-plugininstance-nullables #519
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: [ master ] | |
tags: | |
- 'v[0-9]+.[0-9]+.[0-9]+*' | |
pull_request: | |
branches: [ master ] | |
jobs: | |
test: | |
if: github.ref_type == 'branch' || github.ref_name == 'pull_request' | |
runs-on: ubuntu-24.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
engine: [ 'docker', 'podman' ] | |
test-kind: [ 'unit', 'integration' ] | |
steps: | |
- name: Start podman daemon | |
if: matrix.engine == 'podman' | |
run: systemctl --user start podman.service | |
- uses: taiki-e/install-action@just | |
- uses: actions/checkout@v4 | |
- name: Run ${{ matrix.test-kind }} tests on ${{ matrix.engine }} | |
uses: ./ | |
with: | |
engine: ${{ matrix.engine }} | |
command: test-${{ matrix.test-kind }} | |
build: | |
name: Build | |
if: github.event_name == 'push' | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Update __version__.py | |
if: startsWith(github.ref, 'refs/tags/v') | |
run: echo '__version__ = "${{ github.ref_name }}"' > chris_backend/__version__.py | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: | | |
docker.io/fnndsc/cube | |
ghcr.io/fnndsc/cube | |
tags: | | |
type=ref,event=branch | |
type=ref,event=pr | |
type=semver,pattern={{version}} | |
type=semver,pattern={{major}}.{{minor}} | |
type=raw,value=latest,enable={{is_default_branch}} | |
- uses: docker/setup-qemu-action@v3 | |
- uses: docker/setup-buildx-action@v3 | |
- name: Login to DockerHub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_PASSWORD }} | |
- name: Login to GitHub Container Registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.repository_owner }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Build and push | |
uses: docker/build-push-action@v6 | |
with: | |
push: true | |
context: . | |
file: ./Dockerfile | |
platforms: linux/amd64,linux/arm64 | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
tags: ${{ steps.meta.outputs.tags }} | |
labels: ${{ steps.meta.outputs.labels }} | |
- name: Update Docker Hub description | |
uses: peter-evans/dockerhub-description@v4 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_PASSWORD }} | |
short-description: ChRIS backend | |
readme-filepath: ./README.md | |
repository: fnndsc/cube | |
openapi: | |
name: Generate OpenAPI Schema | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: taiki-e/install-action@just | |
- uses: actions/checkout@v4 | |
- run: just prefer docker | |
- run: just build | |
- name: Generate OpenAPI schema (correct) | |
run: just openapi 2> spectacular.log > schema.yaml || (cat spectacular.log; exit 1) | |
- name: Generate OpenAPI schema (split) | |
run: just openapi-split 2> spectacular_split.log > schema_split.yaml || (cat spectacular_split.log; exit 1) | |
- name: Upload schema YAML files | |
uses: actions/upload-artifact@v4 | |
with: | |
name: openapi_schema | |
path: schema*.yaml | |
if-no-files-found: error | |
- name: Assert no drf-spectacular errors nor warnings | |
run: | | |
for f in spectacular*.log; do | |
if grep -qi '(warning|error)' $f; then | |
cat $f | |
exit 1 | |
fi | |
done | |
- name: Stop services | |
run: just down | |
draft-release: | |
name: Draft GitHub Release | |
runs-on: ubuntu-24.04 | |
if: startsWith(github.ref, 'refs/tags/v') | |
needs: | |
- build | |
- openapi | |
steps: | |
- id: version | |
run: echo "version=${GITHUB_REF_NAME:1}" >> "$GITHUB_OUTPUT" | |
- uses: actions/download-artifact@v4 | |
with: | |
name: openapi_schema | |
- uses: softprops/action-gh-release@v2 | |
with: | |
draft: true | |
prerelease: ${{ contains( github.ref_name, '-' ) }} | |
files: '*.yaml' | |
fail_on_unmatched_files: true | |
name: CUBE - version ${{ steps.version.outputs.version }} | |
generate_release_notes: true | |
body: | | |
## Getting the Image | |
Using [Podman](https://podman.io): | |
```shell | |
podman pull ghcr.io/fnndsc/cube:${{ steps.version.outputs.version }} | |
``` | |
Using [Docker](https://docker.com): | |
```shell | |
docker pull ghcr.io/fnndsc/cube:${{ steps.version.outputs.version }} | |
``` |