-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #711 from NBISweden/feature/yearly-report2
Yearly report module with admin interface
- Loading branch information
Showing
29 changed files
with
9,202 additions
and
7,970 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
FROM node:17.6-slim as build | ||
FROM node:18-slim AS build | ||
|
||
USER node | ||
RUN mkdir /home/node/app | ||
|
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,47 @@ | ||
--- | ||
name: Create packages | ||
on: push | ||
on: | ||
push: | ||
paths: | ||
- "frontend/**" # Frontend changes | ||
- "app/**" # Main app changes | ||
- "r-api/**" # R API changes | ||
- "docker/**" # Docker related changes | ||
- ".docker/**" # Docker config changes | ||
- "docker-compose.yml" # Docker compose changes | ||
- ".github/workflows/create_packages.yml" # Workflow changes | ||
|
||
jobs: | ||
main: | ||
changes: | ||
runs-on: ubuntu-latest | ||
outputs: | ||
frontend: ${{ steps.filter.outputs.frontend }} | ||
main: ${{ steps.filter.outputs.main }} | ||
r-api: ${{ steps.filter.outputs.r-api }} | ||
steps: | ||
- uses: actions/checkout@v3 | ||
|
||
- uses: dorny/paths-filter@v2 | ||
id: filter | ||
with: | ||
filters: | | ||
frontend: | ||
- 'frontend/**' | ||
- 'docker/frontend.Dockerfile' | ||
main: | ||
- 'app/**' | ||
- 'docker/main.Dockerfile' | ||
- '.docker/main' | ||
r-api: | ||
- 'r-api/**' | ||
- 'docker/r-api.Dockerfile' | ||
build: | ||
needs: changes | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v2 | ||
uses: actions/checkout@v3 | ||
|
||
- name: Update tags.json version | ||
uses: jossef/[email protected] | ||
|
@@ -16,36 +50,76 @@ jobs: | |
field: gitBranch | ||
value: ${{github.ref_name}} | ||
|
||
- name: Build container | ||
env: | ||
GHCR_PAT: ${{ secrets.GHCR_PAT }} | ||
GHCR_USER: ${{ secrets.GHCR_USER }} | ||
DOCKER_BUILDKIT: 1 | ||
COMPOSE_DOCKER_CLI_BUILD: 1 | ||
- name: Login to GitHub Container Registry | ||
uses: docker/login-action@v2 | ||
with: | ||
registry: ghcr.io | ||
username: ${{ secrets.GHCR_USER }} | ||
password: ${{ secrets.GHCR_PAT }} | ||
|
||
- name: Prepare .docker files | ||
run: | | ||
echo "${GHCR_PAT}" | docker login ghcr.io -u "${GHCR_USER}" --password-stdin | ||
for p in .docker/*.default ; do | ||
mv "$p" "${p%.default}" | ||
done | ||
branch=${GITHUB_REF##*/} | ||
# Pull existing images for layer caching | ||
- name: Pull existing images | ||
run: | | ||
# Sanitize branch name for docker tags | ||
branch="${{ github.ref_name }}" | ||
safe_branch="${branch//\//-}" # Replace / with - | ||
for image in herdbook_r-api herdbook_main herdbook_frontend; do | ||
docker pull "ghcr.io/nbisweden/$image:latest" || true | ||
docker pull "ghcr.io/nbisweden/$image:$branch" || true | ||
docker pull "ghcr.io/nbisweden/$image:$safe_branch" || true | ||
done | ||
for p in .docker/*.default ; do | ||
mv "$p" "${p%.default}" | ||
done | ||
# Build images using docker compose | ||
- name: Build images | ||
env: | ||
DOCKER_BUILDKIT: 1 | ||
COMPOSE_DOCKER_CLI_BUILD: 1 | ||
run: | | ||
# Only build changed images and their dependents | ||
if [[ "${{ needs.changes.outputs.frontend }}" == "true" ]]; then | ||
docker compose build --build-arg BUILDKIT_INLINE_CACHE=1 herdbook-frontend main | ||
elif [[ "${{ needs.changes.outputs.main }}" == "true" ]]; then | ||
docker compose build --build-arg BUILDKIT_INLINE_CACHE=1 main | ||
fi | ||
docker-compose build --build-arg BUILDKIT_INLINE_CACHE=1 | ||
if [[ "${{ needs.changes.outputs.r-api }}" == "true" ]]; then | ||
docker compose build --build-arg BUILDKIT_INLINE_CACHE=1 r-api | ||
fi | ||
for image in herdbook_r-api herdbook_main herdbook_frontend; do | ||
docker tag "$image:latest" "ghcr.io/nbisweden/$image:$branch" | ||
docker push "ghcr.io/nbisweden/$image:$branch" | ||
# Push images | ||
- name: Push images | ||
run: | | ||
# Sanitize branch name for docker tags | ||
branch="${{ github.ref_name }}" | ||
safe_branch="${branch//\//-}" # Replace / with - | ||
for mb in main master develop; do | ||
if [ "$mb" = "$branch" ]; then | ||
# Function to push an image if it was built | ||
push_if_built() { | ||
local image="$1" | ||
if docker image inspect "$image:latest" >/dev/null 2>&1; then | ||
docker tag "$image:latest" "ghcr.io/nbisweden/$image:$safe_branch" | ||
docker push "ghcr.io/nbisweden/$image:$safe_branch" | ||
if [[ "$branch" == "main" || "$branch" == "master" || "$branch" == "develop" ]]; then | ||
docker tag "$image:latest" "ghcr.io/nbisweden/$image:latest" | ||
docker push "ghcr.io/nbisweden/$image:latest" | ||
fi | ||
done | ||
done | ||
fi | ||
} | ||
# Push only the images that were built | ||
if [[ "${{ needs.changes.outputs.frontend }}" == "true" ]]; then | ||
push_if_built "herdbook_frontend" | ||
fi | ||
if [[ "${{ needs.changes.outputs.main }}" == "true" || "${{ needs.changes.outputs.frontend }}" == "true" ]]; then | ||
push_if_built "herdbook_main" | ||
fi | ||
if [[ "${{ needs.changes.outputs.r-api }}" == "true" ]]; then | ||
push_if_built "herdbook_r-api" | ||
fi |
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
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
Oops, something went wrong.