Explorar o código

chore: Simplify semrel pipeline

jamesread hai 8 meses
pai
achega
58ba8eeeb9

+ 29 - 8
.github/workflows/build-tag.yml → .github/workflows/build-and-release.yml

@@ -1,13 +1,15 @@
 ---
 ---
-name: "Build Tag"
+name: "Build & Release pipeline"
 
 
 on:
 on:
+  pull_request:
+  workflow_dispatch:
   push:
   push:
     tags:
     tags:
       - '*'
       - '*'
 
 
 jobs:
 jobs:
-  build-tag:
+  build:
     runs-on: ubuntu-latest
     runs-on: ubuntu-latest
     steps:
     steps:
       - name: Checkout
       - name: Checkout
@@ -54,25 +56,44 @@ jobs:
       - name: make webui
       - name: make webui
         run: make -w webui-dist
         run: make -w webui-dist
 
 
-      - name: goreleaser
+      - name: unit tests
+        run: make -w service-unittests
+
+      - name: integration tests
+        run: cd integration-tests && make -w
+
+      - name: Install goreleaser
         uses: goreleaser/goreleaser-action@v6
         uses: goreleaser/goreleaser-action@v6
         with:
         with:
-          distribution: goreleaser
-          version: latest
-          args: release --clean --timeout 60m
+          install-only: true
+
+      - name: release
+        if: github.ref_type != 'tag'
+        uses: cycjimmy/semantic-release-action@v4
+        with:
+          extra_plugins: |
+            @semantic-release/commit-analyzer
+            @semantic-release/exec
+            @semantic-release/git
         env:
         env:
           GITHUB_TOKEN: ${{ secrets.CONTAINER_TOKEN }}
           GITHUB_TOKEN: ${{ secrets.CONTAINER_TOKEN }}
+          GH_TOKEN: ${{ secrets.CONTAINER_TOKEN }}
+
+      - name: get date
+        run: |
+          echo "DATE=$(date +'%Y-%m-%d')" >> "$GITHUB_ENV"
 
 
       - name: Archive binaries
       - name: Archive binaries
         uses: actions/upload-artifact@v4.3.1
         uses: actions/upload-artifact@v4.3.1
         with:
         with:
-          name: "OliveTin-${{ github.ref_name }}"
+          name: "OliveTin-snapshot-${{ env.DATE }}-${{ github.sha }}"
           path: dist/OliveTin*.*
           path: dist/OliveTin*.*
 
 
       - name: Archive integration tests
       - name: Archive integration tests
         uses: actions/upload-artifact@v4.3.1
         uses: actions/upload-artifact@v4.3.1
+        if: always()
         with:
         with:
-          name: integration-tests
+          name: "OliveTin-integration-tests-${{ env.DATE }}-${{ github.sha }}"
           path: |
           path: |
             integration-tests
             integration-tests
             !integration-tests/node_modules
             !integration-tests/node_modules

+ 0 - 78
.github/workflows/build-snapshot.yml

@@ -1,78 +0,0 @@
----
-name: "Build Snapshot"
-
-on:
-  push:
-  pull_request:
-  workflow_dispatch:
-
-jobs:
-  build-snapshot:
-    runs-on: ubuntu-latest
-    if: github.ref_type != 'tag'
-    steps:
-      - name: Checkout
-        uses: actions/checkout@v4
-        with:
-          fetch-depth: 0
-
-      - name: Set up QEMU
-        id: qemu
-        uses: docker/setup-qemu-action@v3
-        with:
-          image: tonistiigi/binfmt:latest
-          platforms: arm64,arm
-
-      - name: Setup node
-        uses: actions/setup-node@v4
-        with:
-          cache: 'npm'
-          cache-dependency-path: frontend/package-lock.json
-
-      - name: Setup Go
-        uses: actions/setup-go@v5
-        with:
-          go-version-file: 'service/go.mod'
-          cache: true
-          cache-dependency-path: 'service/go.mod'
-
-      - name: Print go version
-        run: go version
-
-      - name: make service
-        run: make -w service
-
-      - name: make webui
-        run: make -w webui-dist
-
-      - name: unit tests
-        run: make -w service-unittests
-
-      - name: integration tests
-        run: cd integration-tests && make -w
-
-      - name: goreleaser
-        uses: goreleaser/goreleaser-action@v6
-        with:
-          distribution: goreleaser
-          version: latest
-          args: release --snapshot --clean --parallelism 1 --skip=docker
-
-      - name: get date
-        run: |
-          echo "DATE=$(date +'%Y-%m-%d')" >> "$GITHUB_ENV"
-
-      - name: Archive binaries
-        uses: actions/upload-artifact@v4.3.1
-        with:
-          name: "OliveTin-snapshot-${{ env.DATE }}-${{ github.sha }}"
-          path: dist/OliveTin*.*
-
-      - name: Archive integration tests
-        uses: actions/upload-artifact@v4.3.1
-        if: always()
-        with:
-          name: "OliveTin-integration-tests-${{ env.DATE }}-${{ github.sha }}"
-          path: |
-            integration-tests
-            !integration-tests/node_modules

+ 1 - 1
.releaserc.yaml

@@ -12,6 +12,6 @@ plugins:
   - '@semantic-release/git'
   - '@semantic-release/git'
   - - "@semantic-release/exec"
   - - "@semantic-release/exec"
     - publishCmd: |
     - publishCmd: |
-        goreleaser release --clean
+        goreleaser release --clean --timeout 60m
 
 
 tagFormat: '${version}'
 tagFormat: '${version}'