Skip to content

Commit

Permalink
First implementation (#1)
Browse files Browse the repository at this point in the history
  • Loading branch information
mattdean-digicatapult authored Jan 17, 2022
1 parent cdff8a5 commit e246367
Show file tree
Hide file tree
Showing 45 changed files with 15,176 additions and 10 deletions.
1 change: 1 addition & 0 deletions .depcheckrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ignores: ["go-ipfs"]
13 changes: 13 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
.github
.nyc_output
coverage
node_modules
scripts
test
data

.eslintignore
.eslintrc
.nycrc
.prettierrc
*.md
4 changes: 4 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
node_modules
package.json
coverage
.nyc_output
27 changes: 27 additions & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"extends": ["eslint:recommended", "prettier"],
"plugins": ["prettier"],
"env": {
"es6": true,
"node": true
},
"parserOptions": {
"ecmaVersion": 9,
"sourceType": "module"
},
"rules": {
"prettier/prettier": "error",
"no-console": 2
},
"overrides": [
{
"files": ["**/test/**/*.test.js"],
"rules": {
"prettier/prettier": "error"
},
"env": {
"mocha": true
}
}
]
}
263 changes: 263 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,263 @@
name: Release

on:
push:
branches: ["main"]

jobs:

preconditions:
runs-on: ubuntu-latest
outputs:
repo_name: ${{ steps.repo_ids.outputs.REPO_NAME }}
org_name: ${{ steps.repo_ids.outputs.ORG_NAME }}
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Check token
run: |
if [ -z "${{ secrets.GITHUB_TOKEN }}"]; then
echo "Must provide a GITHUB_TOKEN secret in order to run release workflow"
exit 1
fi
- name: Get repository identifiers
id: repo_ids
run: |
REPO_NAME=$(echo "${{ github.event.repository.name }}" | tr '[:upper:]' '[:lower:]')
ORG_NAME=$(echo "${{ github.event.repository.owner.name }}" | tr '[:upper:]' '[:lower:]')
echo "::set-output name=REPO_NAME::$REPO_NAME"
echo "::set-output name=ORG_NAME::$ORG_NAME"
helm-lint:
runs-on: ubuntu-latest
needs: [preconditions]
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up Helm
uses: azure/setup-helm@v1
with:
version: v3.4.0
- uses: actions/setup-python@v2
with:
python-version: 3.7
- name: Set up chart-testing
uses: helm/[email protected]
- name: Run chart-testing (lint)
run: ct lint --validate-maintainers false --charts helm/${{ needs.preconditions.outputs.repo_name }}/

# helm-test:
# runs-on: ubuntu-latest
# needs: [preconditions]
# steps:
# - name: Checkout
# uses: actions/checkout@v2
# with:
# fetch-depth: 0
# - name: Setup QEMU
# uses: docker/setup-qemu-action@v1
# with:
# platforms: all
# - name: Setup Docker Buildx
# id: buildx
# uses: docker/setup-buildx-action@v1
# with:
# buildkitd-flags: "--debug"
# - name: Set up Helm
# uses: azure/setup-helm@v1
# with:
# version: v3.4.0
# - uses: actions/setup-python@v2
# with:
# python-version: 3.7
# - name: Set up chart-testing
# uses: helm/[email protected]
# - name: Setup Minikube
# uses: manusa/[email protected]
# with:
# minikube version: 'v1.17.1'
# kubernetes version: 'v1.19.2'
# - name: Login to minikube docker registry
# run: eval $(minikube -p minikube docker-env)
# - name: Build and Publish image
# uses: docker/build-push-action@v2
# with:
# builder: ${{ steps.buildx.outputs.name }}
# context: .
# load: true
# file: ./Dockerfile
# tags: |
# ${{ needs.preconditions.outputs.repo_name }}:latest
# labels: |
# org.opencontainers.image.title=${{ needs.preconditions.outputs.repo_name }}
# org.opencontainers.image.description=${{ github.event.repository.description }}
# org.opencontainers.image.source=${{ github.event.repository.html_url }}
# org.opencontainers.image.url=${{ github.event.repository.html_url }}
# org.opencontainers.image.revision=${{ github.sha }}
# - name: Run chart-testing (install)
# run: ct install --charts helm/${{ needs.preconditions.outputs.repo_name }}/

