Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 7f244939

Přidáno uživatelem Lukáš Vlček před asi 2 roky(ů)

Re #9582

Zobrazit rozdíly:

.gitlab-ci.yml
1
image: gcr.io/kaniko-project/executor:debug
2

  
3
stages:
4
  - Build
5
  - Deploy
6

  
7
build-fe:
8
  stage: Build
9
  rules:
10
    - if: '$CI_COMMIT_BRANCH == "main"'
11
      when: on_success
12
    - if: "$CI_COMMIT_BRANCH == null"
13
      when: never
14
    - when: manual
15
  script:
16
    - mkdir -p /kaniko/.docker
17
    - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
18
    - /kaniko/executor --cache=true --context "$CI_PROJECT_DIR/webapp" --dockerfile "$CI_PROJECT_DIR/webapp/Dockerfile" --destination $CI_REGISTRY_IMAGE/frontend:$CI_COMMIT_SHA
19

  
20
build-be:
21
  stage: Build
22
  rules:
23
    - if: '$CI_COMMIT_BRANCH == "main"'
24
      when: on_success
25
    - if: "$CI_COMMIT_BRANCH == null"
26
      when: never
27
    - when: manual
28
  script:
29
    - mkdir -p /kaniko/.docker
30
    - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
31
    - /kaniko/executor --cache=true --context "$CI_PROJECT_DIR/Backend" --dockerfile "$CI_PROJECT_DIR/Backend/Backend/Dockerfile" --destination $CI_REGISTRY_IMAGE/backend:$CI_COMMIT_SHA
32

  
33
deploy_webapp_production:
34
  stage: Deploy
35
  image:
36
    name: bitnami/kubectl:latest
37
  environment:
38
    name: webapp_production
39
    url: https://annotation.vlc3k.com
40
  rules:
41
    - if: '$CI_COMMIT_BRANCH == "main"'
42
      when: on_success
43
    - if: "$CI_COMMIT_BRANCH == null"
44
      when: never
45
    - when: manual
46
  script:
47
    - kubectl --token=${KUBE_TOKEN} --server=${KUBE_SERVER} set image deployment/nio-annotation nio-annotation-frontend=$CI_REGISTRY_IMAGE/frontend:$CI_COMMIT_SHA --namespace=$KUBE_NAMESPACE --record --insecure-skip-tls-verify=true
48
    - kubectl --token=${KUBE_TOKEN} --server=${KUBE_SERVER} set image deployment/nio-annotation nio-annotation-backend=$CI_REGISTRY_IMAGE/backend:$CI_COMMIT_SHA --namespace=$KUBE_NAMESPACE --record --insecure-skip-tls-verify=true 
49
    - kubectl --token=${KUBE_TOKEN} --server=${KUBE_SERVER} --namespace=$KUBE_NAMESPACE --insecure-skip-tls-verify=true rollout status deployment nio-annotation
