summaryrefslogtreecommitdiff
path: root/.gitea/workflows/build.yml
blob: 2dadbce2226d90009099ce98645f05ce40c82860 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json

name: build

on:
  push:
    branches:
      - "master"
  workflow_dispatch: {}

defaults:
  run:
    shell: sh

jobs:
  build:
    runs-on: alpine-3.16
    steps:
    - uses: https://gitea.com/actions/checkout@v3

    - name: npm install
      run: npm install

    - name: eslint
      run: npx eslint js plugins

    - name: phpunit
      run: php81 ./vendor/bin/phpunit

    - name: calculate cache key hash
      uses: actions/[email protected]
      id: cache-hash
      with:
        patterns: |
          classes/*.php
          include/*.php
          plugins/**/*.php

    - uses: https://github.com/actions/cache/restore@v3
      id: cache-phpstan
      with:
        path: /tmp/phpstan
        key: ${{ runner.os }}-phpstan-${{ steps.cache-hash.outputs.hash }}

    - name: phpstan
      run: php81 -d memory_limit=-1 ./vendor/bin/phpstan --memory-limit=2G

    - uses: https://github.com/actions/cache/save@v3
      with:
        path: /tmp/phpstan
        key: ${{ steps.cache-phpstan.outputs.cache-primary-key }}

    - run: echo REPO_TIMESTAMP=$(git --git-dir '.git' --no-pager log --pretty='%ct' -n1 HEAD) >> $GITHUB_ENV
    - run: echo REPO_COMMIT=$(git --git-dir '.git' --no-pager log --pretty='%h' -n1 HEAD) >> $GITHUB_ENV
    - run: echo REPO_COMMIT_FULL=$(git --git-dir '.git' --no-pager log --pretty='%H' -n1 HEAD) >> $GITHUB_ENV
    - run: echo BUILD_TAG=$(date -d @${REPO_TIMESTAMP} +%y.%m)-${REPO_COMMIT} >> $GITHUB_ENV

    - run: apk add --no-cache docker-cli

    - name: setup qemu
      uses: https://github.com/docker/setup-qemu-action@v2

    - name: setup buildx
      uses: https://github.com/docker/setup-buildx-action@v2

    - name: login into registry
      run: |
        BASE64_AUTH=`echo -n "$REGISTRY_USER:$REGISTRY_PASSWORD" | base64`
        mkdir -p ~/.docker
        echo "{\"auths\": {\"registry-rw.fakecake.org\": {\"auth\": \"$BASE64_AUTH\"}}}" > ~/.docker/config.json
      env:
          REGISTRY_USER: ${{ secrets.REGISTRY_USER }}
          REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }}
      if: ${{ !!secrets.REGISTRY_PUSH_ENABLED }}

    - name: build web-nginx image
      uses: https://github.com/docker/build-push-action@v4
      with:
        push: ${{ !!secrets.REGISTRY_PUSH_ENABLED }}
        platforms: linux/amd64
        context: .docker/web-nginx
        tags: |
          registry-rw.fakecake.org/cthulhoo/ttrss-web-nginx:latest
          registry-rw.fakecake.org/cthulhoo/ttrss-web-nginx:${{ env.BUILD_TAG }}
        provenance: false

    - name: build app image
      uses: https://github.com/docker/build-push-action@v4
      with:
        push: ${{ !!secrets.REGISTRY_PUSH_ENABLED }}
        platforms: linux/amd64
        context: .docker/app
        build-contexts:
          app-src=.
        tags: |
          registry-rw.fakecake.org/cthulhoo/ttrss-fpm-pgsql-static:latest
          registry-rw.fakecake.org/cthulhoo/ttrss-fpm-pgsql-static:${{ env.BUILD_TAG }}
        provenance: false

    - name: login into docker hub
      run: |
        BASE64_AUTH=`echo -n "$REGISTRY_USER:$REGISTRY_PASSWORD" | base64`
        mkdir -p ~/.docker
        echo "{\"auths\": {\"$REGISTRY_HOST\": {\"auth\": \"$BASE64_AUTH\"}}}" > ~/.docker/config.json
      env:
          REGISTRY_USER: ${{ secrets.REGISTRY_GITHUB_USER }}
          REGISTRY_PASSWORD: ${{ secrets.REGISTRY_GITHUB_ACCESS_TOKEN }}
          REGISTRY_HOST: https://index.docker.io/v1/
      if: ${{ !!secrets.REGISTRY_GITHUB_PUSH_ENABLED }}

    - name: build web-nginx image
      uses: https://github.com/docker/build-push-action@v4
      with:
        push: ${{ !!secrets.REGISTRY_GITHUB_PUSH_ENABLED }}
        platforms: linux/amd64,linux/arm64,linux/arm/v7
        context: .docker/web-nginx
        tags: |
          cthulhoo/ttrss-web-nginx:latest
          cthulhoo/ttrss-web-nginx:${{ env.BUILD_TAG }}
        provenance: false

    - name: build app image
      uses: https://github.com/docker/build-push-action@v4
      with:
        push: ${{ !!secrets.REGISTRY_GITHUB_PUSH_ENABLED }}
        platforms: linux/amd64,linux/arm64,linux/arm/v7
        context: .docker/app
        build-contexts:
          app-src=.
        tags: |
          cthulhoo/ttrss-fpm-pgsql-static:latest
          cthulhoo/ttrss-fpm-pgsql-static:${{ env.BUILD_TAG }}
        provenance: false