lint:
name: Run lint
runs-on: ubuntu-latest
needs: [preconditions]
steps:
- uses: actions/checkout@master
- uses: actions/setup-node@master
with:
node-version: 16.x
- name: Cache Node.js modules
uses: actions/cache@v1
with:
path: ~/.npm # npm cache files are stored in `~/.npm` on Linux/macOS
key: ${{ runner.OS }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.OS }}-node-
${{ runner.OS }}-
- name: Install Packages
run: npm ci
- name: Lint
run: npm run lint
dependency-check:
name: Run dependency check
runs-on: ubuntu-latest
needs: [preconditions]
steps:
- uses: actions/checkout@master
- uses: actions/setup-node@master
with:
node-version: 16.x
- name: Cache Node.js modules
uses: actions/cache@v1
with:
path: ~/.npm # npm cache files are stored in `~/.npm` on Linux/macOS
key: ${{ runner.OS }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.OS }}-node-
${{ runner.OS }}-
- name: Install Packages
run: npm ci
- name: Dependency Check
run: npm run depcheck
tests:
name: Run tests
runs-on: ubuntu-latest
needs: [preconditions]
steps:
- uses: actions/checkout@master
- uses: actions/setup-node@master
with:
node-version: 16.x
- name: Cache Node.js modules
uses: actions/cache@v1
with:
path: ~/.npm # npm cache files are stored in `~/.npm` on Linux/macOS
key: ${{ runner.OS }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.OS }}-node-
${{ runner.OS }}-
- name: Install Packages
run: npm ci
- name: Setup dependencies
run: docker-compose up -d
- name: Sleep
uses: kibertoad/[email protected]
with:
time: "30s"
- name: Run tests
run: npm run test
check-version:
name: "Check version"
runs-on: ubuntu-latest
outputs:
is_new_version: ${{ steps.get_version.outputs.IS_NEW_VERSION }}
version: ${{ steps.get_version.outputs.VERSION }}
build_date: ${{ steps.get_version.outputs.BUILD_DATE }}
is_prerelease: ${{ steps.get_version.outputs.IS_PRERELEASE }}

steps:
- uses: actions/checkout@v2
- run: git fetch --depth=1 --tags origin
- name: Install yq
run: sudo snap install yq
- name: Check Build Version
id: get_version
run: ./scripts/check-version.sh
shell: bash
- name: Skipping release as version has not increased
if: steps.get_version.outputs.IS_NEW_VERSION != 'true'
shell: bash
run: |
echo "Skipping release as current version has already been published"
publish:
name: "Publish package"
needs: [preconditions, helm-lint, helm-test, lint, dependency-check, tests, check-version]
runs-on: ubuntu-latest
if: ${{ needs.check-version.outputs.is_new_version == 'true' }}

steps:
- uses: actions/checkout@v2

# Docker build
- name: Setup QEMU
uses: docker/setup-qemu-action@v1
with:
platforms: all
- name: Setup Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v1
with:
buildkitd-flags: "--debug"
- name: Login to GitHub Container Registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: $GITHUB_ACTOR
password: ${{ secrets.GITHUB_TOKEN }}
- name: Publish multi-arch image
uses: docker/build-push-action@v2
with:
push: true
builder: ${{ steps.buildx.outputs.name }}
context: .
file: ./Dockerfile
platforms: linux/amd64, linux/arm64
tags: |
ghcr.io/${{ needs.preconditions.outputs.org_name }}/${{ needs.preconditions.outputs.repo_name }}:${{ needs.check-version.outputs.version }}
ghcr.io/${{ needs.preconditions.outputs.org_name }}/${{ needs.preconditions.outputs.repo_name }}:latest
labels: |
org.opencontainers.image.title=${{ needs.preconditions.outputs.repo_name }}
org.opencontainers.image.description=${{ github.event.repository.description }}
org.opencontainers.image.source=${{ github.event.repository.html_url }}
org.opencontainers.image.url=${{ github.event.repository.html_url }}
org.opencontainers.image.revision=${{ github.sha }}
org.opencontainers.image.version=${{ needs.check-version.outputs.version }}
org.opencontainers.image.created=${{ needs.check-version.outputs.build_date }}
# Publish helm charts
# - name: Publish Helm charts
# uses: stefanprodan/helm-gh-pages@master
# with:
# token: ${{ secrets.GITHUB_TOKEN }}
# charts_dir: helm

# Build github release
- name: Build release version
uses: "marvinpinto/action-automatic-releases@latest"
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
automatic_release_tag: ${{ needs.check-version.outputs.version }}
prerelease: false
title: Release ${{ needs.check-version.outputs.version }}
- name: Build release latest
uses: "marvinpinto/action-automatic-releases@latest"
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
automatic_release_tag: latest
prerelease: false
title: Latest Release ${{ needs.check-version.outputs.version }}
Loading

0 comments on commit e246367

Please sign in to comment.