3 Commits
Author SHA1 Message Date
Test b958da984c fix: standardize poimen-workflows CI to unified pattern
CI / Test (pull_request) Successful in 2m7s
CI / Build & Push Image (pull_request) Skipped
Unified pattern enforced:
- test job: runs on all branches + PRs
- build-push job: only on main push, depends on test
- Proper env vars (GOPRIVATE, REGISTRY, IMAGE)
- Install Node.js before checkout
- Install docker only in build-push
- Docker login + build + push + prune
2026-09-07 00:12:35 -07:00
rockandTest 45b7f8ca61 fix: use env vars for docker registry credentials (#4)
CI / Test (push) Successful in 2m7s
CI / Build & Push Image (push) Failing after 1m5s
Fix registry login by passing FORGEJO_REGISTRY_USER and FORGEJO_REGISTRY_TOKEN via environment variables instead of direct secret interpolation.

Uses the proven pattern from riotpiao.com reference commit.

This prevents credentials from being exposed in logs or shell history while keeping the standard docker login approach.

After merge + org-level secrets configured:
- All repos inherit FORGEJO_REGISTRY_USER and FORGEJO_REGISTRY_TOKEN
- CI validates credentials exist before docker login
- Image pushed to registry on main push

---------

Co-authored-by: Test <[email protected]>
Reviewed-on: #4
2026-09-07 06:48:25 +00:00
rockandTest 0261ad141b fix: separate test and build-push jobs (#3)
CI / Test (push) Successful in 2m24s
CI / Build & Push Image (push) Failing after 1m7s
## Problem

Monolithic test-build-push job runs all steps sequentially, with conditionals for push only on main. This makes it hard to see what failed and doesn't clearly separate concerns.

## Fix

Split into two jobs:
- **test**: Runs on all branches + PRs (go mod, vet, test, build binary)
- **build-push**: Runs only on main push after test passes

Move env vars to workflow level (cleaner, reused by both jobs).

## Result
- PRs: test job runs  (no docker install, no registry push) 
- Main push: test → build-push → registry push 

---------

Co-authored-by: Test <[email protected]>
Reviewed-on: #3
2026-09-07 06:23:59 +00:00
+39 -17
View File
@@ -4,14 +4,17 @@ on:
push: push:
branches: [main] branches: [main]
pull_request: pull_request:
branches: [main]
jobs:
test-build-push:
runs-on: golang
env: env:
GOPRIVATE: forgejo.riotpiao.com GOPRIVATE: forgejo.riotpiao.com
REGISTRY: forgejo.riotpiao.com REGISTRY: forgejo.riotpiao.com
IMAGE: forgejo.riotpiao.com/rock/poimen-workflows IMAGE: forgejo.riotpiao.com/rock/poimen-workflows
jobs:
test:
name: Test
runs-on: golang
steps: steps:
- name: Install Node.js for actions runtime - name: Install Node.js for actions runtime
run: apt-get update && apt-get install -y nodejs run: apt-get update && apt-get install -y nodejs
@@ -22,36 +25,55 @@ jobs:
- name: Download dependencies - name: Download dependencies
run: go mod download run: go mod download
- name: Vet - name: Go vet
run: go vet ./... run: go vet ./...
- name: Test - name: Go test
run: go test ./... run: go test ./...
- name: Build binary - name: Build binary
run: CGO_ENABLED=0 GOOS=linux go build -o /tmp/poimen-worker ./cmd/worker run: CGO_ENABLED=0 GOOS=linux go build -o /tmp/poimen-worker ./cmd/worker
build-push:
name: Build & Push Image
needs: test
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
runs-on: golang
steps:
- name: Install Node.js and Docker
run: |
apt-get update
apt-get install -y nodejs docker.io
- name: Checkout code
uses: actions/checkout@v4
- name: Get short SHA - name: Get short SHA
id: sha id: sha
run: echo "short_sha=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT run: |
SHORT_SHA=$(git rev-parse --short HEAD)
- name: Install Docker CLI echo "short_sha=${SHORT_SHA}" >> $GITHUB_OUTPUT
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
run: apt-get update && apt-get install -y docker.io
- name: Registry login - name: Registry login
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
run: | run: |
echo "${{ secrets.FORGEJO_REGISTRY_TOKEN }}" | docker login "${REGISTRY}" \ echo "${REGISTRY_TOKEN}" | docker login "${REGISTRY}" \
--username "${{ secrets.FORGEJO_REGISTRY_USER }}" --password-stdin --username "${REGISTRY_USER}" --password-stdin
env:
REGISTRY_USER: ${{ secrets.FORGEJO_REGISTRY_USER }}
REGISTRY_TOKEN: ${{ secrets.FORGEJO_REGISTRY_TOKEN }}
- name: Build and push image - name: Build Docker image
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
run: | run: |
docker build \ docker build --no-cache \
-t "${IMAGE}:${{ steps.sha.outputs.short_sha }}" \ -t "${IMAGE}:${{ steps.sha.outputs.short_sha }}" \
-t "${IMAGE}:latest" \ -t "${IMAGE}:latest" \
. .
- name: Push Docker image
run: |
docker push "${IMAGE}:${{ steps.sha.outputs.short_sha }}" docker push "${IMAGE}:${{ steps.sha.outputs.short_sha }}"
docker push "${IMAGE}:latest" docker push "${IMAGE}:latest"
echo "✓ Pushed ${IMAGE}:${{ steps.sha.outputs.short_sha }}" echo "✓ Image pushed: ${IMAGE}:${{ steps.sha.outputs.short_sha }}"
- name: Prune unused images
run: docker image prune -a --force 2>&1 | tail -3 || true