Skip to content

Commit

Permalink
Merge branch 'master' into license-plus
Browse files Browse the repository at this point in the history
  • Loading branch information
carmenbianca authored Jan 29, 2022
2 parents 4a89de3 + 973c0ea commit 745e5ec
Show file tree
Hide file tree
Showing 28 changed files with 955 additions and 448 deletions.
223 changes: 223 additions & 0 deletions .github/workflows/docker.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,223 @@
# SPDX-FileCopyrightText: 2019 Free Software Foundation Europe e.V. <https://fsfe.org>
# SPDX-FileCopyrightText: 2022 Carmen Bianca Bakker <carmenbianca@fsfe.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later

name: Docker Images - test, build and push

on:
push:
# Tags will carry the tag's version, e.g. v1.2.3:
# - 1.2.3
# - 1.2
# - 1 (not with 0 though)
# - latest"
tags:
- "v*.*.*"
# Main branch will be "dev"
branches:
- main
# TODO: remove as soon as master -> main branch
- master
# On PRs only do tests
pull_request:

jobs:
# ===========================================================================
# Test Docker images
# ===========================================================================
docker_test:
name: Test the docker images
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
# Dockerfile
- name: Build Dockerfile
run: |
docker build -t reuse .
- name: Run Docker image
run: |
docker run -v "$(pwd):/data" reuse
# Dockerfile-extra
- name: Build Dockerfile-extra
run: |
docker build -t reuse-extra --file Dockerfile-extra .
- name: Run Docker extra image
run: |
docker run -v "$(pwd):/data" reuse-extra
# Dockerfile-debian
- name: Build Dockerfile-debian
run: |
docker build -t reuse-debian --file Dockerfile-debian .
- name: Run Docker debian image
run: |
docker run -v "$(pwd):/data" reuse-debian
# ===========================================================================
# Build and push Docker images for tagged releases
# ===========================================================================
docker_push_tag:
name: Push Docker image for tags to Docker Hub
runs-on: ubuntu-latest
# Depends on successful Docker build/test
needs:
- docker_test
if:
${{ github.event_name != 'pull_request' && startsWith(github.ref,
'refs/tags/v') }}
steps:
- name: Check out the repo
uses: actions/checkout@v2
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1

- name: Log in to Docker Hub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}

# Dockerfile
- name: Default Docker - set metadata
id: meta_default
uses: docker/metadata-action@v3
with:
images: fsfe/reuse
tags: |
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}},enable=${{ !startsWith(github.ref, 'refs/tags/v0.') }}
- name: Default Docker - build and push
uses: docker/build-push-action@v2
with:
context: .
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.meta_default.outputs.tags }}
labels: ${{ steps.meta_default.outputs.labels }}

# Dockerfile-extra
- name: Extra Docker - set metadata
id: meta_extra
uses: docker/metadata-action@v3
with:
images: fsfe/reuse
tags: |
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}},enable=${{ !startsWith(github.ref, 'refs/tags/v0.') }}
flavor: |
suffix=-extra,onlatest=true
- name: Extra Docker - build and push
uses: docker/build-push-action@v2
with:
context: .
file: Dockerfile-extra
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.meta_extra.outputs.tags }}
labels: ${{ steps.meta_extra.outputs.labels }}

# Dockerfile-debian
- name: Debian Docker - set metadata
id: meta_debian
uses: docker/metadata-action@v3
with:
images: fsfe/reuse
tags: |
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}},enable=${{ !startsWith(github.ref, 'refs/tags/v0.') }}
flavor: |
suffix=-debian,onlatest=true
- name: Debian Docker - build and push
uses: docker/build-push-action@v2
with:
context: .
file: Dockerfile-debian
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.meta_debian.outputs.tags }}
labels: ${{ steps.meta_debian.outputs.labels }}

# ===========================================================================
# Build and push Docker images for main branch updated (dev tag)
# ===========================================================================
docker_push_dev:
name: Push Docker image for main branch to Docker Hub
runs-on: ubuntu-latest
# Depends on successful Docker build/test
needs:
- docker_test
# TODO: remove master when we switched to main
if:
${{ github.event_name != 'pull_request' && ( github.ref ==
'refs/heads/main' || github.ref == 'refs/heads/master' ) }}
steps:
- name: Check out the repo
uses: actions/checkout@v2
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1

- name: Log in to Docker Hub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}

# Dockerfile
- name: Default Docker - set metadata
id: meta_default
uses: docker/metadata-action@v3
with:
images: fsfe/reuse
tags: |
type=raw,value=dev
- name: Default Docker - build and push
uses: docker/build-push-action@v2
with:
context: .
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.meta_default.outputs.tags }}
labels: ${{ steps.meta_default.outputs.labels }}

# Dockerfile-extra
- name: Extra Docker - set metadata
id: meta_extra
uses: docker/metadata-action@v3
with:
images: fsfe/reuse
tags: |
type=raw,value=dev-extra
- name: Extra Docker - build and push
uses: docker/build-push-action@v2
with:
context: .
file: Dockerfile-extra
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.meta_extra.outputs.tags }}
labels: ${{ steps.meta_extra.outputs.labels }}

