Sanction program metadata, small model fixes (#1590) #3600
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: build | |
on: [push] | |
permissions: | |
id-token: write | |
packages: write | |
contents: read | |
jobs: | |
python: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python: | |
- "3.9" | |
- "3.10" | |
- "3.11" | |
- "3.12" | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Show ref | |
run: | | |
echo "$GITHUB_REF" | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python }} | |
- name: Install dependencies | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: | | |
sudo apt-get update -y -qq | |
sudo apt-get install -y -qq libicu-dev | |
pip install wheel pyicu setuptools | |
pip install -e ".[dev]" | |
- name: Run checks for default model | |
run: | | |
python contrib/check_model.py | |
make default-model | |
git diff | |
if [[ -z "$(git status --porcelain)" ]]; | |
then | |
echo "Default model is up to date 👌" | |
else | |
echo "⚠️ Default model is not up to date. You need to run `make default-model` and commit the changes."; | |
exit 1; | |
fi; | |
- name: Run the tests | |
run: | | |
make test | |
- name: Partial mypy type-check | |
run: | | |
make typecheck | |
- name: Build a followthemoney distribution | |
run: | | |
python setup.py sdist bdist_wheel | |
- name: Publish followthemoney to PyPI | |
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
packages-dir: dist/ | |
skip-existing: true | |
verbose: true | |
nodejs: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [22.x] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: Install dependencies | |
run: | | |
cd js | |
npm install | |
npm run build | |
- name: Run the tests | |
run: | | |
cd js | |
npm run test:prod && npm run lint | |
- name: Publish to NPM | |
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') | |
run: | | |
cd js | |
npm config set //registry.npmjs.org/:_authToken=$NPM_AUTH_TOKEN | |
npm run build | |
npm publish | |
env: | |
CI: true | |
NPM_AUTH_TOKEN: ${{ secrets.npm_auth_token }} | |
docker: | |
runs-on: ubuntu-latest | |
if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags') | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
with: | |
install: true | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: ghcr.io/alephdata/followthemoney | |
tags: | | |
type=ref,event=branch | |
type=semver,pattern={{version}} | |
type=sha | |
- name: Set env | |
run: echo "VERSION_NUMBER=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV | |
- name: Login to GitHub Packages | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Build docker image | |
uses: docker/build-push-action@v6 | |
with: | |
context: . | |
platforms: linux/amd64,linux/arm64 | |
cache-from: type=gha | |
- name: Build and push docker image | |
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') | |
uses: docker/build-push-action@v6 | |
with: | |
context: . | |
platforms: linux/amd64,linux/arm64 | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
labels: ${{ steps.meta.outputs.labels }} | |
cache-from: type=gha | |
cache-to: type=gha,mode=max |