Backend/.dockerignore
1
**/.classpath
2
**/.dockerignore
3
**/.env
4
**/.git
5
**/.gitignore
6
**/.project
7
**/.settings
8
**/.toolstarget
9
**/.vs
10
**/.vscode
11
**/*.*proj.user
12
**/*.dbmdl
13
**/*.jfm
14
**/azds.yaml
15
**/bin
16
**/charts
17
**/docker-compose*
18
**/Dockerfile*
19
**/node_modules
20
**/npm-debug.log
21
**/obj
22
**/secrets.dev.yaml
23
**/values.dev.yaml
24
LICENSE
25
README.md
Backend/Backend/.dockerignore
1
**/.dockerignore
2
**/.env
3
**/.git
4
**/.gitignore
5
**/.project
6
**/.settings
7
**/.toolstarget
8
**/.vs
9
**/.vscode
10
**/.idea
11
**/*.*proj.user
12
**/*.dbmdl
13
**/*.jfm
14
**/azds.yaml
15
**/bin
16
**/charts
17
**/docker-compose*
18
**/Dockerfile*
19
**/node_modules
20
**/npm-debug.log
21
**/obj
22
**/secrets.dev.yaml
23
**/values.dev.yaml
24
LICENSE
25
README.md
Backend/Backend/Dockerfile
1
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
2

  
3
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
1
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
4 2
WORKDIR /app
5 3
EXPOSE 80
6 4
EXPOSE 443
7 5

  
8 6
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
9 7
WORKDIR /src
10
COPY ["Backend/Backend.csproj", "Backend/"]
11
RUN dotnet restore "Backend/Backend.csproj"
8
COPY ["Backend/RestAPI.csproj", "Backend/"]
9
COPY ["Core/Core.csproj", "Core/"]
10
COPY ["Models/Models.csproj", "Models/"]
11
RUN dotnet restore "Backend/RestAPI.csproj"
12 12
COPY . .
13 13
WORKDIR "/src/Backend"
14
RUN dotnet build "Backend.csproj" -c Release -o /app/build
14
RUN dotnet build "RestAPI.csproj" -c Release -o /app/build
15 15

  
16 16
FROM build AS publish
17
RUN dotnet publish "Backend.csproj" -c Release -o /app/publish
17
RUN dotnet publish "RestAPI.csproj" -c Release -o /app/publish
18 18

  
19 19
FROM base AS final
20 20
WORKDIR /app
21 21
COPY --from=publish /app/publish .
22
ENTRYPOINT ["dotnet", "Backend.dll"]
22
ENTRYPOINT ["dotnet", "RestAPI.dll"]
Backend/Backend/Program.cs
80 80
        "http://localhost",
81 81
        "https://localhost:3000",
82 82
        "http://localhost:3000",
83
        "http://localhost:5007")
83
        "http://localhost:5007",
84
        "https://annotation.vlc3k.com")
84 85
    .SetIsOriginAllowedToAllowWildcardSubdomains()
85 86
    .AllowAnyHeader()
86 87
    .AllowAnyMethod()
Backend/Backend/appsettings.Development.json
4 4
      "Default": "Information",
5 5
      "Microsoft.AspNetCore": "Warning"
6 6
    }
7
  },
8
  "AllowedHosts": "*",
9
  "ConnectionString": "Host=localhost:5432;Database=dbo;Username=myuser;Password=password",  
10
  "JwtConfig": {
11
    "Secret": "CJgvc9BtwJjnCExzKLB2ndtxERW3YMhqMMPNrBZuTJaskPqRVfZQHRUnbRHH9Ekp5zsaTSeM73vQSKvq48w2u8jTnKUn7Uhk2zBeD9wLz48ssKMppNC9HDTXSk6RWP5PtXfCayJ67mbUWF6aknnteLg4sDKzqYeNYjyw8Jk6",
12
    "Issuer": "0x00.server"
7 13
  }
8
}
14
}
Backend/Backend/appsettings.json
6 6
    }
7 7
  },
8 8
  "AllowedHosts": "*",
9
  "ConnectionString": "Host=localhost:5432;Database=dbo;Username=myuser;Password=password",
10 9
  "JwtConfig": {
11 10
    "Secret": "CJgvc9BtwJjnCExzKLB2ndtxERW3YMhqMMPNrBZuTJaskPqRVfZQHRUnbRHH9Ekp5zsaTSeM73vQSKvq48w2u8jTnKUn7Uhk2zBeD9wLz48ssKMppNC9HDTXSk6RWP5PtXfCayJ67mbUWF6aknnteLg4sDKzqYeNYjyw8Jk6",
12 11
    "Issuer": "0x00.server"
13 12
  }