# Dockerfile-debian
- name: Debian Docker - set metadata
id: meta_debian
uses: docker/metadata-action@v3
with:
images: fsfe/reuse
tags: |
type=raw,value=dev-debian
- name: Debian Docker - build and push
uses: docker/build-push-action@v2
with:
context: .
file: Dockerfile-debian
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.meta_debian.outputs.tags }}
labels: ${{ steps.meta_debian.outputs.labels }}
3 changes: 2 additions & 1 deletion .github/workflows/latesttag.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import json
import subprocess
import sys
from distutils.version import LooseVersion
from urllib.request import urlopen

Expand Down Expand Up @@ -31,4 +32,4 @@ def main():


if __name__ == "__main__":
main()
sys.exit(main())
2 changes: 1 addition & 1 deletion .github/workflows/latesttag.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#
# SPDX-License-Identifier: GPL-3.0-or-later

name: Verify latest tag
name: Verify latest version tag on PyPI equals version on head of default branch

on:
schedule:
Expand Down
45 changes: 30 additions & 15 deletions .github/workflows/license_list_up_to_date.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,35 +8,50 @@
For convenience, also overwrite the files.
"""

import json
import sys
import urllib.request
from pathlib import Path

import requests
from packaging import version

API_URL = "https://api.github.com/repos/spdx/license-list-data/tags"
URLS = {
"exceptions.json": "https://raw.githubusercontent.com/spdx/license-list-data/master/json/exceptions.json",
"licenses.json": "https://raw.githubusercontent.com/spdx/license-list-data/master/json/licenses.json",
"exceptions.json": "https://raw.githubusercontent.com/spdx/license-list-data/{tag}/json/exceptions.json",
"licenses.json": "https://raw.githubusercontent.com/spdx/license-list-data/{tag}/json/licenses.json",
}


def latest_tag():
with urllib.request.urlopen(API_URL) as response:
contents = response.read().decode("utf-8")
dictionary = json.loads(contents)
tags = [item["name"] for item in dictionary]
sorted_tags = sorted(tags, key=version.parse)
return sorted_tags[-1]


def main():
result = 0

tag = latest_tag()
print(f"spdx-license-list-data latest version is {tag}")

for file_, url in URLS.items():
url = url.format(tag=tag)
path = Path(f"src/reuse/resources/{file_}")
contents = path.read_text()

response = requests.get(url)
if response.status_code == 200:
if response.text == contents:
print(f"{file_} is up-to-date")
else:
result = 1
print(f"{file_} is not up-to-date")
path.write_text(response.text)
local_contents = path.read_text()

with urllib.request.urlopen(url) as response:
remote_contents = response.read().decode("utf-8")
if remote_contents == local_contents:
print(f"{file_} is up-to-date")
else:
result = 1
print(f"could not download {file_}")
print(f"{file_} is not up-to-date")
path.write_text(remote_contents)
return result


if __name__ == "__main__":
main()
sys.exit(main())
17 changes: 17 additions & 0 deletions .github/workflows/prettier.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# SPDX-FileCopyrightText: 2022 Carmen Bianca Bakker <carmenbianca@fsfe.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later

name: Prettier

on: [push, pull_request]

jobs:
prettier:
runs-on: ubuntu-latest
container: node:latest

steps:
- uses: actions/checkout@v2
- name: Run prettier
run: npx prettier --check .
28 changes: 2 additions & 26 deletions .github/workflows/pythonpackage.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ jobs:
strategy:
max-parallel: 10
matrix:
python-version: ['3.6', '3.7', '3.8', '3.9', '3.10']
python-version: ["3.6", "3.7", "3.8", "3.9", "3.10"]
os: [ubuntu-latest, macos-latest, windows-latest]
exclude:
- os: macos-latest
python-version: '3.6'
python-version: "3.6"

steps:
- uses: actions/checkout@v2
Expand Down Expand Up @@ -104,27 +104,3 @@ jobs:
- name: Create docs with Sphinx
run: |
make docs
docker:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Build Dockerfile
run: |
docker build -t reuse .
- name: Run Docker image
run: |
docker run -v "$(pwd):/data" reuse
- name: Build Dockerfile-extra
run: |
docker build -t reuse-extra --file Dockerfile-extra .
- name: Run Docker extra image
run: |
docker run -v "$(pwd):/data" reuse-extra
- name: Build Dockerfile-debian
run: |
docker build -t reuse-debian --file Dockerfile-debian .
- name: Run Docker debian image
run: |
docker run -v "$(pwd):/data" reuse-debian
5 changes: 5 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@ repos:
- id: isort
name: isort (pyi)
types: [pyi]
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v2.4.1
hooks:
- id: prettier
name: prettier
- repo: local
hooks:
- id: pylint
Expand Down
Loading

0 comments on commit 745e5ec

Please sign in to comment.