[CI] Forgejo Actions based CI for PR & branches
(cherry picked from commitf9d75d4705) (cherry picked from commit64f76f4ab2) (cherry picked from commit5d02454155) [CI] Forgejo Actions workflows (cherry picked from commit3ff59b5379) (cherry picked from commit8af826a6f7) (cherry picked from commitd7c09d9cc8) [CI] use the docker label instead of ubuntu-latest (cherry picked from commitb6a6470db6) [CI] all tests need compliance before proceeding (cherry picked from commitb35c496f2c) (cherry picked from commit36a4148a8e) (cherry picked from commit7ffcffa653) (cherry picked from commit8a246d296e) (cherry picked from commitdd0b6e1826) [CI] Forgejo Actions based release process (squash) MySQL optimization Refs: https://codeberg.org/forgejo/forgejo/issues/976 (cherry picked from commitb4b8c489e6) (cherry picked from commit1e861db4af) (cherry picked from commita6c0e00330) (cherry picked from commitf97b336465) (cherry picked from commit 6d65d5f0d6f798556a8f9e547896be03a5ee2f87)
This commit is contained in:
		
							parent
							
								
									a554624f40
								
							
						
					
					
						commit
						79bfbadbed
					
				
					 8 changed files with 156 additions and 592 deletions
				
			
		
							
								
								
									
										156
									
								
								.forgejo/workflows/testing.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										156
									
								
								.forgejo/workflows/testing.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,156 @@
 | 
			
		|||
