diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..9d1981d05 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,57 @@ +# Version control +.git +.gitignore +.gitattributes + +# CI / GitHub / Docker +.github +.whitesource +.dockerignore + +# Editor / IDE +.idea +.vscode +.settings +.project +.pydevproject +.mr.developer.cfg + +# Claude +.claude + +# Python build artifacts +__pycache__ +*.py[cod] +*.so +*.egg +*.egg-info +build/ +dist/ +eggs/ +parts/ +var/ +sdist/ +develop-eggs/ +.installed.cfg +lib/ +lib64/ +.ropeproject + +# Test & coverage +tests/ +pytest.ini +.coveragerc +.coverage +.coverage* +.tox +.cache +.pytest_cache +nosetests.xml + +# Virtualenv +env/ +venv/ +.venv/ + +# Editor backup files +*~ diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index fec449ba2..bf668503c 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -10,12 +10,30 @@ on: jobs: build: runs-on: ubuntu-latest - + env: + DOCKERHUB_ORG: ${{ vars.DOCKERHUB_ORG || 'gns3' }} + steps: - name: Checkout code uses: actions/checkout@v4 + - name: Check for stable release + id: ver + run: | + TAG="${GITHUB_REF_NAME#v}" + echo "tag=$TAG" >> $GITHUB_OUTPUT + if echo "$TAG" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+$'; then + echo "stable=true" >> $GITHUB_OUTPUT + else + echo "stable=false" >> $GITHUB_OUTPUT + fi + + - name: Set up Docker Buildx + if: steps.ver.outputs.stable == 'true' + uses: docker/setup-buildx-action@v3 + - name: Login to GitHub Container Registry + if: steps.ver.outputs.stable == 'true' uses: docker/login-action@v3 with: registry: ghcr.io @@ -23,18 +41,21 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Login to Docker Hub + if: steps.ver.outputs.stable == 'true' uses: docker/login-action@v3 with: registry: docker.io username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Build and push to GitHub Container Registry - run: | - docker build -t ghcr.io/$(echo "${{ github.repository }}" | tr '[:upper:]' '[:lower:]'):latest . - docker push ghcr.io/$(echo "${{ github.repository }}" | tr '[:upper:]' '[:lower:]'):latest - - - name: Build and push to Docker Hub - run: | - docker build -t gns3/${{ github.event.repository.name }}:latest . - docker push gns3/${{ github.event.repository.name }}:latest + - name: Build and push + if: steps.ver.outputs.stable == 'true' + uses: docker/build-push-action@v6 + with: + context: . + push: true + tags: | + ${{ env.DOCKERHUB_ORG }}/${{ github.event.repository.name }}:${{ steps.ver.outputs.tag }} + ${{ env.DOCKERHUB_ORG }}/${{ github.event.repository.name }}:latest + ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}:${{ steps.ver.outputs.tag }} + ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}:latest