diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 75e3cf97..40697aeb 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -3,133 +3,132 @@ name: Wazuh Docker pipeline on: [pull_request] jobs: - build-docker-images: + + prepare-variables: + runs-on: ubuntu-latest + outputs: + WAZUH_VERSION: ${{ steps.dotenv.outputs.WAZUH_VERSION }} + WAZUH_IMAGE_VERSION: ${{ steps.dotenv.outputs.WAZUH_IMAGE_VERSION }} + WAZUH_TAG_REVISION: ${{ steps.dotenv.outputs.WAZUH_TAG_REVISION }} + WAZUH_UI_REVISION: ${{ steps.dotenv.outputs.WAZUH_UI_REVISION }} + WAZUH_REGISTRY: ${{ steps.dotenv.outputs.WAZUH_REGISTRY }} + IMAGE_TAG: ${{ steps.dotenv.outputs.IMAGE_TAG }} + WAZUH_MINOR_VERSION: ${{ steps.dotenv.outputs.WAZUH_MINOR_VERSION }} + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Export .env variables + id: dotenv + shell: bash + run: | + if [ ! -f .env ]; then echo "::error::.env missing"; exit 1; fi + grep -v '^#' .env | grep -v '^\s*$' >> "$GITHUB_OUTPUT" + FULL_VERSION=$(grep "^WAZUH_VERSION=" .env | cut -d'=' -f2) + MINOR_VERSION=$(echo "$FULL_VERSION" | cut -d'.' -f1,2) + echo "WAZUH_MINOR_VERSION=$MINOR_VERSION" >> "$GITHUB_OUTPUT" + + + build-images: + needs: prepare-variables + uses: ./.github/workflows/build-images.yml + with: + image_tag: ${{ needs.prepare-variables.outputs.WAZUH_IMAGE_VERSION }} + docker_reference: ${{ github.ref_name }} + revision: ${{ needs.prepare-variables.outputs.WAZUH_TAG_REVISION }} + reference: "latest" + id: ${{ github.run_id }} + dev: true + + Execute-Goss-tests: + needs: [prepare-variables, build-images] runs-on: ubuntu-22.04 steps: - - name: Check out code - uses: actions/checkout@v4 - - - name: Build Wazuh images - run: build-docker-images/build-images.sh - - - name: Create enviroment variables - run: cat .env > $GITHUB_ENV - - - name: Create backup Docker images - run: | - mkdir -p /home/runner/work/wazuh-docker/wazuh-docker/docker-images/ - docker save wazuh/wazuh-manager:${{env.WAZUH_IMAGE_VERSION}} -o /home/runner/work/wazuh-docker/wazuh-docker/docker-images/wazuh-manager.tar - docker save wazuh/wazuh-indexer:${{env.WAZUH_IMAGE_VERSION}} -o /home/runner/work/wazuh-docker/wazuh-docker/docker-images/wazuh-indexer.tar - docker save wazuh/wazuh-dashboard:${{env.WAZUH_IMAGE_VERSION}} -o /home/runner/work/wazuh-docker/wazuh-docker/docker-images/wazuh-dashboard.tar - docker save wazuh/wazuh-agent:${{env.WAZUH_IMAGE_VERSION}} -o /home/runner/work/wazuh-docker/wazuh-docker/docker-images/wazuh-agent.tar - - - name: Temporarily save Wazuh manager Docker image - uses: actions/upload-artifact@v4 - with: - name: docker-artifact-manager - path: /home/runner/work/wazuh-docker/wazuh-docker/docker-images/wazuh-manager.tar - retention-days: 1 - - - name: Temporarily save Wazuh indexer Docker image - uses: actions/upload-artifact@v4 - with: - name: docker-artifact-indexer - path: /home/runner/work/wazuh-docker/wazuh-docker/docker-images/wazuh-indexer.tar - retention-days: 1 - - - name: Temporarily save Wazuh dashboard Docker image - uses: actions/upload-artifact@v4 - with: - name: docker-artifact-dashboard - path: /home/runner/work/wazuh-docker/wazuh-docker/docker-images/wazuh-dashboard.tar - retention-days: 1 - - - name: Temporarily save Wazuh agent Docker image - uses: actions/upload-artifact@v4 - with: - name: docker-artifact-agent - path: /home/runner/work/wazuh-docker/wazuh-docker/docker-images/wazuh-agent.tar - retention-days: 1 - - name: Install Goss uses: e1himself/goss-installation-action@v1.0.3 with: version: v0.3.16 - name: Execute Goss tests (wazuh-manager) - run: dgoss run wazuh/wazuh-manager:${{env.WAZUH_IMAGE_VERSION}} + run: dgoss run ${{needs.prepare-variables.outputs.WAZUH_REGISTRY}}/wazuh/wazuh-manager:${{needs.prepare-variables.outputs.WAZUH_IMAGE_VERSION}} env: GOSS_SLEEP: 30 GOSS_FILE: .github/.goss.yaml check-single-node: runs-on: ubuntu-22.04 - needs: build-docker-images + needs: [prepare-variables, build-images] steps: - name: Check out code uses: actions/checkout@v4 - - name: Create enviroment variables - run: cat .env > $GITHUB_ENV - - - name: Retrieve saved Wazuh indexer Docker image - uses: actions/download-artifact@v4 - with: - name: docker-artifact-indexer - - - name: Retrieve saved Wazuh manager Docker image - uses: actions/download-artifact@v4 - with: - name: docker-artifact-manager - - - name: Retrieve saved Wazuh dashboard Docker image - uses: actions/download-artifact@v4 - with: - name: docker-artifact-dashboard - - - name: Retrieve saved Wazuh agent Docker image - uses: actions/download-artifact@v4 - with: - name: docker-artifact-agent - - - name: Docker load - run: | - docker load --input ./wazuh-indexer.tar - docker load --input ./wazuh-dashboard.tar - docker load --input ./wazuh-manager.tar - docker load --input ./wazuh-agent.tar - - name: Create single node certficates - run: docker compose -f single-node/generate-indexer-certs.yml run --rm generator + run: | + curl -sO https://packages.wazuh.com/${{needs.prepare-variables.outputs.WAZUH_IMAGE_VERSION}}/wazuh-certs-tool.sh + cat > config.yml </$(ip addr show docker0 | grep 'inet ' | awk '{print $2}' | cut -d'/' -f1)/g" wazuh-agent/docker-compose.yml - name: Start Wazuh agent - run: docker compose -f wazuh-agent/docker-compose.yml up -d + run: docker compose up -d + working-directory: ./wazuh-agent - name: Check Wazuh agent enrollment run: | sleep 20 curl -k -s -X GET "https://localhost:55000/agents?pretty=true" -H "Authorization: Bearer ${{env.TOKEN}}" env: - TOKEN: $(curl -s -u wazuh-wui:MyS3cr37P450r.*- -k -X GET "https://0.0.0.0:55000/security/user/authenticate?raw=true") + TOKEN: $(curl -s -u wazuh-wui:wazuh-wui -k -X GET "https://0.0.0.0:55000/security/user/authenticate?raw=true") - name: Check errors in ossec.log for Wazuh manager run: ./.github/single-node-log-check.sh @@ -251,32 +251,32 @@ jobs: - name: Check Wazuh indexer start run: | - until [[ `curl -XGET "https://0.0.0.0:9200/_cluster/health" -u admin:SecretPassword -k -s | grep green | wc -l` -eq 1 ]] + until [[ `curl -XGET "https://0.0.0.0:9200/_cluster/health" -u admin:admin -k -s | grep green | wc -l` -eq 1 ]] do echo 'Waiting for Wazuh indexer start' free -m df -h sleep 120 done - status_green="`curl -XGET "https://0.0.0.0:9200/_cluster/health" -u admin:SecretPassword -k -s | grep green | wc -l`" + status_green="`curl -XGET "https://0.0.0.0:9200/_cluster/health" -u admin:admin -k -s | grep green | wc -l`" if [[ $status_green -eq 1 ]]; then - curl -XGET "https://0.0.0.0:9200/_cluster/health" -u admin:SecretPassword -k -s + curl -XGET "https://0.0.0.0:9200/_cluster/health" -u admin:admin -k -s else - curl -XGET "https://0.0.0.0:9200/_cluster/health" -u admin:SecretPassword -k -s + curl -XGET "https://0.0.0.0:9200/_cluster/health" -u admin:admin -k -s exit 1 fi - status_index="`curl -XGET "https://0.0.0.0:9200/_cat/indices" -u admin:SecretPassword -k -s | wc -l`" - status_index_green="`curl -XGET "https://0.0.0.0:9200/_cat/indices" -u admin:SecretPassword -k -s | grep -E "green" | wc -l`" + status_index="`curl -XGET "https://0.0.0.0:9200/_cat/indices" -u admin:admin -k -s | wc -l`" + status_index_green="`curl -XGET "https://0.0.0.0:9200/_cat/indices" -u admin:admin -k -s | grep -E "green" | wc -l`" if [[ $status_index_green -eq $status_index ]]; then - curl -XGET "https://0.0.0.0:9200/_cat/indices" -u admin:SecretPassword -k -s + curl -XGET "https://0.0.0.0:9200/_cat/indices" -u admin:admin -k -s else - curl -XGET "https://0.0.0.0:9200/_cat/indices" -u admin:SecretPassword -k -s + curl -XGET "https://0.0.0.0:9200/_cat/indices" -u admin:admin -k -s exit 1 fi - name: Check Wazuh indexer nodes run: | - nodes="`curl -XGET "https://0.0.0.0:9200/_cat/nodes" -u admin:SecretPassword -k -s | grep -E "indexer" | wc -l`" + nodes="`curl -XGET "https://0.0.0.0:9200/_cat/nodes" -u admin:admin -k -s | grep -E "indexer" | wc -l`" if [[ $nodes -eq 3 ]]; then echo "Wazuh indexer nodes: ${nodes}" else @@ -286,14 +286,14 @@ jobs: - name: Check documents into wazuh-alerts index run: | - until [[ $(``curl -XGET "https://0.0.0.0:9200/wazuh-alerts*/_count" -u admin:SecretPassword -k -s | jq -r ".count"``) -gt 0 ]] + until [[ $(``curl -XGET "https://0.0.0.0:9200/wazuh-alerts*/_count" -u admin:admin -k -s | jq -r ".count"``) -gt 0 ]] do echo 'Waiting for Wazuh indexer events' free -m df -h sleep 10 done - docs="`curl -XGET "https://0.0.0.0:9200/wazuh-alerts*/_count" -u admin:SecretPassword -k -s | jq -r ".count"`" + docs="`curl -XGET "https://0.0.0.0:9200/wazuh-alerts*/_count" -u admin:admin -k -s | jq -r ".count"`" if [[ $docs -gt 0 ]]; then echo "wazuh-alerts index documents: ${docs}" else @@ -303,8 +303,8 @@ jobs: - name: Check Wazuh templates run: | - qty_templates="`curl -XGET "https://0.0.0.0:9200/_cat/templates" -u admin:SecretPassword -k -s | grep "wazuh" | wc -l`" - templates="`curl -XGET "https://0.0.0.0:9200/_cat/templates" -u admin:SecretPassword -k -s | grep "wazuh"`" + qty_templates="`curl -XGET "https://0.0.0.0:9200/_cat/templates" -u admin:admin -k -s | grep "wazuh" | wc -l`" + templates="`curl -XGET "https://0.0.0.0:9200/_cat/templates" -u admin:admin -k -s | grep "wazuh"`" if [[ $qty_templates -gt 3 ]]; then echo "wazuh templates:" echo "${templates}" @@ -337,7 +337,7 @@ jobs: - name: Check Wazuh dashboard service URL run: | - status=$(curl -XGET --silent https://0.0.0.0:443/app/status -k -u admin:SecretPassword -I | grep -E "^HTTP" | awk '{print $2}') + status=$(curl -XGET --silent https://0.0.0.0:443/app/status -k -u admin:admin -I | grep -E "^HTTP" | awk '{print $2}') if [[ $status -eq 200 ]]; then echo "Wazuh dashboard status: ${status}" else