name: testing
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  pull_request:
 | 
			
		||||
  push:
 | 
			
		||||
    branches:
 | 
			
		||||
      - 'forgejo*'
 | 
			
		||||
      - 'v*/forgejo*'
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  lint-backend:
 | 
			
		||||
    runs-on: docker
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: https://code.forgejo.org/actions/checkout@v3
 | 
			
		||||
      - uses: https://code.forgejo.org/actions/setup-go@v4
 | 
			
		||||
        with:
 | 
			
		||||
          go-version: ">=1.20"
 | 
			
		||||
          check-latest: true
 | 
			
		||||
      - run: make deps-backend deps-tools
 | 
			
		||||
      - run: make lint-backend
 | 
			
		||||
        env:
 | 
			
		||||
          TAGS: bindata sqlite sqlite_unlock_notify
 | 
			
		||||
  checks-backend:
 | 
			
		||||
    runs-on: docker
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: https://code.forgejo.org/actions/checkout@v3
 | 
			
		||||
      - uses: https://code.forgejo.org/actions/setup-go@v4
 | 
			
		||||
        with:
 | 
			
		||||
          go-version: ">=1.20"
 | 
			
		||||
          check-latest: true
 | 
			
		||||
      - run: make deps-backend deps-tools
 | 
			
		||||
      - run: make --always-make checks-backend # ensure the "go-licenses" make target runs
 | 
			
		||||
  test-unit:
 | 
			
		||||
    runs-on: docker
 | 
			
		||||
    needs: [lint-backend, checks-backend]
 | 
			
		||||
    container:
 | 
			
		||||
      image: codeberg.org/forgejo/test_env:main
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: https://code.forgejo.org/actions/checkout@v3
 | 
			
		||||
      - uses: https://code.forgejo.org/actions/setup-go@v4
 | 
			
		||||
        with:
 | 
			
		||||
          go-version: ">=1.20.0"
 | 
			
		||||
      - run: |
 | 
			
		||||
          git config --add safe.directory '*'
 | 
			
		||||
          chown -R gitea:gitea . /go
 | 
			
		||||
      - run: |
 | 
			
		||||
          su gitea -c 'make deps-backend'
 | 
			
		||||
      - run: |
 | 
			
		||||
          su gitea -c 'make backend'
 | 
			
		||||
        env:
 | 
			
		||||
          TAGS: bindata
 | 
			
		||||
      - run: |
 | 
			
		||||
          su gitea -c 'make unit-test-coverage test-check'
 | 
			
		||||
        timeout-minutes: 50
 | 
			
		||||
        env:
 | 
			
		||||
          RACE_ENABLED: 'true'
 | 
			
		||||
          TAGS: bindata
 | 
			
		||||
  test-mysql:
 | 
			
		||||
    runs-on: docker
 | 
			
		||||
    needs: [lint-backend, checks-backend]
 | 
			
		||||
    container:
 | 
			
		||||
      image: codeberg.org/forgejo/test_env:main
 | 
			
		||||
    services:
 | 
			
		||||
      mysql8:
 | 
			
		||||
        image: mysql:8-debian
 | 
			
		||||
        env:
 | 
			
		||||
          MYSQL_ALLOW_EMPTY_PASSWORD: yes
 | 
			
		||||
          MYSQL_DATABASE: testgitea
 | 
			
		||||
        ports:
 | 
			
		||||
          - "3306:3306"
 | 
			
		||||
        #
 | 
			
		||||
        # See also https://codeberg.org/forgejo/forgejo/issues/976
 | 
			
		||||
        #
 | 
			
		||||
        cmd: ['mysqld', '--innodb-adaptive-flushing=OFF', '--innodb-buffer-pool-size=4G', '--innodb-log-buffer-size=128M', '--innodb-flush-log-at-trx-commit=0', '--innodb-flush-log-at-timeout=30', '--innodb-flush-method=nosync', '--innodb-fsync-threshold=1000000000']
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: https://code.forgejo.org/actions/checkout@v3
 | 
			
		||||
      - uses: https://code.forgejo.org/actions/setup-go@v4
 | 
			
		||||
        with:
 | 
			
		||||
          go-version: ">=1.20.0"
 | 
			
		||||
      - run: |
 | 
			
		||||
          git config --add safe.directory '*'
 | 
			
		||||
          chown -R gitea:gitea . /go
 | 
			
		||||
      - run: |
 | 
			
		||||
          su gitea -c 'make deps-backend'
 | 
			
		||||
      - run: |
 | 
			
		||||
          su gitea -c 'make backend'
 | 
			
		||||
        env:
 | 
			
		||||
          TAGS: bindata
 | 
			
		||||
      - run: |
 | 
			
		||||
          su gitea -c 'make test-mysql8-migration test-mysql8'
 | 
			
		||||
        timeout-minutes: 50
 | 
			
		||||
        env:
 | 
			
		||||
          TAGS: bindata
 | 
			
		||||
          USE_REPO_TEST_DIR: 1
 | 
			
		||||
  test-pgsql:
 | 
			
		||||
    runs-on: docker
 | 
			
		||||
    needs: [lint-backend, checks-backend]
 | 
			
		||||
    container:
 | 
			
		||||
      image: codeberg.org/forgejo/test_env:main
 | 
			
		||||
    services:
 | 
			
		||||
      pgsql:
 | 
			
		||||
        image: postgres:15
 | 
			
		||||
        env:
 | 
			
		||||
          POSTGRES_DB: test
 | 
			
		||||
          POSTGRES_PASSWORD: postgres
 | 
			
		||||
        ports:
 | 
			
		||||
          - "5432:5432"
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: https://code.forgejo.org/actions/checkout@v3
 | 
			
		||||
      - uses: https://code.forgejo.org/actions/setup-go@v4
 | 
			
		||||
        with:
 | 
			
		||||
          go-version: ">=1.20.0"
 | 
			
		||||
      - run: |
 | 
			
		||||
          git config --add safe.directory '*'
 | 
			
		||||
          chown -R gitea:gitea . /go
 | 
			
		||||
      - run: |
 | 
			
		||||
          su gitea -c 'make deps-backend'
 | 
			
		||||
      - run: |
 | 
			
		||||
          su gitea -c 'make backend'
 | 
			
		||||
        env:
 | 
			
		||||
          TAGS: bindata
 | 
			
		||||
      - run: |
 | 
			
		||||
          su gitea -c 'make test-pgsql-migration test-pgsql'
 | 
			
		||||
        timeout-minutes: 50
 | 
			
		||||
        env:
 | 
			
		||||
          TAGS: bindata gogit
 | 
			
		||||
          RACE_ENABLED: true
 | 
			
		||||
          TEST_TAGS: gogit
 | 
			
		||||
          USE_REPO_TEST_DIR: 1
 | 
			
		||||
  test-sqlite:
 | 
			
		||||
    runs-on: docker
 | 
			
		||||
    needs: [lint-backend, checks-backend]
 | 
			
		||||
    container:
 | 
			
		||||
      image: codeberg.org/forgejo/test_env:main
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: https://code.forgejo.org/actions/checkout@v3
 | 
			
		||||
      - uses: https://code.forgejo.org/actions/setup-go@v4
 | 
			
		||||
        with:
 | 
			
		||||
          go-version: ">=1.20.0"
 | 
			
		||||
      - run: |
 | 
			
		||||
          git config --add safe.directory '*'
 | 
			
		||||
          chown -R gitea:gitea . /go
 | 
			
		||||
      - run: |
 | 
			
		||||
          su gitea -c 'make deps-backend'
 | 
			
		||||
      - run: |
 | 
			
		||||
          su gitea -c 'make backend'
 | 
			
		||||
        env:
 | 
			
		||||
          TAGS: bindata gogit sqlite sqlite_unlock_notify
 | 
			
		||||
      - run: |
 | 
			
		||||
          su gitea -c 'make test-sqlite-migration test-sqlite'
 | 
			
		||||
        timeout-minutes: 50
 | 
			
		||||
        env:
 | 
			
		||||
          TAGS: bindata gogit sqlite sqlite_unlock_notify
 | 
			
		||||
          RACE_ENABLED: true
 | 
			
		||||
          TEST_TAGS: gogit sqlite sqlite_unlock_notify
 | 
			
		||||
          USE_REPO_TEST_DIR: 1
 | 
			
		||||
							
								
								
									
										29
									
								
								.github/workflows/cron-licenses.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										29
									
								
								.github/workflows/cron-licenses.yml
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1,29 +0,0 @@
 | 
			
		|||
