From cde31666a78a10bc5aeac74db71c9f36023f977f Mon Sep 17 00:00:00 2001 From: idanoo Date: Mon, 12 Sep 2022 20:30:55 +1200 Subject: [PATCH] Draft new post --- .woodpecker.yml => .woodpecker/.deploy.yml | 1 + content/posts/gitea_and_woodpecker_ci.md | 22 +++++++++++++++++++++ static/woodpecker.jpg | Bin 0 -> 17525 bytes 3 files changed, 23 insertions(+) rename .woodpecker.yml => .woodpecker/.deploy.yml (95%) create mode 100644 content/posts/gitea_and_woodpecker_ci.md create mode 100644 static/woodpecker.jpg diff --git a/.woodpecker.yml b/.woodpecker/.deploy.yml similarity index 95% rename from .woodpecker.yml rename to .woodpecker/.deploy.yml index f994b28..d562070 100644 --- a/.woodpecker.yml +++ b/.woodpecker/.deploy.yml @@ -1,6 +1,7 @@ pipeline: build: image: alpine + branches: main commands: - apk update - apk add openssh diff --git a/content/posts/gitea_and_woodpecker_ci.md b/content/posts/gitea_and_woodpecker_ci.md new file mode 100644 index 0000000..cc1f6b9 --- /dev/null +++ b/content/posts/gitea_and_woodpecker_ci.md @@ -0,0 +1,22 @@ +--- +title: "Gitea and Woodpecker CI" +tags: ["gitea", "woodpecker", "cicd", "self hosting"] +date: "2022-09-12" +featuredimagepreview: "/woodpecker.jpg" +--- + +Another year, another post! + +This time writing about my experience setting up and configuring [Gitea](https://gitea.io) and [Woodpecker](https://woodpecker-ci.org) as a self-hosted Git setup with full CI/CD pipelines. + +I've decided to make the repo for this blog public with a [simple CI script](https://tinker.nz/idanoo/m2.nz/src/branch/main/.woodpecker.yml) configured to do hands free deployments. I'm aware that using `git pull` over SSH is a poor-mans CI script, but it works as a proof of concept and I do plan to tidy it up in the futureā„¢. + +{{< image src="/woodpecker.jpg" caption="Woodpecker CI deploying this blog" >}} + +### Gitea + +I've run a Gitea server before so found it pretty seamless to get working. It was a matter of downloading a binary and setting some configuration flags (hostname, database config if needed, etc). + +### Woodpecker CI + +Coming from Gitlab CI it seems pretty basic, but in reality it can do almost everything you need. I'm still figuring out it's capbilities but it does the basic stuff \ No newline at end of file diff --git a/static/woodpecker.jpg b/static/woodpecker.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dc9bffa85644acb770c6688654c5ed958cabb558 GIT binary patch literal 17525 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