mirror of
				https://github.com/cinnyapp/cinny.git
				synced 2025-11-04 14:30:29 +03:00 
			
		
		
		
	Simplify GitHub actions (#387)
* Simplify production build actions This merges both the netlify-prod and docker action and also automatically add tarball to releases. * Delete docker.yaml * Delete netlify-prod.yaml * Cosmetic changes and add dockerhub check * Cosmetic changes * Fix check runs on Tuesdays only
This commit is contained in:
		
							parent
							
								
									19cb30d360
								
							
						
					
					
						commit
						38773e89ff
					
				
					 6 changed files with 180 additions and 166 deletions
				
			
		
							
								
								
									
										26
									
								
								.github/dependabot.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										26
									
								
								.github/dependabot.yml
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1,22 +1,28 @@
 | 
			
		|||
# Docs: <https://docs.github.com/en/free-pro-team@latest/github/administering-a-repository/customizing-dependency-updates>
 | 
			
		||||
# Docs: <https://docs.github.com/en/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/customizing-dependency-updates>
 | 
			
		||||
 | 
			
		||||
version: 2
 | 
			
		||||
 | 
			
		||||
updates:
 | 
			
		||||
  - package-ecosystem: github-actions
 | 
			
		||||
    directory: /
 | 
			
		||||
    schedule: {interval: weekly}
 | 
			
		||||
    reviewers: [ajbura]
 | 
			
		||||
    assignees: [ajbura]
 | 
			
		||||
    schedule: 
 | 
			
		||||
      interval: weekly
 | 
			
		||||
      day: "tuesday"
 | 
			
		||||
      time: "01:00"
 | 
			
		||||
      timezone: "Asia/Kolkata"
 | 
			
		||||
 | 
			
		||||
  - package-ecosystem: docker
 | 
			
		||||
    directory: /
 | 
			
		||||
    schedule: {interval: weekly}
 | 
			
		||||
    reviewers: [ajbura]
 | 
			
		||||
    assignees: [ajbura]
 | 
			
		||||
    schedule: 
 | 
			
		||||
      interval: weekly
 | 
			
		||||
      day: "tuesday"
 | 
			
		||||
      time: "01:00"
 | 
			
		||||
      timezone: "Asia/Kolkata"
 | 
			
		||||
 | 
			
		||||
  - package-ecosystem: npm
 | 
			
		||||
    directory: /
 | 
			
		||||
    schedule: {interval: weekly}
 | 
			
		||||
    reviewers: [ajbura]
 | 
			
		||||
    assignees: [ajbura]
 | 
			
		||||
    schedule: 
 | 
			
		||||
      interval: weekly
 | 
			
		||||
      day: "tuesday"
 | 
			
		||||
      time: "01:00"
 | 
			
		||||
      timezone: "Asia/Kolkata"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										59
									
								
								.github/workflows/build-pull-request.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										59
									
								
								.github/workflows/build-pull-request.yml
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1,32 +1,39 @@
 | 
			
		|||
name: 'Build PR'
 | 
			
		||||
name: 'Build pull request'
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  pull_request:
 | 
			
		||||
    types: ['opened', 'synchronize']
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
    build:
 | 
			
		||||
        runs-on: ubuntu-latest
 | 
			
		||||
        env:
 | 
			
		||||
          PR_NUMBER: ${{github.event.number}}
 | 
			
		||||
        steps:
 | 
			
		||||
            - uses: actions/checkout@v3.0.0
 | 
			
		||||
            - name: Build
 | 
			
		||||
              run: npm ci && npm run build
 | 
			
		||||
            - name: Upload Artifact
 | 
			
		||||
              uses: actions/upload-artifact@v3.0.0
 | 
			
		||||
              with:
 | 
			
		||||
                  name: previewbuild
 | 
			
		||||
                  path: dist
 | 
			
		||||
                  retention-days: 1
 | 
			
		||||
            - uses: actions/github-script@v6.0.0
 | 
			
		||||
              with:
 | 
			
		||||
                script: |
 | 
			
		||||
                    var fs = require('fs');
 | 
			
		||||
                    fs.writeFileSync('${{github.workspace}}/pr.json', JSON.stringify(context.payload.pull_request));
 | 
			
		||||
            - name: Upload PR Info
 | 
			
		||||
              uses: actions/upload-artifact@v3.0.0
 | 
			
		||||
              with:
 | 
			
		||||
                  name: pr.json
 | 
			
		||||
                  path: pr.json
 | 
			
		||||
                  retention-days: 1
 | 
			
		||||
  build-pull-request:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    env:
 | 
			
		||||
      PR_NUMBER: ${{github.event.number}}
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Check out the repo
 | 
			
		||||
        uses: actions/checkout@v3.0.0
 | 
			
		||||
      - name: Build app
 | 
			
		||||
        run: npm ci && npm run build
 | 
			
		||||
      - name: Upload artifact
 | 
			
		||||
        uses: actions/upload-artifact@v3.0.0
 | 
			
		||||
        with:
 | 
			
		||||
          name: previewbuild
 | 
			
		||||
          path: dist
 | 
			
		||||
          retention-days: 1
 | 
			
		||||
      - name: Get PR info
 | 
			
		||||
        uses: actions/github-script@v6.0.0
 | 
			
		||||
        with:
 | 
			
		||||
          script: |
 | 
			
		||||
            var fs = require('fs');
 | 
			
		||||
            fs.writeFileSync('${{github.workspace}}/pr.json', JSON.stringify(context.payload.pull_request));
 | 
			
		||||
      - name: Upload PR Info
 | 
			
		||||
        uses: actions/upload-artifact@v3.0.0
 | 
			
		||||
        with:
 | 
			
		||||
          name: pr.json
 | 
			
		||||
          path: pr.json
 | 
			
		||||
          retention-days: 1
 | 
			
		||||
      - name: Build Docker image
 | 
			
		||||
        uses: docker/build-push-action@v2.9.0
 | 
			
		||||
        with:
 | 
			
		||||
          context: .
 | 
			
		||||
          push: false
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										150
									
								
								.github/workflows/deploy-pull-request.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										150
									
								
								.github/workflows/deploy-pull-request.yml
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1,78 +1,78 @@
 | 
			
		|||
name: Upload Preview Build to Netlify
 | 
			
		||||
on:
 | 
			
		||||
    workflow_run:
 | 
			
		||||
        workflows: ["Build PR"]
 | 
			
		||||
        types:
 | 
			
		||||
            - completed
 | 
			
		||||
  workflow_run:
 | 
			
		||||
      workflows: ["Build PR"]
 | 
			
		||||
      types:
 | 
			
		||||
        - completed
 | 
			
		||||
jobs:
 | 
			
		||||
    build:
 | 
			
		||||
        runs-on: ubuntu-latest
 | 
			
		||||
        if: >
 | 
			
		||||
            ${{ github.event.workflow_run.conclusion == 'success' }}
 | 
			
		||||
        steps:
 | 
			
		||||
            # There's a 'download artifact' action but it hasn't been updated for the
 | 
			
		||||
            # workflow_run action (https://github.com/actions/download-artifact/issues/60)
 | 
			
		||||
            # so instead we get this mess:
 | 
			
		||||
            - name: 'Download artifact'
 | 
			
		||||
              uses: actions/github-script@v6.0.0
 | 
			
		||||
              with:
 | 
			
		||||
                script: |
 | 
			
		||||
                  var artifacts = await github.rest.actions.listWorkflowRunArtifacts({
 | 
			
		||||
                     owner: context.repo.owner,
 | 
			
		||||
                     repo: context.repo.repo,
 | 
			
		||||
                     run_id: ${{github.event.workflow_run.id }},
 | 
			
		||||
                  });
 | 
			
		||||
                  var matchArtifact = artifacts.data.artifacts.filter((artifact) => {
 | 
			
		||||
                    return artifact.name == "previewbuild"
 | 
			
		||||
                  })[0];
 | 
			
		||||
                  var download = await github.rest.actions.downloadArtifact({
 | 
			
		||||
                     owner: context.repo.owner,
 | 
			
		||||
                     repo: context.repo.repo,
 | 
			
		||||
                     artifact_id: matchArtifact.id,
 | 
			
		||||
                     archive_format: 'zip',
 | 
			
		||||
                  });
 | 
			
		||||
                  var fs = require('fs');
 | 
			
		||||
                  fs.writeFileSync('${{github.workspace}}/previewbuild.zip', Buffer.from(download.data));
 | 
			
		||||
                  var prInfoArtifact = artifacts.data.artifacts.filter((artifact) => {
 | 
			
		||||
                    return artifact.name == "pr.json"
 | 
			
		||||
                  })[0];
 | 
			
		||||
                  var download = await github.rest.actions.downloadArtifact({
 | 
			
		||||
                     owner: context.repo.owner,
 | 
			
		||||
                     repo: context.repo.repo,
 | 
			
		||||
                     artifact_id: prInfoArtifact.id,
 | 
			
		||||
                     archive_format: 'zip',
 | 
			
		||||
                  });
 | 
			
		||||
                  var fs = require('fs');
 | 
			
		||||
                  fs.writeFileSync('${{github.workspace}}/pr.json.zip', Buffer.from(download.data));
 | 
			
		||||
            - name: Extract Artifacts
 | 
			
		||||
              run: unzip -d dist previewbuild.zip && rm previewbuild.zip && unzip pr.json.zip && rm pr.json.zip
 | 
			
		||||
            - name: 'Read PR Info'
 | 
			
		||||
              id: readctx
 | 
			
		||||
              uses: actions/github-script@v6.0.0
 | 
			
		||||
              with:
 | 
			
		||||
                script: |
 | 
			
		||||
                    var fs = require('fs');
 | 
			
		||||
                    var pr = JSON.parse(fs.readFileSync('${{github.workspace}}/pr.json'));
 | 
			
		||||
                    console.log(`::set-output name=prnumber::${pr.number}`);
 | 
			
		||||
            - name: Deploy to Netlify
 | 
			
		||||
              id: netlify
 | 
			
		||||
              uses: nwtgck/actions-netlify@v1.2.3
 | 
			
		||||
              with:
 | 
			
		||||
                  publish-dir: dist
 | 
			
		||||
                  deploy-message: "Deploy from GitHub Actions"
 | 
			
		||||
                  # These don't work because we're in workflow_run
 | 
			
		||||
                  enable-pull-request-comment: false
 | 
			
		||||
                  enable-commit-comment: false
 | 
			
		||||
              env:
 | 
			
		||||
                  NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
 | 
			
		||||
                  NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE3_ID }}
 | 
			
		||||
              timeout-minutes: 1
 | 
			
		||||
            - name: Edit PR Description
 | 
			
		||||
              uses: velas/pr-description@v1.0.1
 | 
			
		||||
              env:
 | 
			
		||||
                  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
              with:
 | 
			
		||||
                  pull-request-number: ${{ steps.readctx.outputs.prnumber }}
 | 
			
		||||
                  description-message: |
 | 
			
		||||
                      Preview: ${{ steps.netlify.outputs.deploy-url }}
 | 
			
		||||
                      ⚠️ Exercise caution. Use test accounts. ⚠️
 | 
			
		||||
  get-build-and-deploy:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    if: >
 | 
			
		||||
      ${{ github.event.workflow_run.conclusion == 'success' }}
 | 
			
		||||
    steps:
 | 
			
		||||
      # There's a 'download artifact' action but it hasn't been updated for the
 | 
			
		||||
      # workflow_run action (https://github.com/actions/download-artifact/issues/60)
 | 
			
		||||
      # so instead we get this mess:
 | 
			
		||||
      - name: 'Download artifact'
 | 
			
		||||
        uses: actions/github-script@v6.0.0
 | 
			
		||||
        with:
 | 
			
		||||
          script: |
 | 
			
		||||
            var artifacts = await github.rest.actions.listWorkflowRunArtifacts({
 | 
			
		||||
              owner: context.repo.owner,
 | 
			
		||||
              repo: context.repo.repo,
 | 
			
		||||
              run_id: ${{github.event.workflow_run.id }},
 | 
			
		||||
            });
 | 
			
		||||
            var matchArtifact = artifacts.data.artifacts.filter((artifact) => {
 | 
			
		||||
              return artifact.name == "previewbuild"
 | 
			
		||||
            })[0];
 | 
			
		||||
            var download = await github.rest.actions.downloadArtifact({
 | 
			
		||||
              owner: context.repo.owner,
 | 
			
		||||
              repo: context.repo.repo,
 | 
			
		||||
              artifact_id: matchArtifact.id,
 | 
			
		||||
              archive_format: 'zip',
 | 
			
		||||
            });
 | 
			
		||||
            var fs = require('fs');
 | 
			
		||||
            fs.writeFileSync('${{github.workspace}}/previewbuild.zip', Buffer.from(download.data));
 | 
			
		||||
            var prInfoArtifact = artifacts.data.artifacts.filter((artifact) => {
 | 
			
		||||
              return artifact.name == "pr.json"
 | 
			
		||||
            })[0];
 | 
			
		||||
            var download = await github.rest.actions.downloadArtifact({
 | 
			
		||||
              owner: context.repo.owner,
 | 
			
		||||
              repo: context.repo.repo,
 | 
			
		||||
              artifact_id: prInfoArtifact.id,
 | 
			
		||||
              archive_format: 'zip',
 | 
			
		||||
            });
 | 
			
		||||
            var fs = require('fs');
 | 
			
		||||
            fs.writeFileSync('${{github.workspace}}/pr.json.zip', Buffer.from(download.data));
 | 
			
		||||
      - name: Extract Artifacts
 | 
			
		||||
        run: unzip -d dist previewbuild.zip && rm previewbuild.zip && unzip pr.json.zip && rm pr.json.zip
 | 
			
		||||
      - name: 'Read PR Info'
 | 
			
		||||
        id: readctx
 | 
			
		||||
        uses: actions/github-script@v6.0.0
 | 
			
		||||
        with:
 | 
			
		||||
          script: |
 | 
			
		||||
            var fs = require('fs');
 | 
			
		||||
            var pr = JSON.parse(fs.readFileSync('${{github.workspace}}/pr.json'));
 | 
			
		||||
            console.log(`::set-output name=prnumber::${pr.number}`);
 | 
			
		||||
      - name: Deploy to Netlify
 | 
			
		||||
        id: netlify
 | 
			
		||||
        uses: nwtgck/actions-netlify@v1.2.3
 | 
			
		||||
        with:
 | 
			
		||||
          publish-dir: dist
 | 
			
		||||
          deploy-message: "Deploy from GitHub Actions"
 | 
			
		||||
          # These don't work because we're in workflow_run
 | 
			
		||||
          enable-pull-request-comment: false
 | 
			
		||||
          enable-commit-comment: false
 | 
			
		||||
        env:
 | 
			
		||||
          NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
 | 
			
		||||
          NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE3_ID }}
 | 
			
		||||
        timeout-minutes: 1
 | 
			
		||||
      - name: Edit PR Description
 | 
			
		||||
        uses: velas/pr-description@v1.0.1
 | 
			
		||||
        env:
 | 
			
		||||
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
        with:
 | 
			
		||||
          pull-request-number: ${{ steps.readctx.outputs.prnumber }}
 | 
			
		||||
          description-message: |
 | 
			
		||||
              Preview: ${{ steps.netlify.outputs.deploy-url }}
 | 
			
		||||
              ⚠️ Exercise caution. Use test accounts. ⚠️
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										34
									
								
								.github/workflows/docker.yaml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										34
									
								
								.github/workflows/docker.yaml
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1,34 +0,0 @@
 | 
			
		|||