name: cron-licenses
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  schedule:
 | 
			
		||||
    - cron: "7 0 * * 1" # every Monday at 00:07 UTC
 | 
			
		||||
  workflow_dispatch:
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  cron-licenses:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    if: github.repository == 'go-gitea/gitea'
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: actions/setup-go@v4
 | 
			
		||||
        with:
 | 
			
		||||
          go-version: ">=1.20"
 | 
			
		||||
          check-latest: true
 | 
			
		||||
      - run: make generate-license generate-gitignore
 | 
			
		||||
        timeout-minutes: 40
 | 
			
		||||
      - name: push translations to repo
 | 
			
		||||
        uses: appleboy/git-push-action@v0.0.2
 | 
			
		||||
        with:
 | 
			
		||||
          author_email: "teabot@gitea.io"
 | 
			
		||||
          author_name: GiteaBot
 | 
			
		||||
          branch: main
 | 
			
		||||
          commit: true
 | 
			
		||||
          commit_message: "[skip ci] Updated licenses and gitignores"
 | 
			
		||||
          remote: "git@github.com:go-gitea/gitea.git"
 | 
			
		||||
          ssh_key: ${{ secrets.DEPLOY_KEY }}
 | 
			
		||||
							
								
								
									
										22
									
								
								.github/workflows/cron-lock.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								.github/workflows/cron-lock.yml
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1,22 +0,0 @@
 | 
			
		|||
name: cron-lock
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  schedule:
 | 
			
		||||
    - cron: "0 0 * * *" # every day at 00:00 UTC
 | 
			
		||||
  workflow_dispatch:
 | 
			
		||||
 | 
			
		||||
permissions:
 | 
			
		||||
  issues: write
 | 
			
		||||
  pull-requests: write
 | 
			
		||||
 | 
			
		||||
concurrency:
 | 
			
		||||
  group: lock
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  action:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    if: github.repository == 'go-gitea/gitea'
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: dessant/lock-threads@v4
 | 
			
		||||
        with:
 | 
			
		||||
          issue-inactive-days: 45
 | 
			
		||||
							
								
								
									
										49
									
								
								.github/workflows/cron-translations.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										49
									
								
								.github/workflows/cron-translations.yml
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1,49 +0,0 @@
 | 
			
		|||
name: cron-translations
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  schedule:
 | 
			
		||||
    - cron: "7 0 * * *" # every day at 00:07 UTC
 | 
			
		||||
  workflow_dispatch:
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  crowdin-pull:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    if: github.repository == 'go-gitea/gitea'
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - name: download from crowdin
 | 
			
		||||
        uses: docker://jonasfranz/crowdin
 | 
			
		||||
        env:
 | 
			
		||||
          CROWDIN_KEY: ${{ secrets.CROWDIN_KEY }}
 | 
			
		||||
          PLUGIN_DOWNLOAD: true
 | 
			
		||||
          PLUGIN_EXPORT_DIR: options/locale/
 | 
			
		||||
          PLUGIN_IGNORE_BRANCH: true
 | 
			
		||||
          PLUGIN_PROJECT_IDENTIFIER: gitea
 | 
			
		||||
      - name: update locales
 | 
			
		||||
        run: ./build/update-locales.sh
 | 
			
		||||
      - name: push translations to repo
 | 
			
		||||
        uses: appleboy/git-push-action@v0.0.2
 | 
			
		||||
        with:
 | 
			
		||||
          author_email: "teabot@gitea.io"
 | 
			
		||||
          author_name: GiteaBot
 | 
			
		||||
          branch: main
 | 
			
		||||
          commit: true
 | 
			
		||||
          commit_message: "[skip ci] Updated translations via Crowdin"
 | 
			
		||||
          remote: "git@github.com:go-gitea/gitea.git"
 | 
			
		||||
          ssh_key: ${{ secrets.DEPLOY_KEY }}
 | 
			
		||||
  crowdin-push:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    if: github.repository == 'go-gitea/gitea'
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - name: push translations to crowdin
 | 
			
		||||
        uses: docker://jonasfranz/crowdin
 | 
			
		||||
        env:
 | 
			
		||||
          CROWDIN_KEY: ${{ secrets.CROWDIN_KEY }}
 | 
			
		||||
          PLUGIN_UPLOAD: true
 | 
			
		||||
          PLUGIN_EXPORT_DIR: options/locale/
 | 
			
		||||
          PLUGIN_IGNORE_BRANCH: true
 | 
			
		||||
          PLUGIN_PROJECT_IDENTIFIER: gitea
 | 
			
		||||
          PLUGIN_FILES: |
 | 
			
		||||
            locale_en-US.ini: options/locale/locale_en-US.ini
 | 
			
		||||
          PLUGIN_BRANCH: main
 | 
			
		||||
							
								
								
									
										166
									
								
								.github/workflows/pull-compliance.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										166
									
								
								.github/workflows/pull-compliance.yml
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1,166 +0,0 @@
 | 
			
		|||
name: compliance
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  pull_request:
 | 
			
		||||
 | 
			
		||||
concurrency:
 | 
			
		||||
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
 | 
			
		||||
  cancel-in-progress: true
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  files-changed:
 | 
			
		||||
    uses: ./.github/workflows/files-changed.yml
 | 
			
		||||
 | 
			
		||||
  lint-backend:
 | 
			
		||||
    if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.actions == 'true'
 | 
			
		||||
    needs: files-changed
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: actions/setup-go@v4
 | 
			
		||||
        with:
 | 
			
		||||
          go-version: ">=1.20"
 | 
			
		||||
          check-latest: true
 | 
			
		||||
      - run: make deps-backend deps-tools
 | 
			
		||||
      - run: make lint-backend
 | 
			
		||||
        env:
 | 
			
		||||
          TAGS: bindata sqlite sqlite_unlock_notify
 | 
			
		||||
 | 
			
		||||
  lint-templates:
 | 
			
		||||
    if: needs.files-changed.outputs.templates == 'true'
 | 
			
		||||
    needs: files-changed
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: actions/setup-python@v4
 | 
			
		||||
        with:
 | 
			
		||||
          python-version: "3.11"
 | 
			
		||||
      - run: pip install poetry
 | 
			
		||||
      - run: make deps-py
 | 
			
		||||
      - run: make lint-templates
 | 
			
		||||
 | 
			
		||||
  lint-swagger:
 | 
			
		||||
    if: needs.files-changed.outputs.swagger == 'true'
 | 
			
		||||
    needs: files-changed
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: actions/setup-node@v3
 | 
			
		||||
        with:
 | 
			
		||||
          node-version: 20
 | 
			
		||||
      - run: make deps-frontend
 | 
			
		||||
      - run: make lint-swagger
 | 
			
		||||
 | 
			
		||||
  lint-go-windows:
 | 
			
		||||
    if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.actions == 'true'
 | 
			
		||||
    needs: files-changed
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: actions/setup-go@v4
 | 
			
		||||
        with:
 | 
			
		||||
          go-version: ">=1.20"
 | 
			
		||||
          check-latest: true
 | 
			
		||||
      - run: make deps-backend deps-tools
 | 
			
		||||
      - run: make lint-go-windows lint-go-vet
 | 
			
		||||
        env:
 | 
			
		||||
          TAGS: bindata sqlite sqlite_unlock_notify
 | 
			
		||||
          GOOS: windows
 | 
			
		||||
          GOARCH: amd64
 | 
			
		||||
 | 
			
		||||
  lint-go-gogit:
 | 
			
		||||
    if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.actions == 'true'
 | 
			
		||||
    needs: files-changed
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: actions/setup-go@v4
 | 
			
		||||
        with:
 | 
			
		||||
          go-version: ">=1.20"
 | 
			
		||||
          check-latest: true
 | 
			
		||||
      - run: make deps-backend deps-tools
 | 
			
		||||
      - run: make lint-go
 | 
			
		||||
        env:
 | 
			
		||||
          TAGS: bindata gogit sqlite sqlite_unlock_notify
 | 
			
		||||
 | 
			
		||||
  checks-backend:
 | 
			
		||||
    if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.actions == 'true'
 | 
			
		||||
    needs: files-changed
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: actions/setup-go@v4
 | 
			
		||||
        with:
 | 
			
		||||
          go-version: ">=1.20"
 | 
			
		||||
          check-latest: true
 | 
			
		||||
      - run: make deps-backend deps-tools
 | 
			
		||||
      - run: make --always-make checks-backend # ensure the "go-licenses" make target runs
 | 
			
		||||
 | 
			
		||||
  frontend:
 | 
			
		||||
    if: needs.files-changed.outputs.frontend == 'true' || needs.files-changed.outputs.actions == 'true'
 | 
			
		||||
    needs: files-changed
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: actions/setup-node@v3
 | 
			
		||||
        with:
 | 
			
		||||
          node-version: 20
 | 
			
		||||
      - run: make deps-frontend
 | 
			
		||||
      - run: make lint-frontend
 | 
			
		||||
      - run: make checks-frontend
 | 
			
		||||
      - run: make test-frontend
 | 
			
		||||
      - run: make frontend
 | 
			
		||||
 | 
			
		||||
  backend:
 | 
			
		||||
    if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.actions == 'true'
 | 
			
		||||
    needs: files-changed
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: actions/setup-go@v4
 | 
			
		||||
        with:
 | 
			
		||||
          go-version: ">=1.20"
 | 
			
		||||
          check-latest: true
 | 
			
		||||
      # no frontend build here as backend should be able to build
 | 
			
		||||
      # even without any frontend files
 | 
			
		||||
      - run: make deps-backend
 | 
			
		||||
      - run: go build -o gitea_no_gcc # test if build succeeds without the sqlite tag
 | 
			
		||||
      - name: build-backend-arm64
 | 
			
		||||
        run: make backend # test cross compile
 | 
			
		||||
        env:
 | 
			
		||||
          GOOS: linux
 | 
			
		||||
          GOARCH: arm64
 | 
			
		||||
          TAGS: bindata gogit
 | 
			
		||||
      - name: build-backend-windows
 | 
			
		||||
        run: go build -o gitea_windows
 | 
			
		||||
        env:
 | 
			
		||||
          GOOS: windows
 | 
			
		||||
          GOARCH: amd64
 | 
			
		||||
          TAGS: bindata gogit
 | 
			
		||||
      - name: build-backend-386
 | 
			
		||||
        run: go build -o gitea_linux_386 # test if compatible with 32 bit
 | 
			
		||||
        env:
 | 
			
		||||
          GOOS: linux
 | 
			
		||||
          GOARCH: 386
 | 
			
		||||
 | 
			
		||||
  docs:
 | 
			
		||||
    if: needs.files-changed.outputs.docs == 'true' || needs.files-changed.outputs.actions == 'true'
 | 
			
		||||
    needs: files-changed
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: actions/setup-node@v3
 | 
			
		||||
        with:
 | 
			
		||||
          node-version: 20
 | 
			
		||||
      - run: make deps-frontend
 | 
			
		||||
      - run: make lint-md
 | 
			
		||||
      - run: make docs
 | 
			
		||||
 | 
			
		||||
  actions:
 | 
			
		||||
    if: needs.files-changed.outputs.actions == 'true' || needs.files-changed.outputs.actions == 'true'
 | 
			
		||||
    needs: files-changed
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: actions/setup-go@v4
 | 
			
		||||
      - run: make lint-actions
 | 
			
		||||
							
								
								
									
										259
									
								
								.github/workflows/pull-db-tests.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										259
									
								
								.github/workflows/pull-db-tests.yml
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1,259 +0,0 @@
 | 
			
		|||
name: db-tests
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  pull_request:
 | 
			
		||||
 | 
			
		||||
concurrency:
 | 
			
		||||
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
 | 
			
		||||
  cancel-in-progress: true
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  files-changed:
 | 
			
		||||
    uses: ./.github/workflows/files-changed.yml
 | 
			
		||||
 | 
			
		||||
  test-pgsql:
 | 
			
		||||
    if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.actions == 'true'
 | 
			
		||||
    needs: files-changed
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    services:
 | 
			
		||||
      pgsql:
 | 
			
		||||
        image: postgres:15
 | 
			
		||||
        env:
 | 
			
		||||
          POSTGRES_DB: test
 | 
			
		||||
          POSTGRES_PASSWORD: postgres
 | 
			
		||||
        ports:
 | 
			
		||||
          - "5432:5432"
 | 
			
		||||
      ldap:
 | 
			
		||||
        image: gitea/test-openldap:latest
 | 
			
		||||
        ports:
 | 
			
		||||
          - "389:389"
 | 
			
		||||
          - "636:636"
 | 
			
		||||
      minio:
 | 
			
		||||
        # as github actions doesn't support "entrypoint", we need to use a non-official image
 | 
			
		||||
        # that has a custom entrypoint set to "minio server /data"
 | 
			
		||||
        image: bitnami/minio:2021.3.17
 | 
			
		||||
        env:
 | 
			
		||||
          MINIO_ACCESS_KEY: 123456
 | 
			
		||||
          MINIO_SECRET_KEY: 12345678
 | 
			
		||||
        ports:
 | 
			
		||||
          - "9000:9000"
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: actions/setup-go@v4
 | 
			
		||||
        with:
 | 
			
		||||
          go-version: ">=1.20"
 | 
			
		||||
          check-latest: true
 | 
			
		||||
      - name: Add hosts to /etc/hosts
 | 
			
		||||
        run: '[ -e "/.dockerenv" ] || [ -e "/run/.containerenv" ] || echo "127.0.0.1 pgsql ldap minio" | sudo tee -a /etc/hosts'
 | 
			
		||||
      - run: make deps-backend
 | 
			
		||||
      - run: make backend
 | 
			
		||||
        env:
 | 
			
		||||
          TAGS: bindata
 | 
			
		||||
      - run: make test-pgsql-migration test-pgsql
 | 
			
		||||
        timeout-minutes: 50
 | 
			
		||||
        env:
 | 
			
		||||
          TAGS: bindata gogit
 | 
			
		||||
          RACE_ENABLED: true
 | 
			
		||||
          TEST_TAGS: gogit
 | 
			
		||||
          TEST_LDAP: 1
 | 
			
		||||
          USE_REPO_TEST_DIR: 1
 | 
			
		||||
 | 
			
		||||
  test-sqlite:
 | 
			
		||||
    if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.actions == 'true'
 | 
			
		||||
    needs: files-changed
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: actions/setup-go@v4
 | 
			
		||||
        with:
 | 
			
		||||
          go-version: ">=1.20"
 | 
			
		||||
          check-latest: true
 | 
			
		||||
      - run: make deps-backend
 | 
			
		||||
      - run: make backend
 | 
			
		||||
        env:
 | 
			
		||||
          TAGS: bindata gogit sqlite sqlite_unlock_notify
 | 
			
		||||
      - run: make test-sqlite-migration test-sqlite
 | 
			
		||||
        timeout-minutes: 50
 | 
			
		||||
        env:
 | 
			
		||||
          TAGS: bindata gogit sqlite sqlite_unlock_notify
 | 
			
		||||
          RACE_ENABLED: true
 | 
			
		||||
          TEST_TAGS: gogit sqlite sqlite_unlock_notify
 | 
			
		||||
          USE_REPO_TEST_DIR: 1
 | 
			
		||||
 | 
			
		||||
  test-unit:
 | 
			
		||||
    if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.actions == 'true'
 | 
			
		||||
    needs: files-changed
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    services:
 | 
			
		||||
      mysql:
 | 
			
		||||
        image: mysql:5.7
 | 
			
		||||
        env:
 | 
			
		||||
          MYSQL_ALLOW_EMPTY_PASSWORD: yes
 | 
			
		||||
          MYSQL_DATABASE: test
 | 
			
		||||
        ports:
 | 
			
		||||
          - "3306:3306"
 | 
			
		||||
      elasticsearch:
 | 
			
		||||
        image: elasticsearch:7.5.0
 | 
			
		||||
        env:
 | 
			
		||||
          discovery.type: single-node
 | 
			
		||||
        ports:
 | 
			
		||||
          - "9200:9200"
 | 
			
		||||
      meilisearch:
 | 
			
		||||
        image: getmeili/meilisearch:v1.2.0
 | 
			
		||||
        env:
 | 
			
		||||
          MEILI_ENV: development # disable auth
 | 
			
		||||
        ports:
 | 
			
		||||
          - "7700:7700"
 | 
			
		||||
      smtpimap:
 | 
			
		||||
        image: tabascoterrier/docker-imap-devel:latest
 | 
			
		||||
        ports:
 | 
			
		||||
          - "25:25"
 | 
			
		||||
          - "143:143"
 | 
			
		||||
          - "587:587"
 | 
			
		||||
          - "993:993"
 | 
			
		||||
      redis:
 | 
			
		||||
        image: redis
 | 
			
		||||
        options: >- # wait until redis has started
 | 
			
		||||
          --health-cmd "redis-cli ping"
 | 
			
		||||
          --health-interval 5s
 | 
			
		||||
          --health-timeout 3s
 | 
			
		||||
          --health-retries 10
 | 
			
		||||
        ports:
 | 
			
		||||
          - 6379:6379
 | 
			
		||||
      minio:
 | 
			
		||||
        image: bitnami/minio:2021.3.17
 | 
			
		||||
        env:
 | 
			
		||||
          MINIO_ACCESS_KEY: 123456
 | 
			
		||||
          MINIO_SECRET_KEY: 12345678
 | 
			
		||||
        ports:
 | 
			
		||||
          - "9000:9000"
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: actions/setup-go@v4
 | 
			
		||||
        with:
 | 
			
		||||
          go-version: ">=1.20"
 | 
			
		||||
          check-latest: true
 | 
			
		||||
      - name: Add hosts to /etc/hosts
 | 
			
		||||
        run: '[ -e "/.dockerenv" ] || [ -e "/run/.containerenv" ] || echo "127.0.0.1 mysql elasticsearch meilisearch smtpimap" | sudo tee -a /etc/hosts'
 | 
			
		||||
      - run: make deps-backend
 | 
			
		||||
      - run: make backend
 | 
			
		||||
        env:
 | 
			
		||||
          TAGS: bindata
 | 
			
		||||
      - name: unit-tests
 | 
			
		||||
        run: make unit-test-coverage test-check
 | 
			
		||||
        env:
 | 
			
		||||
          TAGS: bindata
 | 
			
		||||
          RACE_ENABLED: true
 | 
			
		||||
          GITHUB_READ_TOKEN: ${{ secrets.GITHUB_READ_TOKEN }}
 | 
			
		||||
      - name: unit-tests-gogit
 | 
			
		||||
        run: make unit-test-coverage test-check
 | 
			
		||||
        env:
 | 
			
		||||
          TAGS: bindata gogit
 | 
			
		||||
          RACE_ENABLED: true
 | 
			
		||||
          GITHUB_READ_TOKEN: ${{ secrets.GITHUB_READ_TOKEN }}
 | 
			
		||||
 | 
			
		||||
  test-mysql5:
 | 
			
		||||
    if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.actions == 'true'
 | 
			
		||||
    needs: files-changed
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    services:
 | 
			
		||||
      mysql:
 | 
			
		||||
        image: mysql:5.7
 | 
			
		||||
        env:
 | 
			
		||||
          MYSQL_ALLOW_EMPTY_PASSWORD: yes
 | 
			
		||||
          MYSQL_DATABASE: test
 | 
			
		||||
        ports:
 | 
			
		||||
          - "3306:3306"
 | 
			
		||||
      elasticsearch:
 | 
			
		||||
        image: elasticsearch:7.5.0
 | 
			
		||||
        env:
 | 
			
		||||
          discovery.type: single-node
 | 
			
		||||
        ports:
 | 
			
		||||
          - "9200:9200"
 | 
			
		||||
      smtpimap:
 | 
			
		||||
        image: tabascoterrier/docker-imap-devel:latest
 | 
			
		||||
        ports:
 | 
			
		||||
          - "25:25"
 | 
			
		||||
          - "143:143"
 | 
			
		||||
          - "587:587"
 | 
			
		||||
          - "993:993"
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: actions/setup-go@v4
 | 
			
		||||
        with:
 | 
			
		||||
          go-version: ">=1.20"
 | 
			
		||||
          check-latest: true
 | 
			
		||||
      - name: Add hosts to /etc/hosts
 | 
			
		||||
        run: '[ -e "/.dockerenv" ] || [ -e "/run/.containerenv" ] || echo "127.0.0.1 mysql elasticsearch smtpimap" | sudo tee -a /etc/hosts'
 | 
			
		||||
      - run: make deps-backend
 | 
			
		||||
      - run: make backend
 | 
			
		||||
        env:
 | 
			
		||||
          TAGS: bindata
 | 
			
		||||
      - name: run tests
 | 
			
		||||
        run: make test-mysql-migration integration-test-coverage
 | 
			
		||||
        env:
 | 
			
		||||
          TAGS: bindata
 | 
			
		||||
          RACE_ENABLED: true
 | 
			
		||||
          USE_REPO_TEST_DIR: 1
 | 
			
		||||
          TEST_INDEXER_CODE_ES_URL: "http://elastic:changeme@elasticsearch:9200"
 | 
			
		||||
 | 
			
		||||
  test-mysql8:
 | 
			
		||||
    if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.actions == 'true'
 | 
			
		||||
    needs: files-changed
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    services:
 | 
			
		||||
      mysql8:
 | 
			
		||||
        image: mysql:8
 | 
			
		||||
        env:
 | 
			
		||||
          MYSQL_ALLOW_EMPTY_PASSWORD: yes
 | 
			
		||||
          MYSQL_DATABASE: testgitea
 | 
			
		||||
        ports:
 | 
			
		||||
          - "3306:3306"
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: actions/setup-go@v4
 | 
			
		||||
        with:
 | 
			
		||||
          go-version: ">=1.20"
 | 
			
		||||
          check-latest: true
 | 
			
		||||
      - name: Add hosts to /etc/hosts
 | 
			
		||||
        run: '[ -e "/.dockerenv" ] || [ -e "/run/.containerenv" ] || echo "127.0.0.1 mysql8" | sudo tee -a /etc/hosts'
 | 
			
		||||
      - run: make deps-backend
 | 
			
		||||
      - run: make backend
 | 
			
		||||
        env:
 | 
			
		||||
          TAGS: bindata
 | 
			
		||||
      - run: make test-mysql8-migration test-mysql8
 | 
			
		||||
        timeout-minutes: 50
 | 
			
		||||
        env:
 | 
			
		||||
          TAGS: bindata
 | 
			
		||||
          USE_REPO_TEST_DIR: 1
 | 
			
		||||
 | 
			
		||||
  test-mssql:
 | 
			
		||||
    if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.actions == 'true'
 | 
			
		||||
    needs: files-changed
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    services:
 | 
			
		||||
      mssql:
 | 
			
		||||
        image: mcr.microsoft.com/mssql/server:latest
 | 
			
		||||
        env:
 | 
			
		||||
          ACCEPT_EULA: Y
 | 
			
		||||
          MSSQL_PID: Standard
 | 
			
		||||
          SA_PASSWORD: MwantsaSecurePassword1
 | 
			
		||||
        ports:
 | 
			
		||||
          - "1433:1433"
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: actions/setup-go@v4
 | 
			
		||||
        with:
 | 
			
		||||
          go-version: ">=1.20"
 | 
			
		||||
          check-latest: true
 | 
			
		||||
      - name: Add hosts to /etc/hosts
 | 
			
		||||
        run: '[ -e "/.dockerenv" ] || [ -e "/run/.containerenv" ] || echo "127.0.0.1 mssql" | sudo tee -a /etc/hosts'
 | 
			
		||||
      - run: make deps-backend
 | 
			
		||||
      - run: make backend
 | 
			
		||||
        env:
 | 
			
		||||
          TAGS: bindata
 | 
			
		||||
      - run: make test-mssql-migration test-mssql
 | 
			
		||||
        timeout-minutes: 50
 | 
			
		||||
        env:
 | 
			
		||||
          TAGS: bindata
 | 
			
		||||
          USE_REPO_TEST_DIR: 1
 | 
			
		||||
							
								
								
									
										35
									
								
								.github/workflows/pull-docker-dryrun.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										35
									
								
								.github/workflows/pull-docker-dryrun.yml
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1,35 +0,0 @@
 | 
			
		|||
