diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml new file mode 100644 index 0000000..54891f9 --- /dev/null +++ b/.gitea/workflows/build.yaml @@ -0,0 +1,78 @@ +name: "lint, build and push" +on: + schedule: + - cron: "5 3 * * SUN" + push: + branches: [ master ] + pull_request: + +# Variables: https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/store-information-in-variables#default-environment-variables + https://forgejo.org/docs/latest/user/actions/#env-1 + +jobs: + lint: + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Run Gitleaks + uses: docker://zricethezav/gitleaks:v8.18.4 + with: + args: detect --no-git --verbose --source ${{ github.workspace }} + - name: Checkout code + uses: actions/checkout@v4 + - name: Run hadolint + uses: docker://pipelinecomponents/hadolint:0.26.4 + with: + args: hadolint Dockerfile +# - name: Run ShellCheck +# uses: sudo-bot/action-shellcheck@latest +# with: +# cli-args: "shell.sh" + - name: Send notification on error + uses: dawidd6/action-send-mail@v3 + if: failure() + with: + connection_url: smtp://docker10.mgrote.net:1025 + secure: false + ignore_cert: true + to: michael.grote@posteo.de + from: Gitea Actions + subject: "CI Error in ${{ env.GITHUB_REPOSITORY }}" + body: "Job of ${{ env.github.repository }} failed!" + + build: + needs: [gitleaks, hadolint] # shellcheck + steps: + - uses: https://github.com/actions/checkout@v4 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 +# - name: Login to Docker Hub +# uses: docker/login-action@v3 +# with: +# username: ${{ secrets.DOCKERHUB_USERNAME }} +# password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Extract repository name + id: meta + run: | + echo REPO_NAME=$(echo ${GITHUB_REPOSITORY} | awk -F"/" '{print $2}') >> $GITHUB_OUTPUT + - name: Extract branch name + shell: bash + run: echo "REPO_BRANCH=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT + id: extract_branch + - name: Build and push Docker image + uses: https://github.com/docker/build-push-action@v5 + with: + context: . + file: ./Dockerfile + push: true + tags: "registry.mgrote.net/${{ steps.meta.outputs.REPO_NAME }}:latest,registry.mgrote.net/${{ steps.meta.outputs.REPO_NAME }}:${{ steps.extract_branch.outputs.REPO_BRANCH }}" + - name: Send notification on error + uses: dawidd6/action-send-mail@v3 + if: failure() + with: + connection_url: smtp://docker10.mgrote.net:1025 + secure: false + ignore_cert: true + to: michael.grote@posteo.de + from: Gitea Actions + subject: "CI Error in ${{ env.GITHUB_REPOSITORY }}" + body: Job of ${{ env.github.repository }} failed! diff --git a/.woodpecker/build.yml b/.woodpecker/build.yml deleted file mode 100644 index 181085b..0000000 --- a/.woodpecker/build.yml +++ /dev/null @@ -1,41 +0,0 @@ ---- -depends_on: - - lint - -clone: - git: - image: "woodpeckerci/plugin-git:2.5.2" - settings: - depth: 9999 # wird benötigt um die Commits zählen zu können - lfs: false - partial: false - -steps: - build_and_push: # damit dieser Step laufen kann muss das Repo in der Woodpecker-GUI "privilegiert" sein - image: "docker:27.2.0" - volumes: - - /var/run/docker.sock:/var/run/docker.sock - commands: - # https://unix.stackexchange.com/questions/748633/error-multiple-platforms-feature-is-currently-not-supported-for-docker-driver - - docker buildx create --use --platform=linux/amd64 --name multi-platform-builder - - docker buildx inspect --bootstrap - - | - docker buildx build \ - --no-cache \ - --platform=linux/amd64 \ - --push \ - --tag registry.mgrote.net/${CI_REPO_NAME}:${CI_COMMIT_BRANCH} \ - --tag registry.mgrote.net/${CI_REPO_NAME}:latest \ - --label org.opencontainers.image.url=$CI_REPO_URL \ - --label org.opencontainers.image.source=$CI_REPO_URL \ - --label org.opencontainers.image.revision=$CI_COMMIT_SHA \ - --label org.opencontainers.image.created=$DATE \ - --file Dockerfile . - when: - - event: [push, pull_request, cron, manual] - evaluate: 'CI_COMMIT_AUTHOR_EMAIL != "renovate@mgrote.net"' -... - -# händisch: -# docker build . -t registry.mgrote.net/allzweckcontainer:latest -# docker push registry.mgrote.net/allzweckcontainer:latest diff --git a/.woodpecker/lint.yml b/.woodpecker/lint.yml deleted file mode 100644 index 30d41dc..0000000 --- a/.woodpecker/lint.yml +++ /dev/null @@ -1,33 +0,0 @@ ---- -steps: - gitleaks: - image: zricethezav/gitleaks:v8.18.4 - commands: - - gitleaks detect --no-git --verbose --source $CI_WORKSPACE - when: - - event: [push, pull_request, cron] - evaluate: 'CI_COMMIT_AUTHOR_EMAIL != "renovate@mgrote.net"' - - hadolint: - image: pipelinecomponents/hadolint:0.26.4 - commands: - - hadolint Dockerfile - when: - - event: [push, pull_request, cron] - evaluate: 'CI_COMMIT_AUTHOR_EMAIL != "renovate@mgrote.net"' - - shellcheck: - image: "koalaman/shellcheck-alpine:v0.10.0" - commands: - - | - find . -type f -not -path './.git/*' -not -path './collections/*' -exec file {} \; | while IFS= read -r line; do - if echo "$line" | grep -q "shell script"; then - file_path=$(echo "$line" | awk -F':' '{print $1}') - shellcheck "$file_path" - fi - done - when: - - event: [push, pull_request, cron] - evaluate: 'CI_COMMIT_AUTHOR_EMAIL != "renovate@mgrote.net"' - #ss -...