diff --git a/.gitea/workflows/gitea-build.yaml b/.gitea/workflows/gitea-build.yaml index 9caa3fe..6615834 100644 --- a/.gitea/workflows/gitea-build.yaml +++ b/.gitea/workflows/gitea-build.yaml @@ -1,9 +1,5 @@ - name: Build -#on: -# release: -# types: [published] on: push: branches: @@ -11,32 +7,42 @@ on: - develop jobs: -# test: -# runs-on: ubuntu-latest -# steps: -# - run: echo "The release ${{ gitea.ref }} ${{ gitea.ref_name }} was published" - - build: + test: runs-on: ubuntu-latest steps: - - uses: https://github.com/actions/checkout@v4 + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 + with: + go-version-file: go.mod + - name: Generate templ components + run: go tool templ generate + - name: Vet + run: go vet ./... + - name: Unit tests + run: go test -race ./... + + docker: + needs: test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 - name: Set up Docker Buildx - uses: https://github.com/docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v3 with: config-inline: | [registry."gitea.sanplex.xyz/sansan"] http = true insecure = true - name: Login to Gitea - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: gitea.sanplex.xyz username: ${{ github.repository_owner }} password: ${{ secrets.TOKEN }} - name: Build - uses: https://github.com/docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: context: . file: ./Dockerfile + platforms: linux/amd64,linux/arm64 push: false - #tags: "gitea.sanplex.xyz/sansan/musicserver:${{gitea.ref_name}}, gitea.sanplex.xyz/sansan/musicserver:latest" diff --git a/.gitea/workflows/gitea-release.yaml b/.gitea/workflows/gitea-release.yaml index e3b065c..a1b8759 100644 --- a/.gitea/workflows/gitea-release.yaml +++ b/.gitea/workflows/gitea-release.yaml @@ -1,41 +1,50 @@ - name: Publish -#on: -# release: -# types: [published] on: push: branches: - '*.*' jobs: -# test: -# runs-on: ubuntu-latest -# steps: -# - run: echo "The release ${{ gitea.ref }} ${{ gitea.ref_name }} was published" - - publish: + test: runs-on: ubuntu-latest steps: - - uses: https://github.com/actions/checkout@v4 + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 + with: + go-version-file: go.mod + - name: Generate templ components + run: go tool templ generate + - name: Vet + run: go vet ./... + - name: Unit tests + run: go test -race ./... + + publish: + needs: test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 - name: Set up Docker Buildx - uses: https://github.com/docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v3 with: config-inline: | [registry."gitea.sanplex.xyz/sansan"] http = true insecure = true - name: Login to Gitea - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: gitea.sanplex.xyz username: ${{ github.repository_owner }} password: ${{ secrets.TOKEN }} - name: Build and push Docker image - uses: https://github.com/docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: context: . file: ./Dockerfile + platforms: linux/amd64,linux/arm64 push: true - tags: "gitea.sanplex.xyz/sansan/musicserver:${{gitea.ref_name}}, gitea.sanplex.xyz/sansan/musicserver:latest" + tags: | + gitea.sanplex.xyz/sansan/musicserver:${{ gitea.ref_name }} + gitea.sanplex.xyz/sansan/musicserver:latest diff --git a/.gitea/workflows/integration-tests.yaml b/.gitea/workflows/integration-tests.yaml index e8e87ed..3bb144f 100644 --- a/.gitea/workflows/integration-tests.yaml +++ b/.gitea/workflows/integration-tests.yaml @@ -5,43 +5,14 @@ on: jobs: integration-test: + # Needs access to a Docker daemon: the tests start PostgreSQL with testcontainers. runs-on: ubuntu-latest - container: - image: golang:1.25 - options: --privileged - - services: - postgres: - image: postgres:15-alpine - env: - POSTGRES_USER: testuser - POSTGRES_PASSWORD: testpass - POSTGRES_DB: music_server_test - ports: - - 5432:5432 - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Install dependencies - run: go mod download - - - name: Install testcontainers - run: go install github.com/testcontainers/testcontainers-go@latest - - - name: Run integration tests - env: - DB_HOST: postgres - DB_PORT: 5432 - DB_USERNAME: testuser - DB_PASSWORD: testpass - DB_NAME: music_server_test - MUSIC_PATH: ./testMusic - CHARACTERS_PATH: ./testCharacters - run: go test -v -timeout 30m ./... + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 + with: + go-version-file: go.mod + - name: Generate templ components + run: go tool templ generate + - name: Integration tests + run: go test -tags integration -race -timeout 15m ./...