name: docker-dryrun
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  pull_request:
 | 
			
		||||
 | 
			
		||||
concurrency:
 | 
			
		||||
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
 | 
			
		||||
  cancel-in-progress: true
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  files-changed:
 | 
			
		||||
    uses: ./.github/workflows/files-changed.yml
 | 
			
		||||
 | 
			
		||||
  regular:
 | 
			
		||||
    if: needs.files-changed.outputs.docker == 'true' || needs.files-changed.outputs.actions == 'true'
 | 
			
		||||
    needs: files-changed
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: docker/setup-buildx-action@v2
 | 
			
		||||
      - uses: docker/build-push-action@v4
 | 
			
		||||
        with:
 | 
			
		||||
          push: false
 | 
			
		||||
          tags: gitea/gitea:linux-amd64
 | 
			
		||||
 | 
			
		||||
  rootless:
 | 
			
		||||
    if: needs.files-changed.outputs.docker == 'true' || needs.files-changed.outputs.actions == 'true'
 | 
			
		||||
    needs: files-changed
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: docker/setup-buildx-action@v2
 | 
			
		||||
      - uses: docker/build-push-action@v4
 | 
			
		||||
        with:
 | 
			
		||||
          push: false
 | 
			
		||||
          file: Dockerfile.rootless
 | 
			
		||||
          tags: gitea/gitea:linux-amd64
 | 
			
		||||
							
								
								
									
										32
									
								
								.github/workflows/pull-e2e-tests.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										32
									
								
								.github/workflows/pull-e2e-tests.yml
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1,32 +0,0 @@
 | 
			
		|||
name: e2e-tests
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  pull_request:
 | 
			
		||||
 | 
			
		||||
concurrency:
 | 
			
		||||
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
 | 
			
		||||
  cancel-in-progress: true
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  files-changed:
 | 
			
		||||
    uses: ./.github/workflows/files-changed.yml
 | 
			
		||||
 | 
			
		||||
  test-e2e:
 | 
			
		||||
    if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.frontend == 'true' || needs.files-changed.outputs.actions == 'true'
 | 
			
		||||
    needs: files-changed
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: actions/setup-go@v4
 | 
			
		||||
        with:
 | 
			
		||||
          go-version: ">=1.20"
 | 
			
		||||
          check-latest: true
 | 
			
		||||
      - uses: actions/setup-node@v3
 | 
			
		||||
        with:
 | 
			
		||||
          node-version: 20
 | 
			
		||||
      - run: make deps-frontend frontend deps-backend
 | 
			
		||||
      - run: npx playwright install --with-deps
 | 
			
		||||
      - run: make test-e2e-sqlite
 | 
			
		||||
        timeout-minutes: 40
 | 
			
		||||
        env:
 | 
			
		||||
          USE_REPO_TEST_DIR: 1
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue