name: OpenWISP Config CI Build on: push: branches: - master pull_request: branches: - master jobs: tests: name: QA-Checks and Tests runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.sha }} - name: Set up Python uses: actions/setup-python@v5 with: python-version: 3.x - name: Install Dependencies id: deps run: | sudo ./install-dev.sh pip install openwisp-utils[qa]>=0.7 - name: QA-Checks run: ./run-qa-checks env: CI: 1 - name: Run sh-checker if: ${{ !cancelled() && steps.deps.conclusion == 'success' }} uses: luizm/action-sh-checker@v0.9.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: sh_checker_comment: true - name: Tests if: ${{ !cancelled() && steps.deps.conclusion == 'success' }} run: ./runtests build: name: Build and Upload Packages needs: tests runs-on: ubuntu-24.04 env: BUILD_DIR: "/home/runner/work/build" DOWNLOADS_DIR: "/home/runner/work/downloads" CORES: 2 steps: - uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.sha }} - name: Cache OpenWrt dependencies id: cache uses: actions/cache@v4 env: cache-name: cache-openwisp-config-dependencies with: path: "/home/runner/work/build" key: ${{ runner.os }}-build-${{ env.cache-name }} - name: Set Environment run: | echo "START_TIME=$(date +"%Y-%m-%d")" >> $GITHUB_ENV echo "COMMIT_SHA=$(git log --pretty=format:'%h' -n 1)" >> $GITHUB_ENV - name: Run Build run: ./runbuild env: CI: 1 CI_CACHE: ${{ steps.cache.outputs.cache-hit }} - name: Upload packages as artifacts uses: actions/upload-artifact@v4 with: name: Packages path: "${{ env.DOWNLOADS_DIR }}/${{ env.START_TIME }}" - name: Google Cloud Auth if: ${{ github.event_name=='push' }} uses: 'google-github-actions/auth@v2' with: project_id: ${{ secrets.GCS_PROJECT_ID }} credentials_json: ${{ secrets.GCS_DOWNLOADS_SERVICE_ACCOUNT_JSON }} - name: Google Cloud Setup if: ${{ github.event_name=='push' }} uses: google-github-actions/setup-gcloud@v2 with: project_id: ${{ secrets.GCS_PROJECT_ID }} - name: Upload compiled packages to downloads.openwisp.io if: ${{ github.event_name=='push' }} run: | gsutil -m rsync -r ${{ env.SRC_URL }} ${{ env.DST_URL }} gsutil -m rsync -r -d ${{ env.SRC_URL }} ${{ env.LATEST_URL }} env: SRC_URL: ${{ env.DOWNLOADS_DIR }}/${{ env.START_TIME }}/openwisp DST_URL: gs://${{ secrets.GCS_DOWNLOADS_BUCKET_NAME }}/openwisp-config/${{ env.START_TIME }}-${{ env.COMMIT_SHA }} LATEST_URL: gs://${{ secrets.GCS_DOWNLOADS_BUCKET_NAME }}/openwisp-config/latest