name: Setup Native Action on: push: branches: [main,dev] pull_request: branches: [main,dev] # options in commit : @native @docker @push_image @run_test @no_cleanup @restore_db jobs: native: if: contains(github.event.head_commit.message, '@native') runs-on: ubuntu-latest env: DB_USER: ${{ secrets.DB_USER }} DB_PASSWORD: ${{ secrets.DB_PASSWORD }} DB_SERVER: ${{ vars.DB_SERVER }} DB_PORT: ${{ vars.DB_PORT }} strategy: matrix: python-version: [3.12.7] steps: - name: Checkout Repository uses: actions/checkout@v4 with: ref: ${{ github.ref_name }} - name: Set up Python uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Create Python virtual environment run: python -m venv venv - name: Activate virtual environment and install dependencies run: make install - name: Generate Config run: make gen_config - name: Run Tests run: make run_test docker: if: contains(github.event.head_commit.message, '@docker') runs-on: host env: DB_USER: ${{ secrets.DB_USER }} DB_PASSWORD: ${{ secrets.DB_PASSWORD }} DB_SERVER: ${{ vars.DB_SERVER }} DB_PORT: ${{ vars.DB_PORT }} strategy: matrix: python-version: [3.12.7] steps: - name: Checkout Repository uses: actions/checkout@v4 with: ref: ${{ github.ref_name }} # - name: Set up Python # uses: actions/setup-python@v4 # with: # python-version: ${{ matrix.python-version }} - name: Create Python virtual environment run: python -m venv venv - name: Activate virtual environment and install dependencies run: ./venv/bin/pip install python-dotenv - name: Update Tag run: make update_tag CURR_BRANCH=${{ github.ref_name }} - name: Install Docker compose uses: KengoTODA/actions-setup-docker-compose@v1 with: version: '2.14.2' - name: Stop Server Docker run: make stop_server_docker - name: Generate Config run: make gen_config_docker - name: Build Image run: make build_image - name: Start Server run: make run_server_docker - name: Sleep for 10 seconds run: sleep 10 - name: Restore Database if: contains(github.event.head_commit.message, '@restore_db') run: make restore_database_docker - name: Run Tests if: contains(github.event.head_commit.message, '@run_test') run: make run_test_docker - name: Login Docker hub if: contains(github.event.head_commit.message, '@push_image') run: echo ${{ secrets.DOCKER_PASSWORD }} | docker login -u ${{ secrets.DOCKER_USER }} --password-stdin ${{ secrets.DOCKER_HUB }} - name: Push Image if: contains(github.event.head_commit.message, '@push_image') run: make push_image - name: Logout Docker hub if: contains(github.event.head_commit.message, '@push_image') run: docker logout ${{ secrets.DOCKER_HUB }} - name: Clean Up if: "!contains(github.event.head_commit.message, '@no_cleanup')" run: make clean_up