From 29ddd3f23bfd42514bc843ce76f32623cc122f53 Mon Sep 17 00:00:00 2001 From: cloudix_mcp_server Date: Fri, 12 Jun 2026 14:18:43 -0400 Subject: [PATCH 01/14] feat(ci): add PR workflow with Hadolint + build --- .gitea/workflows/pr.yaml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 .gitea/workflows/pr.yaml diff --git a/.gitea/workflows/pr.yaml b/.gitea/workflows/pr.yaml new file mode 100644 index 0000000..4841dbc --- /dev/null +++ b/.gitea/workflows/pr.yaml @@ -0,0 +1,26 @@ +name: PR Checks + +on: + pull_request: + branches: [main] + +jobs: + hadolint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 + - uses: hadolint/hadolint-action@2332a7b74a6de0d2da2e2221d575162eba76ba5e5 # v3.3.0 + with: + dockerfile: Dockerfile + + build: + needs: hadolint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 + - uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4 + - uses: docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7.2.0 + with: + context: . + push: false + pull: true From 993c749a89cf84a318193ced27b1aac675383948 Mon Sep 17 00:00:00 2001 From: cloudix_mcp_server Date: Fri, 12 Jun 2026 14:18:45 -0400 Subject: [PATCH 02/14] feat(ci): add main release workflow with Hadolint + push latest + auto-tag --- .gitea/workflows/main.yaml | 48 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 .gitea/workflows/main.yaml diff --git a/.gitea/workflows/main.yaml b/.gitea/workflows/main.yaml new file mode 100644 index 0000000..5a0c491 --- /dev/null +++ b/.gitea/workflows/main.yaml @@ -0,0 +1,48 @@ +name: Main Release + +on: + push: + branches: [main] + +jobs: + hadolint: + runs-on: ubuntu-latest + continue-on-error: true + steps: + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 + - uses: hadolint/hadolint-action@2332a7b74a6de0d2da2e2221d575162eba76ba5e5 # v3.3.0 + with: + dockerfile: Dockerfile + + build-push: + needs: hadolint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 + with: + fetch-depth: 0 + - uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4 + - uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - id: meta + uses: docker/metadata-action@80c7e94dd9b9319bd5eb7a0e0fe9291e23a2a2e9 # v6 + with: + images: jcabillot/opencode + tags: | + type=raw,value=latest + - uses: docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7.2.0 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + pull: true + - uses: anothrNick/github-tag-action@4ed44965e0db8dab2b466a16da04aec3cc312fd8 # v1.75.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + DEFAULT_BUMP: patch + RELEASE_BRANCHES: main + WITH_V: true + GIT_API_TAGGING: false From b6a9577eee4338d42a965cb981974f5020884c13 Mon Sep 17 00:00:00 2001 From: cloudix_mcp_server Date: Fri, 12 Jun 2026 14:18:47 -0400 Subject: [PATCH 03/14] feat(ci): add tag release workflow with Hadolint + push :tag --- .gitea/workflows/tag.yaml | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 .gitea/workflows/tag.yaml diff --git a/.gitea/workflows/tag.yaml b/.gitea/workflows/tag.yaml new file mode 100644 index 0000000..49d7d58 --- /dev/null +++ b/.gitea/workflows/tag.yaml @@ -0,0 +1,39 @@ +name: Tag Release + +on: + push: + tags: ['*'] + +jobs: + hadolint: + runs-on: ubuntu-latest + continue-on-error: true + steps: + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 + - uses: hadolint/hadolint-action@2332a7b74a6de0d2da2e2221d575162eba76ba5e5 # v3.3.0 + with: + dockerfile: Dockerfile + + build-push: + needs: hadolint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 + - uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4 + - uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - id: meta + uses: docker/metadata-action@80c7e94dd9b9319bd5eb7a0e0fe9291e23a2a2e9 # v6 + with: + images: jcabillot/opencode + tags: | + type=ref,event=tag + - uses: docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7.2.0 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + pull: true From a261bdc030ff3137c876e7d10615a8a380ec8986 Mon Sep 17 00:00:00 2001 From: cloudix_mcp_server Date: Fri, 12 Jun 2026 14:18:50 -0400 Subject: [PATCH 04/14] feat(ci): add nightly rebuild of latest + most recent tag --- .gitea/workflows/cron.yaml | 46 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 .gitea/workflows/cron.yaml diff --git a/.gitea/workflows/cron.yaml b/.gitea/workflows/cron.yaml new file mode 100644 index 0000000..3db6cd0 --- /dev/null +++ b/.gitea/workflows/cron.yaml @@ -0,0 +1,46 @@ +name: Nightly Rebuild + +on: + schedule: + - cron: '0 0 * * *' + +jobs: + hadolint: + runs-on: ubuntu-latest + continue-on-error: true + steps: + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 + - uses: hadolint/hadolint-action@2332a7b74a6de0d2da2e2221d575162eba76ba5e5 # v3.3.0 + with: + dockerfile: Dockerfile + + build-push: + needs: hadolint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 + with: + fetch-depth: 0 + - uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4 + - uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - id: get-latest-tag + run: | + TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "") + echo "tag=$TAG" >> $GITHUB_OUTPUT + - id: meta + uses: docker/metadata-action@80c7e94dd9b9319bd5eb7a0e0fe9291e23a2a2e9 # v6 + with: + images: jcabillot/opencode + tags: | + type=raw,value=latest + type=raw,value=${{ steps.get-latest-tag.outputs.tag }},enable=${{ steps.get-latest-tag.outputs.tag != '' }} + - uses: docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7.2.0 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + pull: true From e21758978a9d52d8795a762f6eef4e4e39885f41 Mon Sep 17 00:00:00 2001 From: cloudix_mcp_server Date: Fri, 12 Jun 2026 14:18:58 -0400 Subject: [PATCH 05/14] chore(ci): remove monolithic docker-build.yaml, replaced by pr/main/tag/cron --- .gitea/workflows/docker-build.yaml | 58 ------------------------------ 1 file changed, 58 deletions(-) delete mode 100644 .gitea/workflows/docker-build.yaml diff --git a/.gitea/workflows/docker-build.yaml b/.gitea/workflows/docker-build.yaml deleted file mode 100644 index 86732e2..0000000 --- a/.gitea/workflows/docker-build.yaml +++ /dev/null @@ -1,58 +0,0 @@ -name: Docker Build and Push - -on: - pull_request: - branches: [main] - push: - branches: [main] - schedule: - - cron: '0 0 * * *' - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 - with: - fetch-depth: 0 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4 - - - name: Login to Docker Hub - if: github.event_name != 'pull_request' - uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Docker metadata - id: meta - uses: docker/metadata-action@80c7e94dd9b9319bd5eb7a0e0fe9291e23a2a2e9 # v6 - with: - images: jcabillot/opencode - tags: | - #type=ref,event=branch - #type=ref,event=pr - #type=sha - type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }} - - - name: Build and push - uses: docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7.2.0 - with: - context: . - push: ${{ github.event_name != 'pull_request' }} - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - pull: true - - - name: Bump version and push tag - if: github.event_name == 'push' && github.ref == 'refs/heads/main' - uses: anothrNick/github-tag-action@4ed44965e0db8dab2b466a16da04aec3cc312fd8 # v1.75.0 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - DEFAULT_BUMP: patch - RELEASE_BRANCHES: main - WITH_V: true - GIT_API_TAGGING: false \ No newline at end of file From 1c50016d80ce0d7574b91a9bb214daf6254142f1 Mon Sep 17 00:00:00 2001 From: cloudix_mcp_server Date: Fri, 12 Jun 2026 14:20:35 -0400 Subject: [PATCH 06/14] =?UTF-8?q?fix(ci):=20correct=20hadolint=20SHA=20(d2?= =?UTF-8?q?da2=20=E2=86=92=20dda2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/pr.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/pr.yaml b/.gitea/workflows/pr.yaml index 4841dbc..7e8a3af 100644 --- a/.gitea/workflows/pr.yaml +++ b/.gitea/workflows/pr.yaml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 - - uses: hadolint/hadolint-action@2332a7b74a6de0d2da2e2221d575162eba76ba5e5 # v3.3.0 + - uses: hadolint/hadolint-action@2332a7b74a6de0dda2e2221d575162eba76ba5e5 # v3.3.0 with: dockerfile: Dockerfile From caa18faff0171581b55208641f86779c71522483 Mon Sep 17 00:00:00 2001 From: cloudix_mcp_server Date: Fri, 12 Jun 2026 14:20:38 -0400 Subject: [PATCH 07/14] =?UTF-8?q?fix(ci):=20correct=20hadolint=20SHA=20(d2?= =?UTF-8?q?da2=20=E2=86=92=20dda2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/main.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/main.yaml b/.gitea/workflows/main.yaml index 5a0c491..b47de82 100644 --- a/.gitea/workflows/main.yaml +++ b/.gitea/workflows/main.yaml @@ -10,7 +10,7 @@ jobs: continue-on-error: true steps: - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 - - uses: hadolint/hadolint-action@2332a7b74a6de0d2da2e2221d575162eba76ba5e5 # v3.3.0 + - uses: hadolint/hadolint-action@2332a7b74a6de0dda2e2221d575162eba76ba5e5 # v3.3.0 with: dockerfile: Dockerfile From 293cb50d4a2c4e82ce82596e720b29901312808b Mon Sep 17 00:00:00 2001 From: cloudix_mcp_server Date: Fri, 12 Jun 2026 14:20:48 -0400 Subject: [PATCH 08/14] =?UTF-8?q?fix(ci):=20correct=20hadolint=20SHA=20(d2?= =?UTF-8?q?da2=20=E2=86=92=20dda2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/tag.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/tag.yaml b/.gitea/workflows/tag.yaml index 49d7d58..f9368a9 100644 --- a/.gitea/workflows/tag.yaml +++ b/.gitea/workflows/tag.yaml @@ -10,7 +10,7 @@ jobs: continue-on-error: true steps: - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 - - uses: hadolint/hadolint-action@2332a7b74a6de0d2da2e2221d575162eba76ba5e5 # v3.3.0 + - uses: hadolint/hadolint-action@2332a7b74a6de0dda2e2221d575162eba76ba5e5 # v3.3.0 with: dockerfile: Dockerfile From 8682d4587ad208a172b27284e311526b772ae925 Mon Sep 17 00:00:00 2001 From: cloudix_mcp_server Date: Fri, 12 Jun 2026 14:20:52 -0400 Subject: [PATCH 09/14] =?UTF-8?q?fix(ci):=20correct=20hadolint=20SHA=20(d2?= =?UTF-8?q?da2=20=E2=86=92=20dda2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/cron.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/cron.yaml b/.gitea/workflows/cron.yaml index 3db6cd0..408850b 100644 --- a/.gitea/workflows/cron.yaml +++ b/.gitea/workflows/cron.yaml @@ -10,7 +10,7 @@ jobs: continue-on-error: true steps: - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 - - uses: hadolint/hadolint-action@2332a7b74a6de0d2da2e2221d575162eba76ba5e5 # v3.3.0 + - uses: hadolint/hadolint-action@2332a7b74a6de0dda2e2221d575162eba76ba5e5 # v3.3.0 with: dockerfile: Dockerfile From 05262683334698fa9cadae4df71dc079411b6a9d Mon Sep 17 00:00:00 2001 From: cloudix_mcp_server Date: Fri, 12 Jun 2026 14:28:29 -0400 Subject: [PATCH 10/14] refactor(ci): run Hadolint and build in parallel on PR --- .gitea/workflows/pr.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitea/workflows/pr.yaml b/.gitea/workflows/pr.yaml index 7e8a3af..19ecaa7 100644 --- a/.gitea/workflows/pr.yaml +++ b/.gitea/workflows/pr.yaml @@ -14,7 +14,6 @@ jobs: dockerfile: Dockerfile build: - needs: hadolint runs-on: ubuntu-latest steps: - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 From e1fab4f11fbf4f62bf2988eef76ed27a0d431d34 Mon Sep 17 00:00:00 2001 From: cloudix_mcp_server Date: Fri, 12 Jun 2026 14:31:10 -0400 Subject: [PATCH 11/14] refactor(ci): run Hadolint and build in parallel on main push --- .gitea/workflows/main.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitea/workflows/main.yaml b/.gitea/workflows/main.yaml index b47de82..c0ebb44 100644 --- a/.gitea/workflows/main.yaml +++ b/.gitea/workflows/main.yaml @@ -15,7 +15,6 @@ jobs: dockerfile: Dockerfile build-push: - needs: hadolint runs-on: ubuntu-latest steps: - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 From fa685fd63eba779bb6727062d3be81c0c76701a0 Mon Sep 17 00:00:00 2001 From: cloudix_mcp_server Date: Fri, 12 Jun 2026 14:31:17 -0400 Subject: [PATCH 12/14] refactor(ci): run Hadolint and build in parallel on tag push --- .gitea/workflows/tag.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitea/workflows/tag.yaml b/.gitea/workflows/tag.yaml index f9368a9..3d42ad7 100644 --- a/.gitea/workflows/tag.yaml +++ b/.gitea/workflows/tag.yaml @@ -15,7 +15,6 @@ jobs: dockerfile: Dockerfile build-push: - needs: hadolint runs-on: ubuntu-latest steps: - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 From 88ab5fa89320adf3e39695160f623101e4674b13 Mon Sep 17 00:00:00 2001 From: cloudix_mcp_server Date: Fri, 12 Jun 2026 14:31:25 -0400 Subject: [PATCH 13/14] refactor(ci): run Hadolint and build in parallel on cron --- .gitea/workflows/cron.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitea/workflows/cron.yaml b/.gitea/workflows/cron.yaml index 408850b..f406b5b 100644 --- a/.gitea/workflows/cron.yaml +++ b/.gitea/workflows/cron.yaml @@ -15,7 +15,6 @@ jobs: dockerfile: Dockerfile build-push: - needs: hadolint runs-on: ubuntu-latest steps: - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 From 850d6ed58cfd03412609f26f6a5ffd2d088e8091 Mon Sep 17 00:00:00 2001 From: cloudix_mcp_server Date: Fri, 12 Jun 2026 14:32:52 -0400 Subject: [PATCH 14/14] refactor(ci): decouple semver tagging from build on main push --- .gitea/workflows/main.yaml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/main.yaml b/.gitea/workflows/main.yaml index c0ebb44..d9f1b09 100644 --- a/.gitea/workflows/main.yaml +++ b/.gitea/workflows/main.yaml @@ -18,8 +18,6 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 - with: - fetch-depth: 0 - uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4 - uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4 with: @@ -38,6 +36,13 @@ jobs: tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} pull: true + + tag: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 + with: + fetch-depth: 0 - uses: anothrNick/github-tag-action@4ed44965e0db8dab2b466a16da04aec3cc312fd8 # v1.75.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}