diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml new file mode 100644 index 00000000..cb8f3e59 --- /dev/null +++ b/.github/workflows/cd.yml @@ -0,0 +1,30 @@ +name: Create docker images + +on: [create] + +jobs: + + build: + name: Build, push, and deploy + if: ${{ startsWith(github.ref, 'refs/tags/v') }} + runs-on: ubuntu-latest + + strategy: + matrix: + db-type: [postgresql, mysql] + + steps: + - uses: actions/checkout@v2 + + - name: Set env + run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV + + - uses: mr-smithers-excellent/docker-build-push@v5 + name: Build & push Docker image for ${{ matrix.db-type }} + with: + image: umami + tags: ${{ matrix.db-type }}-${{ env.RELEASE_VERSION }}, ${{ matrix.db-type }}-latest + buildArgs: DATABASE_TYPE=${{ matrix.db-type }} + registry: ghcr.io/${{ github.actor }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..d204d88c --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,41 @@ +# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions + +name: Node.js CI + +on: [push] + +env: + DATABASE_TYPE: postgresql + +jobs: + build: + runs-on: ubuntu-latest + + strategy: + matrix: + include: + - node-version: 12.x + db-type: postgresql + - node-version: 12.x + db-type: mysql + - node-version: 14.x + db-type: postgresql + - node-version: 14.x + db-type: mysql + - node-version: 16.x + db-type: postgresql + - node-version: 16.x + db-type: mysql + + steps: + - uses: actions/checkout@v2 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v2 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + env: + DATABASE_TYPE: ${{ matrix.db-type }} + - run: npm install + - run: npm run build --if-present diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml deleted file mode 100644 index ec7dfa4c..00000000 --- a/.github/workflows/main.yml +++ /dev/null @@ -1,42 +0,0 @@ -on: - push: - branches: - - master - -jobs: - - build: - name: Build, push, and deploy - runs-on: ubuntu-latest - steps: - - - name: Checkout master - uses: actions/checkout@v2 - - - name: Build PostgreSQL container image - run: | - docker build --build-arg DATABASE_TYPE=postgresql \ - --tag ghcr.io/$GITHUB_ACTOR/umami:postgresql-$(echo $GITHUB_SHA | head -c7) \ - --tag ghcr.io/$GITHUB_ACTOR/umami:postgresql-latest \ - . - - - name: Build MySQL container image - run: | - docker build --build-arg DATABASE_TYPE=mysql \ - --tag ghcr.io/$GITHUB_ACTOR/umami:mysql-$(echo $GITHUB_SHA | head -c7) \ - --tag ghcr.io/$GITHUB_ACTOR/umami:mysql-latest \ - . - - - name: Docker login - run: >- - echo "${{ secrets.GITHUB_TOKEN }}" - | docker login -u "${{ github.actor }}" --password-stdin ghcr.io - - - name: Push image to GitHub - run: | - # Push each image individually, avoiding pushing to umami:latest - # as MySQL or PostgreSQL are required - docker push ghcr.io/$GITHUB_ACTOR/umami:postgresql-$(echo $GITHUB_SHA | head -c7) - docker push ghcr.io/$GITHUB_ACTOR/umami:postgresql-latest - docker push ghcr.io/$GITHUB_ACTOR/umami:mysql-$(echo $GITHUB_SHA | head -c7) - docker push ghcr.io/$GITHUB_ACTOR/umami:mysql-latest