14
}
13
}
webapp/Dockerfile
1
FROM node:lts as build
2

  
3
ENV NPM_CONFIG_LOGLEVEL warn
4
WORKDIR app
5

  
6
COPY package.json package.json
7
COPY yarn.lock yarn.lock
8
RUN yarn install --pure-lockfile
9

  
10
COPY . .
11

  
12
RUN npx browserslist@latest --update-db
13
RUN yarn build
14

  
15
FROM node:lts
16
WORKDIR app
17

  
18
COPY package.json package.json
19
COPY yarn.lock yarn.lock
20
RUN yarn install --pure-lockfile --production
21

  
22
COPY --from=build app/.next .next
23
COPY --from=build app/public public
24

  
25
ENV NPM_CONFIG_LOGLEVEL warn
26

  
27

  
28
ARG BACKEND_URL=$BACKEND_URL
29
ENV BACKEND_URL=$BACKEND_URL
30

  
31
EXPOSE 5000
32

  
33
CMD yarn start -p 5000
webapp/constants.ts
1
import env from '@beam-australia/react-env';
2

  
3
const DEFAULT_BASE_PATH = 'https://localhost:7241';
4

  
5
export function getApiBasePath() {
6
    let e = env('BACKEND_URL');
7

  
8
    if (!e) {
9
        return DEFAULT_BASE_PATH;
10
    } else {
11
        return e;
12
    }
13
}
webapp/controllers.ts
2 2
import { axios } from './utils/axios';
3 3
import { Configuration } from './api';
4 4
import { getToken } from './utils/login';
5
import { getApiBasePath } from './constants';
5 6

  
6
let baseURL = 'https://localhost:7241';
7
let baseURL = getApiBasePath();
7 8

  
8 9
const defaultConfig: Configuration = new Configuration({
9 10
    basePath: baseURL,
webapp/package.json
3 3
  "version": "0.1.0",
4 4
  "private": true,
5 5
  "scripts": {
6
    "dev": "next dev",
6
    "dev": "react-env --env BACKEND_URL -- next dev",
7 7
    "build": "next build",
8
    "start": "next start",
8
    "start": "react-env --prefix ASWI_APP -- next start",
9 9
    "lint": "next lint",
10 10
    "generate-api": "openapi-generator-cli generate -i http://localhost:5241/swagger/v1/swagger.json -g typescript-axios -o api",
11
    "postinstall": "yarn generate-api",
12 11
    "deduplicate": "yarn-deduplicate yarn.lock"
13 12
  },
14 13
  "dependencies": {
14
    "@beam-australia/react-env": "^3.1.1",
15 15
    "@fortawesome/fontawesome-svg-core": "^6.1.1",
16 16
    "@fortawesome/free-solid-svg-icons": "^6.1.1",
17 17
    "@fortawesome/react-fontawesome": "^0.1.18",
webapp/pages/_app.tsx
20 20
        <LoggedUserProvider>
21 21
            <Head>
22 22
                <link rel="shortcut icon" href={'/favicon.ico'} />
23
                <title>Annotation Tool</title>
23
                <title>Annotation Tool (AV ČR)</title>
24
                <script src="/__ENV.js" defer />
24 25
            </Head>
26

  
25 27
            {Component.auth ? (
26 28
                <Auth minRole={Component.auth?.minRole}>
27 29
                    <Component {...pageProps} />
webapp/pages/login/index.tsx
8 8
import { ShowToast } from '../../utils/alerts';
9 9
import { getTokenData } from '../../utils/login';
10 10
import { LoginResponse } from '../../api';
11
import env from '@beam-australia/react-env';
11 12

  
12 13
/**
13 14
 * Creates a login screen.
......
16 17
function Login() {
17 18
    const { login, role } = useContext(LoggedUserContext);
18 19
    const router = useRouter();
20

  
19 21
    /**
20 22
     * Handles submission a form when its fields were successfully validated.
21 23
     * @param values Fields of the login form.
webapp/public/__ENV.js
1
window.__ENV = {};
webapp/utils/axios.ts
4 4
import { getToken } from './login';
5 5
import { useContext } from 'react';
6 6
import { LoggedUserContext } from '../contexts/LoggedUserContext';
7
import { getApiBasePath } from '../constants';
7 8

  
8 9
export const axios = axiosLib.create({
9
    baseURL: 'https://localhost:7241',
10
    baseURL: getApiBasePath(),
10 11
    timeout: 60000,
11 12
});
12 13

  
webapp/yarn.lock
51 51
  dependencies:
52 52
    regenerator-runtime "^0.13.4"
53 53

  
54
"@beam-australia/react-env@^3.1.1":
55
  version "3.1.1"
56
  resolved "https://registry.yarnpkg.com/@beam-australia/react-env/-/react-env-3.1.1.tgz#63cb8316861b8fbdb4b9c550a62139cd90675e40"
57
  integrity sha512-LdWzgqmu116t9+sOvONyB21bBmI8dm8g8s3KhnJVzCcK93GrdSisuIOtOkQPMYgenmVGTWQwWnbLAgoka/jAFw==
58
  dependencies:
59
    cross-spawn "^6.0.5"
60
    dotenv "^8.0.0"
61
    dotenv-expand "^5.1.0"
62
    minimist "^1.2.0"
63

  
54 64
"@ctrl/tinycolor@^3.4.0":
55 65
  version "3.4.1"
56 66
  resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz#75b4c27948c81e88ccd3a8902047bcd797f38d32"
......
778 788
  resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.22.0.tgz#0eaa54b6d1f4ebb4d19976bb4916dfad149a3747"
779 789
  integrity sha512-ylOC9nVy0ak1N+fPIZj00umoZHgUVqmucklP5RT5N+vJof38klKn8Ze6KGyvchdClvEBr6LcQqJpI216LUMqYA==
780 790

  
791
cross-spawn@^6.0.5:
792
  version "6.0.5"
793
  resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
794
  integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
795
  dependencies:
796
    nice-try "^1.0.4"
797
    path-key "^2.0.1"
798
    semver "^5.5.0"
799
    shebang-command "^1.2.0"
800
    which "^1.2.9"
801

  
781 802
cross-spawn@^7.0.2:
782 803
  version "7.0.3"
783 804
  resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
......
887 908
    "@babel/runtime" "^7.8.7"
888 909
    csstype "^3.0.2"
889 910

  
911
dotenv-expand@^5.1.0:
912
  version "5.1.0"
913
  resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0"
914
  integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==
915

  
916
dotenv@^8.0.0:
917
  version "8.6.0"
918
  resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b"
919
  integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==
920

  
890 921
easy-table@1.1.0:
891 922
  version "1.1.0"
892 923
  resolved "https://registry.yarnpkg.com/easy-table/-/easy-table-1.1.0.tgz#86f9ab4c102f0371b7297b92a651d5824bc8cb73"
......
1849 1880
    "@next/swc-win32-ia32-msvc" "12.1.0"
1850 1881
    "@next/swc-win32-x64-msvc" "12.1.0"
1851 1882

  
1883
nice-try@^1.0.4:
1884
  version "1.0.5"
1885
  resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
1886
  integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
1887

  
1852 1888
node-fetch@^2.6.1:
1853 1889
  version "2.6.7"
1854 1890
  resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
......
2008 2044
  resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
2009 2045
  integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
2010 2046

  
2047
path-key@^2.0.1:
2048
  version "2.0.1"
2049
  resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
2050
  integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
2051

  
2011 2052
path-key@^3.1.0:
2012 2053
  version "3.1.1"
2013 2054
  resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
......
2669 2710
  dependencies:
2670 2711
    compute-scroll-into-view "^1.0.17"
2671 2712

  
2713
semver@^5.5.0:
2714
  version "5.7.1"
2715
  resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
2716
  integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
2717

  
2672 2718
semver@^6.3.0:
2673 2719
  version "6.3.0"
2674 2720
  resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
......
2686 2732
  resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8"
2687 2733
  integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==
2688 2734

  
2735
shebang-command@^1.2.0:
2736
  version "1.2.0"
2737
  resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
2738
  integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
2739
  dependencies:
2740
    shebang-regex "^1.0.0"
2741

  
2689 2742
shebang-command@^2.0.0:
2690 2743
  version "2.0.0"
2691 2744
  resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
......
2693 2746
  dependencies:
2694 2747
    shebang-regex "^3.0.0"
2695 2748

  
2749
shebang-regex@^1.0.0:
2750
  version "1.0.0"
2751
  resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
2752
  integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
2753

  
2696 2754
shebang-regex@^3.0.0:
2697 2755
  version "3.0.0"
2698 2756
  resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
......
3014 3072
    is-string "^1.0.5"
3015 3073
    is-symbol "^1.0.3"
3016 3074

  
3075
which@^1.2.9:
3076
  version "1.3.1"
3077
  resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
3078
  integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
3079
  dependencies:
3080
    isexe "^2.0.0"
3081

  
3017 3082
which@^2.0.1:
3018 3083
  version "2.0.2"
3019 3084
  resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"

Také k dispozici: Unified diff