diff --git a/.github/.keep b/.github/.keep new file mode 100644 index 0000000..e69de29 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..a6beb77 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,72 @@ +name: Run Test Suite + +on: + pull_request: + branches: + - main + +jobs: + export_variables: + runs-on: ubuntu-latest + + outputs: + primary_image: ${{ steps.compute_container_registry_name.outputs.CR_NAME }}/postgres_primary:${{ steps.calculate_primary_sha.outputs.PRIMARY_SHA }} + replica_image: ${{ steps.compute_container_registry_name.outputs.CR_NAME }}/postgres_replica:${{ steps.calculate_replica_sha.outputs.REPLICA_SHA }} + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Compute container registry name + id: compute_container_registry_name + run: echo "CR_NAME=$(echo ghcr.io/${{ github.repository }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT + + - name: Calculate SHA256 for postgres_primary.dockerfile + id: calculate_primary_sha + run: echo "PRIMARY_SHA=$(sha256sum postgres_primary.dockerfile | awk '{ print substr($1, 1, 12) }')" >> $GITHUB_OUTPUT + + - name: Calculate SHA256 for postgres_replica.dockerfile + id: calculate_replica_sha + run: echo "REPLICA_SHA=$(sha256sum postgres_replica.dockerfile | awk '{ print substr($1, 1, 12) }')" >> $GITHUB_OUTPUT + + prebuild_primary: + needs: export_variables + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Log in to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and tag primary Docker image + run: docker build -f postgres_primary.dockerfile -t ${{ needs.export_variables.outputs.primary_image }} . + + - name: Push primary Docker image + run: docker push ${{ needs.export_variables.outputs.primary_image }} + + prebuild_replica: + needs: export_variables + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Log in to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and tag replica Docker image + run: docker build -f postgres_replica.dockerfile -t ${{ needs.export_variables.outputs.replica_image }} . + + - name: Push replica Docker image + run: docker push ${{ needs.export_variables.outputs.replica_image }} \ No newline at end of file