Compare commits

..

11 Commits

Author SHA1 Message Date
Danushka Katubulla
f583291d8a Update README.md
Fixed broken links
2025-02-11 11:14:40 +05:30
Chamika J
03c0068991 Merge pull request #60 from kithmina1999/add-docker-networks
adding network configuration to docker-compose file
2024-12-31 11:08:04 +05:30
kithmina1999
2fb47c4c1d adding network configuration to docker-compose file 2024-12-30 15:55:39 +05:30
Chamika J
136dd5c42f Merge pull request #54 from thewulf7/docker-patch-1
Fixing docker image for backend service and grouping them in network
2024-10-25 16:57:25 +05:30
Evgenii Utkin
276d24143d Fixing docker image for backend service and grouping them in network 2024-10-15 22:52:49 +02:00
Chamika J
a8e9ad68bf Merge pull request #51 from Worklenz/development
Development
2024-09-30 15:28:35 +05:30
Chamika J
12c04d0798 Merge pull request #50 from Worklenz/feature/selfhosting-tiny-editor
feat(editor): add self-hosted TinyMCE editor and remove API key
2024-09-30 15:27:20 +05:30
chamikaJ
eb39dc363f feat(editor): add self-hosted TinyMCE editor and remove API key 2024-06-17 11:37:12 +05:30
Chamika J
5cce1f2d2c Merge pull request #29 from TheZoker/add-workflow
Add workflow to pre-build docker images
2024-06-04 11:18:42 +05:30
Florian Gareis
1b669f76b8 Add images to compose file 2024-06-02 22:04:47 +00:00
Florian Gareis
a6b6eca4d9 Add github docker image build workflow 2024-06-02 22:04:35 +00:00
12 changed files with 139 additions and 71 deletions

50
.github/workflows/build-images.yaml vendored Normal file
View File

@@ -0,0 +1,50 @@
name: Publish Docker Images
on:
push:
branches:
- 'main'
release:
types: [published]
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
strategy:
matrix:
service:
- name: frontend
context: ./worklenz-frontend
container_name: worklenz_frontend
- name: backend
context: ./worklenz-backend
container_name: worklenz_backend
steps:
- name: Checkout the codebase
uses: actions/checkout@v4
- name: Login to the Container registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.repository_owner }}/${{ matrix.service.container_name }}
flavor: |
latest=true
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: ${{ matrix.service.context }}
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

View File

@@ -7,11 +7,11 @@
</h1>
<p align="center">
<a href="https://worklenz.com/features/task-management/">Task Management</a> |
<a href="https://worklenz.com/features/time-tracking/">Time Tracking</a> |
<a href="https://worklenz.com/features/analytics/">Analytics</a> |
<a href="https://worklenz.com/features/resource-management/">Resource Management</a> |
<a href="https://worklenz.com/features/templates/">Project Templates</a>
<a href="https://worklenz.com/task-management/">Task Management</a> |
<a href="https://worklenz.com/time-tracking/">Time Tracking</a> |
<a href="https://worklenz.com/analytics/">Analytics</a> |
<a href="https://worklenz.com/resource-management/">Resource Management</a> |
<a href="https://worklenz.com/templates/">Project Templates</a>
</p>
<p align="center">

View File

@@ -1,5 +1,6 @@
services:
frontend:
image: ghcr.io/worklenz/worklenz-frontend
build:
context: ./worklenz-frontend
dockerfile: Dockerfile
@@ -9,8 +10,11 @@ services:
depends_on:
backend:
condition: service_started
networks:
- worklenz
backend:
image: ghcr.io/worklenz/worklenz-backend
build:
context: ./worklenz-backend
dockerfile: Dockerfile
@@ -52,6 +56,8 @@ services:
- S3_URL
- S3_ACCESS_KEY_ID
- S3_SECRET_ACCESS_KEY
networks:
- worklenz
db:
image: postgres:15
@@ -64,9 +70,14 @@ services:
interval: 10s
timeout: 5s
retries: 5
networks:
- worklenz
volumes:
- worklenz_postgres_data:/var/lib/postgresql/data
- ./worklenz-backend/database/:/docker-entrypoint-initdb.d
volumes:
worklenz_postgres_data:
networks:
worklenz:

View File

@@ -36,13 +36,20 @@
"glob": "**/*",
"input": "./node_modules/@ant-design/icons-angular/src/inline-svg/",
"output": "/assets/"
},
{
"glob": "**/*",
"input": "node_modules/tinymce",
"output": "/tinymce/"
}
],
"styles": [
"src/theme.less",
"src/styles.scss"
],
"scripts": [],
"scripts": [
"node_modules/tinymce/tinymce.min.js"
],
"serviceWorker": true,
"ngswConfigPath": "ngsw-config.json",
"allowedCommonJsDependencies": [
@@ -147,4 +154,4 @@
"@angular-eslint/schematics"
]
}
}
}

View File

@@ -36,7 +36,7 @@
"ngx-doc-viewer": "^15.0.1",
"ngx-socket-io": "^4.5.1",
"rxjs": "~7.4.0",
"tinymce": "^6.7.3",
"tinymce": "^6.8.3",
"tslib": "^2.6.1",
"zone.js": "^0.13.1"
},
@@ -15327,9 +15327,9 @@
"dev": true
},
"node_modules/tinymce": {
"version": "6.7.3",
"resolved": "https://registry.npmjs.org/tinymce/-/tinymce-6.7.3.tgz",
"integrity": "sha512-J7WmYIi/gt1RvZ6Ap2oQiUjzAoiS9pfV+d4GnKuZuPu8agmlAEAInNmMvMjfCNBzHv4JnZXY7qlHUAI0IuYQVA=="
"version": "6.8.3",
"resolved": "https://registry.npmjs.org/tinymce/-/tinymce-6.8.3.tgz",
"integrity": "sha512-3fCHKAeqT+xNwBVESf6iDbDV0VNwZNmfrkx9c/6Gz5iB8piMfaO6s7FvoiTrj1hf1gVbfyLTnz1DooI6DhgINQ=="
},
"node_modules/tmp": {
"version": "0.2.1",

View File

@@ -45,7 +45,7 @@
"ngx-doc-viewer": "^15.0.1",
"ngx-socket-io": "^4.5.1",
"rxjs": "~7.4.0",
"tinymce": "^6.7.3",
"tinymce": "^6.8.3",
"tslib": "^2.6.1",
"zone.js": "^0.13.1"
},

View File

@@ -11,7 +11,6 @@
class="description-editor"
[class.editing]="isEditing"
[init]="CONFIG"
[apiKey]="apiKey"
[(ngModel)]="service.model.task.description"
(onBlur)="onDescriptionInputBlur()"
#descriptionEditor

View File

@@ -25,8 +25,9 @@ export class TaskViewDescriptionComponent implements OnInit, OnDestroy {
@ViewChild("descriptionInput", {static: false}) descriptionInput!: ElementRef;
@ViewChild("descriptionEditor", {static: false}) descriptionEditor!: EditorComponent;
readonly apiKey = "4nquevykvy1i0q0v62ksxuu3nz1muy8i5fsqpj3wp9qm2mgp";
readonly CONFIG = {
base_url: '/tinymce',
suffix: '.min',
plugins: "lists link code wordcount",
toolbar: 'blocks bold italic underline strikethrough | checklist numlist bullist link | alignleft aligncenter alignright alignjustify',
menubar: false,

View File

@@ -51,7 +51,7 @@ import {NzPopconfirmModule} from 'ng-zorro-antd/popconfirm';
import {NzCardModule} from "ng-zorro-antd/card";
import {NzTableModule} from "ng-zorro-antd/table";
import {NzProgressModule} from "ng-zorro-antd/progress";
import {EditorModule} from '@tinymce/tinymce-angular';
import {EditorModule, TINYMCE_SCRIPT_SRC} from '@tinymce/tinymce-angular';
import {TaskViewTimeLogComponent} from './task-view-time-log/task-view-time-log.component';
import {NzListModule} from "ng-zorro-antd/list";
import {NzEmptyModule} from "ng-zorro-antd/empty";
@@ -99,60 +99,61 @@ import {TaskCommentMentionPipe} from "@pipes/task-comment-mention.pipe";
TaskViewComponent
],
providers: [
SearchByNamePipe
SearchByNamePipe,
{ provide: TINYMCE_SCRIPT_SRC, useValue: 'tinymce/tinymce.min.js' }
],
imports: [
CommonModule,
NzDrawerModule,
NzSkeletonModule,
NzFormModule,
FormsModule,
NzInputModule,
NzSelectModule,
NzTabsModule,
NzTagModule,
NzCollapseModule,
NzDropDownModule,
AvatarsComponent,
NzAvatarModule,
NzTypographyModule,
NzCheckboxModule,
SearchByNamePipe,
NzToolTipModule,
NzDatePickerModule,
NzInputNumberModule,
NzIconModule,
NzBadgeModule,
NzDividerModule,
FromNowPipe,
ReactiveFormsModule,
TaskPriorityLabelComponent,
NzButtonModule,
NzCommentModule,
RouterLink,
NzSpaceModule,
NzMentionModule,
NzAffixModule,
NzNoAnimationModule,
NzPopconfirmModule,
NzCardModule,
NzTableModule,
NzProgressModule,
EditorModule,
NzListModule,
NzEmptyModule,
TaskTimerComponent,
FirstCharUpperPipe,
TaskListAddTaskInputComponent,
SafeStringPipe,
DateFormatterPipe,
NgxDocViewerModule,
NzModalModule,
NzSpinModule,
NzTimelineModule,
NzTimePickerModule,
TaskCommentMentionPipe
]
imports: [
CommonModule,
NzDrawerModule,
NzSkeletonModule,
NzFormModule,
FormsModule,
NzInputModule,
NzSelectModule,
NzTabsModule,
NzTagModule,
NzCollapseModule,
NzDropDownModule,
AvatarsComponent,
NzAvatarModule,
NzTypographyModule,
NzCheckboxModule,
SearchByNamePipe,
NzToolTipModule,
NzDatePickerModule,
NzInputNumberModule,
NzIconModule,
NzBadgeModule,
NzDividerModule,
FromNowPipe,
ReactiveFormsModule,
TaskPriorityLabelComponent,
NzButtonModule,
NzCommentModule,
RouterLink,
NzSpaceModule,
NzMentionModule,
NzAffixModule,
NzNoAnimationModule,
NzPopconfirmModule,
NzCardModule,
NzTableModule,
NzProgressModule,
EditorModule,
NzListModule,
NzEmptyModule,
TaskTimerComponent,
FirstCharUpperPipe,
TaskListAddTaskInputComponent,
SafeStringPipe,
DateFormatterPipe,
NgxDocViewerModule,
NzModalModule,
NzSpinModule,
NzTimelineModule,
NzTimePickerModule,
TaskCommentMentionPipe
]
})
export class TaskViewModule {
}

View File

@@ -4,7 +4,6 @@ import {ProjectTemplateService} from "@services/project-template.service";
import {PtTaskPhasesApiService} from "@api/pt-task-phases-api.service";
import {ITaskPhase} from "@interfaces/api-models/task-phase";
import {PhaseColorCodes} from "@shared/constants";
import {load} from "@angular-devkit/build-angular/src/utils/server-rendering/esm-in-memory-file-loader";
@Component({
selector: 'worklenz-phase-settings-drawer',

View File

@@ -21,7 +21,6 @@
class="description-editor-list"
[class.editing]="isEditing"
[init]="CONFIG"
[apiKey]="apiKey"
[(ngModel)]="task.description"
(onBlur)="submit()"
#descriptionEditor

View File

@@ -28,8 +28,9 @@ export class TaskDescriptionComponent implements OnInit, OnDestroy {
show = false;
loading = false;
readonly apiKey = "4nquevykvy1i0q0v62ksxuu3nz1muy8i5fsqpj3wp9qm2mgp";
readonly CONFIG = {
base_url: '/tinymce',
suffix: '.min',
plugins: "lists link code wordcount",
toolbar: 'blocks bold italic underline strikethrough | checklist numlist bullist link | alignleft aligncenter alignright alignjustify',
menubar: false,