name: Publish Docker image
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  release:
 | 
			
		||||
    types: [published]
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
   push_to_registry:
 | 
			
		||||
    name: Push Docker image to Docker Hub
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Check out the repo
 | 
			
		||||
        uses: actions/checkout@v3.0.0
 | 
			
		||||
 | 
			
		||||
      - name: Log in to Docker Hub
 | 
			
		||||
        uses: docker/login-action@v1.14.1
 | 
			
		||||
        with:
 | 
			
		||||
          username: ${{ secrets.DOCKER_USERNAME }}
 | 
			
		||||
          password: ${{ secrets.DOCKER_PASSWORD }}
 | 
			
		||||
 | 
			
		||||
      - name: Extract metadata (tags, labels) for Docker
 | 
			
		||||
        id: meta
 | 
			
		||||
        uses: docker/metadata-action@v3.6.2
 | 
			
		||||
        with:
 | 
			
		||||
          images: ajbura/cinny
 | 
			
		||||
 | 
			
		||||
      - name: Build and push Docker image
 | 
			
		||||
        uses: docker/build-push-action@v2.9.0
 | 
			
		||||
        with:
 | 
			
		||||
          context: .
 | 
			
		||||
          push: true
 | 
			
		||||
          tags: ${{ steps.meta.outputs.tags }}
 | 
			
		||||
          labels: ${{ steps.meta.outputs.labels }}
 | 
			
		||||
							
								
								
									
										21
									
								
								.github/workflows/netlify-prod.yaml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										21
									
								
								.github/workflows/netlify-prod.yaml
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1,21 +0,0 @@
 | 
			
		|||
