diff --git a/.drone.yml b/.drone.yml
deleted file mode 100644
index e45210f..0000000
--- a/.drone.yml
+++ /dev/null
@@ -1,88 +0,0 @@
----
-kind: pipeline
-type: docker
-name: lint
-
-steps:
-  - name: Lint Dockerfile
-    image: hadolint/hadolint:latest-debian
-    pull: if-not-exists
-    commands:
-      - hadolint --version
-      - hadolint Dockerfile*
-
-trigger:
-  event:
-    - pull_request
-    - push
-  ref:
-    exclude:
-      - refs/heads/renovate/*
-
----
-kind: pipeline
-type: docker
-name: test
-
-steps:
-  - name: docker
-    image: plugins/docker
-    pull: if-not-exists
-    settings:
-      dockerfile: Dockerfile
-      username:
-        from_secret: dockerhub_username
-      password:
-        from_secret: dockerhub_password_ro
-      repo: mwalbeck/determine-docker-tags
-      dry_run: true
-
-trigger:
-  event:
-    - pull_request
-
-depends_on:
-  - lint
-
----
-kind: pipeline
-type: docker
-name: build and publish
-
-steps:
-  - name: determine tags
-    image: mwalbeck/determine-docker-tags
-    pull: if-not-exists
-    environment:
-      VERSION_TYPE: "docker_env"
-      APP_NAME: "DETERMINE_DOCKER_TAGS"
-      DOCKERFILE_PATH: "Dockerfile"
-      APP_ENV: ""
-      CUSTOM_TAGS: "latest"
-      INCLUDE_MAJOR: "no"
-
-  - name: build and publish
-    image: plugins/docker
-    pull: if-not-exists
-    settings:
-      dockerfile: Dockerfile
-      username:
-        from_secret: dockerhub_username
-      password:
-        from_secret: dockerhub_password
-      repo: mwalbeck/determine-docker-tags
-
-trigger:
-  branch:
-    - master
-  event:
-    - push
-
-depends_on:
-  - lint
-
----
-kind: signature
-hmac: 001684f17e560bc7321fcf05be1ea955e1a9038abd727acb5a63704487865ea5
-
-...
diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml
new file mode 100644
index 0000000..c958252
--- /dev/null
+++ b/.forgejo/workflows/build.yml
@@ -0,0 +1,46 @@
+name: Build and publish
+
+on:
+  push:
+    branches:
+      - main
+
+jobs:
+  lint:
+    runs-on: docker
+    steps:
+      - uses: actions/checkout@v4
+      - uses: https://github.com/hadolint/hadolint-action@v3.1.0
+        with:
+          dockerfile: Dockerfile
+
+  build:
+    runs-on: dind
+    steps:
+      - uses: actions/checkout@v4
+      - name: Get docker tags
+        id: tags
+        shell: sh
+        env:
+          VERSION_TYPE: "docker_env"
+          APP_NAME: "DETERMINE_DOCKER_TAGS"
+          DOCKERFILE_PATH: "Dockerfile"
+          CUSTOM_TAGS: "latest"
+          INCLUDE_SUFFIX: "no"
+          INCLUDE_MAJOR: "no"
+          IMAGE_NAME: "mwalbeck/determine-docker-tags"
+        run: |
+          determine-docker-tags
+          dockerd &
+      - name: Login to Docker Hub
+        uses: https://github.com/docker/login-action@v3
+        with:
+          username: ${{ secrets.DOCKERHUB_USERNAME }}
+          password: ${{ secrets.DOCKERHUB_TOKEN }}
+      - name: Set up Docker Buildx
+        uses: https://github.com/docker/setup-buildx-action@v3
+      - name: Build and push
+        uses: https://github.com/docker/build-push-action@v6
+        with:
+          push: true
+          tags: ${{ steps.tags.outputs.tags }}
\ No newline at end of file
diff --git a/.forgejo/workflows/test.yml b/.forgejo/workflows/test.yml
new file mode 100644
index 0000000..60d5ee2
--- /dev/null
+++ b/.forgejo/workflows/test.yml
@@ -0,0 +1,38 @@
+name: Test
+
+on: pull_request
+
+jobs:
+  lint:
+    if: github.ref != 'refs/heads/renovate/*'
+    runs-on: docker
+    steps:
+      - uses: actions/checkout@v4
+      - uses: https://github.com/hadolint/hadolint-action@v3.1.0
+        with:
+          dockerfile: Dockerfile
+
+  test:
+    runs-on: dind
+    steps:
+      - uses: actions/checkout@v4
+      - name: Get docker tags
+        id: tags
+        shell: sh
+        env:
+          VERSION_TYPE: "docker_env"
+          APP_NAME: "DETERMINE_DOCKER_TAGS"
+          DOCKERFILE_PATH: "Dockerfile"
+          CUSTOM_TAGS: "latest"
+          INCLUDE_SUFFIX: "no"
+          INCLUDE_MAJOR: "no"
+          IMAGE_NAME: "mwalbeck/determine-docker-tags"
+        run: |
+          determine-docker-tags
+          dockerd &
+      - name: Set up Docker Buildx
+        uses: https://github.com/docker/setup-buildx-action@v3
+      - name: Test build
+        uses: https://github.com/docker/build-push-action@v6
+        with:
+          tags: ${{ steps.tags.outputs.tags }}
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
deleted file mode 100644
index 53f1bc6..0000000
--- a/.vscode/tasks.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
-	"version": "2.0.0",
-	"tasks": [
-		{
-			"type": "docker-build",
-			"label": "docker-build",
-			"dockerBuild": {
-				"tag": "dockerdeterminedockertags:latest",
-				"dockerfile": "${workspaceFolder}/Dockerfile",
-				"context": "${workspaceFolder}",
-				"pull": true
-			}
-		},
-		{
-			"type": "docker-run",
-			"label": "docker-run",
-			"dockerRun": {
-				"image": "dockerdeterminedockertags:latest",
-				"remove": true
-			},
-			"dependsOn": [
-				"docker-build"
-			],
-		},
-		{
-			"type": "docker-run",
-			"label": "docker-run: bash",
-			"dockerRun": {
-				"image": "dockerdeterminedockertags:latest",
-				"remove": true,
-				"command": "bash"
-			},
-			"dependsOn": [
-				"docker-build"
-			],
-		}
-	]
-}