diff --git a/.github/workflows/build-and-push.yml b/.github/workflows/build-and-push.yml
new file mode 100644
index 0000000..a724299
--- /dev/null
+++ b/.github/workflows/build-and-push.yml
@@ -0,0 +1,69 @@
+name: Check for new RouterOS versions, build and push containers
+
+on:
+ workflow_dispatch:
+ schedule:
+ - cron: '0 0 * * *' # Every day at midnight
+
+jobs:
+ check-and-build:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+
+ - name: Install dependencies
+ run: sudo apt-get install -y curl jq
+
+ - name: Get latest RouterOS version
+ id: get_routeros_version
+ run: |
+ VERSION=$(
+ curl https://mikrotik.com/download/archive -o - 2>/dev/null | \
+ grep -o '> $GITHUB_OUTPUT
+
+ - name: Get Docker Hub tags
+ id: docker_hub_tags
+ run: |
+ OWNER="evilfreelancer"
+ REPO="docker-routeros"
+ URL="https://registry.hub.docker.com/v2/repositories/${OWNER}/${REPO}/tags/"
+ TAGS=$(curl -s "$URL" | jq -r '.results[].name' | grep -v "latest")
+ echo "tags=$(echo $TAGS | tr '\n' ' ')" >> $GITHUB_OUTPUT
+
+ - name: Login to Docker Hub
+ uses: docker/login-action@v3
+ with:
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
+ password: ${{ secrets.DOCKERHUB_TOKEN }}
+
+ - name: Build and test if new version
+ if: ${{ !contains(steps.docker_hub_tags.outputs.tags, steps.get_routeros_version.outputs.version) }}
+ run: |
+ VERSION="${{ steps.get_routeros_version.outputs.version }}"
+ OWNER="evilfreelancer"
+ REPO="docker-routeros"
+
+ # Set up Docker Buildx
+ docker buildx create --use --name routeros_builder
+
+ # Build and push images
+ docker buildx build --push \
+ --platform linux/amd64 \
+ --tag $OWNER/$REPO:$VERSION \
+ --tag $OWNER/$REPO:latest \
+ --build-arg ROUTEROS_VERSION=$VERSION .
+
+ - name: Skip build
+ if: ${{ contains(steps.docker_hub_tags.outputs.tags, steps.get_routeros_version.outputs.version) }}
+ run: echo "Version ${{ steps.get_routeros_version.outputs.version }} already exists. Skipping build."
\ No newline at end of file
diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml
deleted file mode 100644
index b2ef7d0..0000000
--- a/.github/workflows/cd.yml
+++ /dev/null
@@ -1,34 +0,0 @@
-name: "Build docker image and push to DockerHub when a tag is pushed"
-
-on:
- workflow_dispatch:
- push:
- tags:
- - '*'
-
-jobs:
- build:
- name: "Build images"
- runs-on: "ubuntu-latest"
- steps:
- - name: Checkout repository
- uses: actions/checkout@v4
- - name: Docker metadata from Git
- id: meta
- uses: docker/metadata-action@v5
- with:
- images: evilfreelancer/docker-routeros
- - name: Login to DockerHub
- if: ${{ !env.ACT }}
- uses: docker/login-action@v3
- with:
- username: ${{ secrets.DOCKERHUB_USERNAME }}
- password: ${{ secrets.DOCKERHUB_TOKEN }}
- - name: Build with Docker
- uses: docker/build-push-action@v6
- with:
- context: .
- push: ${{ !env.ACT }}
- tags: ${{ steps.meta.outputs.tags }}
- labels: ${{ steps.meta.outputs.labels }}
-
\ No newline at end of file
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
deleted file mode 100644
index 8ad2c72..0000000
--- a/.github/workflows/ci.yml
+++ /dev/null
@@ -1,46 +0,0 @@
-name: "Continuous Integration Tests"
-
-on:
- push:
- pull_request:
- workflow_dispatch:
- workflow_call:
-
-jobs:
- test:
- name: "Build & Test images"
- runs-on: "ubuntu-latest"
- steps:
- - name: Checkout repository
- uses: actions/checkout@v4
-
- - name: Download docker-compose when using act
- run: |
- sudo curl -L "https://github.com/docker/compose/releases/download/v2.29.6/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- sudo chmod +x /usr/local/bin/docker-compose
-
- - name: Test with Docker
- run: |
- # start the container
- docker-compose -f docker-compose.dist.yml up --build -d routeros-local
- # wait for the container to start
- sleep 5
- DOCKERID=$(docker ps --format '{{.ID}}.{{.Names}}.{{.Image}}'|grep evilfreelancer/docker-routeros|cut -f 1 -d '.')
- echo "Watching $DOCKERID for Mikrotik login..."
- while true
- do
- if docker logs "$DOCKERID" 2>&1|grep 'MikroTik'
- then
- break
- fi
- echo "Not found yet, sleeping..."
- sleep 5
- done
- # display logs
- echo "Container logs:"
- docker logs "$DOCKERID"
- # download resource and check platform is Mikrotik
- curl --retry 12 --retry-all-errors -k -u admin: http://127.0.0.1:7777/rest/system/resource | jq .platform |grep -i mikrotik
-
- - name: Stop container
- run: docker-compose -f docker-compose.dist.yml down
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
deleted file mode 100644
index dbb13a9..0000000
--- a/.github/workflows/lint.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-name: Lint github-action
-
-on: [ 'pull_request' ]
-
-jobs:
- lint:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- - name: Lint
- uses: docker://rhysd/actionlint:1.6.26
- with:
- args: -color
diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml
deleted file mode 100644
index 07256ab..0000000
--- a/.github/workflows/pr.yml
+++ /dev/null
@@ -1,47 +0,0 @@
-name: "Check for update on Mikrotik website and generate a PR if necessary"
-
-on:
- workflow_dispatch:
- schedule:
- - cron: "0 4 * * *"
-
-jobs:
- routeros:
- name: "Build & Test images"
- runs-on: "ubuntu-latest"
- steps:
- - name: Checkout repository
- uses: actions/checkout@v4
- with:
- fetch-depth: '1'
-
- - name: Check new release
- id: check_release
- run: |
- LAST_MIKROTIK_RELEASE=$( curl https://mikrotik.com/download/archive -o - 2>/dev/null | grep -o ' "$GITHUB_OUTPUT"
- echo "new=true" >> "$GITHUB_OUTPUT"
- else
- echo "No new version found"
- echo "new=false" >> "$GITHUB_OUTPUT"
- fi
-
- - name: Edit Dockerfile
- if: ${{ steps.check_release.outputs.new == 'true' }}
- run: |
- sed -r "s/(ROUTEROS_VERSION=\")(.*)(\")/\1${{ steps.check_release.outputs.release }}\3/g" -i Dockerfile
- git diff
-
- - name: Create Pull Request
- if: ${{ steps.check_release.outputs.new == 'true' && !env.ACT }}
- uses: peter-evans/create-pull-request@v7
- with:
- commit-message: "Update RouterOS version to ${{ steps.check_release.outputs.release }}"
- committer: "GitHub Actions"
- body: 'Created by Github action'
- title: 'Update RouterOS version to ${{ steps.check_release.outputs.release }}'
- branch: update-routeros
diff --git a/.github/workflows/tag.yml b/.github/workflows/tag.yml
deleted file mode 100644
index 6cfad76..0000000
--- a/.github/workflows/tag.yml
+++ /dev/null
@@ -1,38 +0,0 @@
-name: "Tag master with new version of RouterOS when CI pass"
-
-on:
- push:
- branches:
- - "master"
-
-permissions:
- contents: write
- pull-requests: read
-
-jobs:
- call_test:
- uses: EvilFreelancer/docker-routeros/.github/workflows/ci.yml@master
-
- tag:
- name: "Add a tag to git"
- runs-on: "ubuntu-latest"
- needs: call_test
- if: always() && needs.call_test.result == 'success'
- steps:
- - name: Checkout repository
- uses: actions/checkout@v4
- with:
- fetch-depth: '0'
-
- - name: Add new tag on git
- id: tag
- run: |
- NEW_TAG=$(grep 'ROUTEROS_VERSION="' Dockerfile |cut -d '"' -f 2)
- git config user.name 'GitHub Actions'
- git config user.email 'github-actions@users.noreply.github.com'
- git tag "$NEW_TAG"
- echo "new_tag=$NEW_TAG" >> "$GITHUB_OUTPUT"
-
- - name: Push new tag to git
- if: ${{ !env.ACT }}
- run: git push origin ${{ steps.tag.outputs.new_tag }}