name: 'Deploy to Netlify (prod)'
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  release:
 | 
			
		||||
    types: [published]
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  deploy:
 | 
			
		||||
    name: 'Deploy'
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3.0.0
 | 
			
		||||
      - uses: jsmrcaga/action-netlify-deploy@v1.7.2
 | 
			
		||||
        with:
 | 
			
		||||
          install_command: "npm ci"
 | 
			
		||||
          NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
 | 
			
		||||
          NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
 | 
			
		||||
          BUILD_DIRECTORY: "dist"
 | 
			
		||||
          NETLIFY_DEPLOY_MESSAGE: "Prod deploy v${{ github.ref }}"
 | 
			
		||||
          NETLIFY_DEPLOY_TO_PROD: true
 | 
			
		||||
							
								
								
									
										56
									
								
								.github/workflows/prod-deploy.yaml
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								.github/workflows/prod-deploy.yaml
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,56 @@
 | 
			
		|||
name: 'Production deploy'
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  release:
 | 
			
		||||
    types: [published]
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  deploy-to-netlify:
 | 
			
		||||
    name: 'Deploy to Netlify'
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Check out the repo
 | 
			
		||||
        uses: actions/checkout@v3.0.0
 | 
			
		||||
      - name: Build and deploy to Netlify
 | 
			
		||||
        uses: jsmrcaga/action-netlify-deploy@v1.7.2
 | 
			
		||||
        with:
 | 
			
		||||
          install_command: "npm ci"
 | 
			
		||||
          NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
 | 
			
		||||
          NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
 | 
			
		||||
          BUILD_DIRECTORY: "dist"
 | 
			
		||||
          NETLIFY_DEPLOY_MESSAGE: "Prod deploy v${{ github.ref }}"
 | 
			
		||||
          NETLIFY_DEPLOY_TO_PROD: true
 | 
			
		||||
      - name: Get version from tag
 | 
			
		||||
        id: vars
 | 
			
		||||
        run: echo ::set-output name=tag::${GITHUB_REF#refs/*/}
 | 
			
		||||
      - name: Create tar.gz
 | 
			
		||||
        run: tar -czvf cinny-${{ steps.vars.outputs.tag }}.tar.gz dist
 | 
			
		||||
      - name: Upload tagged release
 | 
			
		||||
        uses: softprops/action-gh-release@v1
 | 
			
		||||
        with:
 | 
			
		||||
          files: |
 | 
			
		||||
            cinny-${{ steps.vars.outputs.tag }}.tar.gz
 | 
			
		||||
 | 
			
		||||
  push_to_dockerhub:
 | 
			
		||||
    name: Push Docker image to Docker Hub
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Check out the repo
 | 
			
		||||
        uses: actions/checkout@v3.0.0
 | 
			
		||||
      - name: Login to Docker Hub
 | 
			
		||||
        uses: docker/login-action@v1.14.1
 | 
			
		||||
        with:
 | 
			
		||||
          username: ${{ secrets.DOCKER_USERNAME }}
 | 
			
		||||
          password: ${{ secrets.DOCKER_PASSWORD }}
 | 
			
		||||
      - name: Extract metadata (tags, labels) for Docker
 | 
			
		||||
        id: meta
 | 
			
		||||
        uses: docker/metadata-action@v3.6.2
 | 
			
		||||
        with:
 | 
			
		||||
          images: ajbura/cinny
 | 
			
		||||
      - name: Build and push Docker image
 | 
			
		||||
        uses: docker/build-push-action@v2.9.0
 | 
			
		||||
        with:
 | 
			
		||||
          context: .
 | 
			
		||||
          push: true
 | 
			
		||||
          tags: ${{ steps.meta.outputs.tags }}
 | 
			
		||||
          labels: ${{ steps.meta.outputs.labels }}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue