Skip to content

Instantly share code, notes, and snippets.

@Alhadis
Last active August 24, 2022 18:13
  • Select an option

Select an option

Revisions

  1. Alhadis revised this gist Aug 24, 2022. 1 changed file with 39 additions and 0 deletions.
    39 changes: 39 additions & 0 deletions ci-workflow.yml
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,39 @@
    name: CI

    on:
    push: {branches: [master, ci]}
    pull_request: {branches: [master, ci]}
    workflow_dispatch:
    # Enable manual execution via Actions tab

    jobs:
    test:
    name: Test Node v${{ matrix.node }} on ${{ matrix.os }}
    runs-on: ${{ matrix.os }}-latest
    strategy:
    matrix:
    os: [Ubuntu, macOS, Windows]
    node: [13.2, 14, 16, 18]

    steps:
    - name: Checkout repository
    uses: actions/checkout@v3

    - name: Install Node.js
    uses: actions/setup-node@v3
    with:
    node-version: ${{ matrix.node }}

    - name: Install GNU on Windows
    if: startsWith(matrix.os, 'Windows')
    run: |
    choco install gow
    refreshenv
    - name: Run package tests
    shell: sh
    run: |
    node --version
    npm --version
    make all
    make coverage
  2. Alhadis created this gist Jul 19, 2021.
    499 changes: 499 additions & 0 deletions appveyor.yml
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,499 @@
    # -*- tab-width: 4; indent-tabs-mode: nil -*- vim: ts=4 et
    # Based on https://www.appveyor.com/docs/appveyor-yml/ (July 19th, 2021)
    # Notes:
    # - All sections are optional; the most minimalist `appveyor.yml` is an empty file
    # - All section names are case-sensitive
    # - Section names should be unique on each level

    #---------------------------------#
    # General configuration #
    #---------------------------------#

    # Version format
    version: 1.0.{build}

    # You can use {branch} name in version format too
    #version: 1.0.{build}-{branch}

    # Branches to build
    branches:
    # Whitelist
    only:
    - master
    - production

    # Blacklist
    except:
    - gh-pages

    # Do not build on tags (GitHub, Bitbucket, GitLab, Gitea)
    skip_tags: true

    # Start builds on tags only (GitHub, BitBucket, GitLab, Gitea)
    skip_non_tags: true

    # Skip commits with particular message or from specific user
    skip_commits:
    message: /Created.*\.(png|jpg|jpeg|bmp|gif)/ # Regex matching commit message
    author: John # Commit author's username, name, email or regexp matching one of these

    # Include commits with particular message or from specific user
    only_commits:
    message: /build/ # Start new build if message contains the word "build"
    author: jack@company.com # Start new build for commit of user with e-mail jack@company.com

    # Skip commits affecting specific files (GitHub only)
    #skip_commits:
    # files:
    # - docs/*
    # - '**/*.html'

    # Include commits affecting specific files (GitHub only)
    #only_commits:
    # files:
    # - Project-A/
    # - Project-B/

    # Don't build feature-branches with open pull-requests
    skip_branch_with_pr: true

    # Maximum number of concurrent jobs for the project
    max_jobs: 1


    #---------------------------------#
    # Environment configuration #
    #---------------------------------#

    # Build worker image (VM template)
    image: Visual Studio 2015

    # Scripts run before anything else (including a checkout of the project repository)
    init:
    - git config --global core.autocrlf input

    # Clone directory
    clone_folder: c:\projects\myproject

    # Fetch repository as ZIP archive (default: "false")
    shallow_clone: true

    # Set clone depth (default: entire repository history)
    clone_depth: 5

    # Contents of `etc\hosts` file
    hosts:
    queue-server: 127.0.0.1
    db.server.com: 127.0.0.2

    # Environment variables
    environment:
    my_var1: value1
    my_var2: value2

    # Example of an encrypted variable (to encrypt data: "Account" -> "Settings" -> "Encrypt YAML")
    my_secure_var1:
    secure: FW3tJ3fMncxvs58/ifSP7w==

    #environment:
    # global:
    # connection_string: server=12;password=13;
    # service_url: https://127.0.0.1:8090
    #
    # matrix:
    # - db: mysql
    # provider: mysql
    #
    # - db: mssql
    # provider: mssql
    # password:
    # secure: $#(JFDA)jQ@#$

    # Allow failing jobs
    matrix:
    allow_failures:
    - platform: x86
    configuration: Debug
    - platform: x64
    configuration: Release

    # Immediately finish build after a failed job
    fast_finish: true

    # Exclude configuration from matrix
    exclude:
    - platform: x86
    configuration: Debug

    # Build cache for preserving files/folders between builds
    cache:
    - packages -> **\packages.config
    - projectA\libs
    - node_modules # Locally-installed NPM modules
    - '%LocalAppData%\NuGet\Cache' # NuGet (pre-v3)
    - '%LocalAppData%\NuGet\v3-cache' # NuGet (v3+)

    # Enable services required for building and testing
    services:
    - mssql2014 # Start SQL Server 2014 Express
    - mssql2014rs # Start SQL Server 2014 Express and Reporting Services
    - mssql2012sp1 # Start SQL Server 2012 SP1 Express
    - mssql2012sp1rs # Start SQL Server 2012 SP1 Express and Reporting Services
    - mssql2008r2sp2 # Start SQL Server 2008 R2 SP2 Express
    - mssql2008r2sp2rs # Start SQL Server 2008 R2 SP2 Express and Reporting Services
    - mysql # Start MySQL 5.6 service
    - postgresql # Start PostgreSQL 9.5 service
    - iis # Start IIS
    - msmq # Start queuing services
    - mongodb # Start MongoDB

    # Scripts that run after checking out project's repository
    install:
    # CMD.EXE (Implicit)
    - echo This is batch

    # CMD.EXE (Explicit)
    - cmd: echo This is batch again
    - cmd: set MY_VAR=12345

    # PowerShell
    - ps: Write-Host 'This is PowerShell'

    # Enable patching of `AssemblyInfo.*` files
    assembly_info:
    patch: true
    file: AssemblyInfo.*
    assembly_version: "2.2.{build}"
    assembly_file_version: "{version}"
    assembly_informational_version: "{version}"

    # Patch .NET Core `*.*proj` files
    dotnet_csproj:
    patch: true
    file: '**\*.csproj'
    version: '{version}'
    version_prefix: '{version}'
    package_version: '{version}'
    assembly_version: '{version}'
    file_version: '{version}'
    informational_version: '{version}'

    # Automatically register private account and/or project AppVeyor NuGet feeds.
    nuget:
    account_feed: true
    project_feed: true

    # Disable publishing of .nupkg artefacts to account/project feeds in pull-request builds
    disable_publish_on_pr: true

    # Disable publishing of Octopus Deploy .nupkg artefacts to account/project feeds
    publish_wap_octopus: true


    #---------------------------------#
    # Build configuration #
    #---------------------------------#

    # Build platform (i.e. "x86", "x64", "Any CPU") (optional)
    platform: Any CPU

    # To add several platforms to build matrix:
    #platform:
    # - x86
    # - Any CPU

    # Build configuration (i.e., "Debug", "Release", etc)
    configuration: Release

    # To add several configurations to build matrix:
    #configuration:
    # - Debug
    # - Release

    # Build settings (not to be confused with `before_build` or `after_build`)
    # NB: `project` is relative to the original build directory, and therefore not
    # influenced by directory changes that may have occurred during .
    build:
    # Path to Visual Studio solution or project, resolved relative to original build directory
    # (i.e., directory changes made during `before_build` scripts have no influence on lookup).
    project: MyTestAzureCS.sln

    parallel: true # Enable MSBuild parallel builds
    publish_wap: true # Package Web Application Projects (WAP) for Web Deploy
    publish_wap_xcopy: true # Package Web Application Projects (WAP) for XCopy deployment
    publish_wap_beanstalk: true # Package Web Applications for AWS Elastic Beanstalk deployment
    publish_wap_octopus: true # Package Web Applications for Octopus deployment
    publish_azure_webjob: true # Package Azure WebJobs for Zip Push deployment
    publish_azure: true # Package Azure Cloud Service projects and push to artefacts
    publish_aspnet_core: true # Package ASP.NET Core projects
    publish_core_console: true # Package .NET Core console projects
    publish_nuget: true # Package projects with .nuspec files and push to artefacts
    publish_nuget_symbols: true # Generate and publish NuGet symbol packages
    include_nuget_references: true # Add `-IncludeReferencedProjects` option when packaging NuGet artefacts

    # MSBuild verbosity level
    verbosity: quiet|minimal|normal|detailed


    # Scripts run before build
    before_build:

    # Custom build logic; replaces automatic MSBuild
    build_script:

    # Scripts run after build
    # NB: Working directory and environment changes persist from previous steps
    after_build:

    # Scripts run *after* solution is built, but *before* automatic packaging occurs (web apps, NuGet packages, Azure Cloud services)
    before_package:

    # Disable automatic builds
    #build: off


    #---------------------------------#
    # Test configuration #
    #---------------------------------#

    # Run tests against *only* the selected assemblies and/or categories
    test:
    assemblies:
    only:
    - asm1.dll
    - asm2.dll

    categories:
    only:
    - UI
    - E2E

    # Run tests against everything *except* selected assemblies and/or categories
    #test:
    # assemblies:
    # except:
    # - asm1.dll
    # - asm2.dll
    #
    # categories:
    # except:
    # - UI
    # - E2E

    # Run tests from different categories as separate jobs in parallel
    #test:
    # categories:
    # - A # Category common for all jobs
    # - [UI] # 1st job
    # - [DAL, BL] # 2nd job

    # Scripts run before tests
    # NB: Working directory and environment changes persist from earlier steps, such as `before_build`
    before_test:
    - echo script1
    - ps: Write-Host "script1"

    # Run custom scripts instead of automatic tests
    test_script:
    - echo This is my custom test script

    # Scripts run after tests
    after_test:

    # Disable automatic tests
    #test: off


    #---------------------------------#
    # Artefact configuration #
    #---------------------------------#

    artifacts:

    # Push a single file
    - path: test.zip

    # Push a single file with environment variable in path and "Deployment name" specified
    - path: MyProject\bin\$(configuration)
    name: myapp

    # Push entire folder as a ZIP archive
    - path: logs

    # Recursively push every `.nupkg` file within build directory
    - path: '**\*.nupkg'


    #---------------------------------#
    # Deployment configuration #
    #---------------------------------#

    # Deployment provider settings
    # (Providers: Local, FTP, WebDeploy, AzureCS, AzureBlob, S3, NuGet, Environment)
    # NOTE: Provider names are case-sensitive!
    deploy:

    # FTP
    - provider: FTP
    protocol: ftp|ftps|sftp
    host: ftp.myserver.com
    username: admin
    password: {secure: eYKZKFkkEvFYWX6NfjZIVw==}
    folder: null
    application: null
    active_mode: false
    beta: true # Enable alternative FTP library for 'ftp' and 'ftps' modes
    debug: true # Show complete FTP log

    # Amazon S3
    - provider: S3
    access_key_id: {secure: ABcd==}
    secret_access_key: {secure: ABcd==}
    bucket: my_bucket
    folder: null
    artifact: null
    set_public: false

    # Azure Blob storage
    - provider: AzureBlob
    storage_account_name: {secure: ABcd==}
    storage_access_key: {secure: ABcd==}
    container: my_container
    folder: null
    artifact: null

    # Web Deploy
    - provider: WebDeploy
    server: http://www.deploy.com/myendpoint
    website: mywebsite
    username: user
    password: {secure: eYKZKFkkEvFYWX6NfjZIVw==}
    ntlm: false
    remove_files: false
    app_offline: false
    do_not_use_checksum: true # Don't use checksums to compare source and destination files (default: false)
    sync_retry_attempts: 2 # Maximum sync attempts
    sync_retry_interval: 2000 # Timeout between sync attempts, in milliseconds
    aspnet_core: true # Artefact ZIP contains ASP.NET Core application
    aspnet_core_force_restart: true # Poke app's web.config before deploy to force application restart
    skip_dirs: \\App_Data
    skip_files: web.config
    on:
    branch: release
    platform: x86
    configuration: debug

    # Azure Cloud Service
    - provider: AzureCS
    subscription_id: {secure: fjZIVw==}
    subscription_certificate: {secure: eYKZKFkkEv...FYWX6NfjZIVw==}
    storage_access_key: {secure: ABcd==}
    storage_account_name: my_storage
    service: my_service
    slot: Production
    target_profile: Cloud
    artifact: MyPackage.cspkg

    # NuGet feed
    - provider: NuGet
    server: https://my.nuget.server/feed
    api_key: {secure: FYWX6NfjZIVw==}
    skip_symbols: false
    symbol_server: https://your.symbol.server/feed
    artifact: MyPackage.nupkg

    # GitHub Releases
    - provider: GitHub
    artifact: /.*\.nupkg/ # Uploads all NuGet packages to release assets
    draft: false
    prerelease: false
    on:
    branch: master # Release from master branch only
    APPVEYOR_REPO_TAG: true # Deploy on tag push only

    # A named environment
    - provider: Environment
    name: staging
    on:
    branch: staging
    env_var1: value1
    env_var2: value2


    # Scripts run before deployment
    before_deploy:

    # Scripts run after deployment
    after_deploy:

    # Custom deploy logic instead of provider deployments
    deploy_script:

    # Disable deployment
    #deploy: off


    #---------------------------------#
    # Global handlers #
    #---------------------------------#

    # Scripts run on a successful build
    on_success:
    - do something

    # Scripts run on a failed failure
    on_failure:
    - do something

    # Scripts run after every build, successful or not
    on_finish:
    - do something


    #---------------------------------#
    # Notifications #
    #---------------------------------#

    notifications:

    # E-mail
    - provider: Email
    subject: 'Build {{status}}' # Optional
    message: "{{message}}, {{commitId}}, ..." # Optional
    on_build_status_changed: true
    to:
    - user1@email.com
    - user2@email.com

    # HipChat
    - provider: HipChat
    auth_token: {secure: RbOnSMSFKYzxzFRrxM1+XA==}
    room: ProjectA
    template: "{message}, {commitId}, ..."

    # Slack (insecure)
    - provider: Slack
    incoming_webhook: http://incoming-webhook-url

    # Slack (secured with auth token)
    - provider: Slack
    auth_token: {secure: kBl9BlxvRMr9liHmnBs14A==}
    channel: development
    template: "{message}, {commitId}, ..."

    # Campfire
    - provider: Campfire
    account: appveyor
    auth_token: {secure: RifLRG8Vfyol+sNhj9u2JA==}
    room: ProjectA
    template: "{message}, {commitId}, ..."

    # Web-hook
    - provider: Webhook
    url: http://www.myhook2.com
    on_build_success: false
    on_build_failure: true
    on_build_status_changed: true
    headers:
    User-Agent: myapp 1.0
    Authorization: {secure: GhD+5xhLz/tkYY6AO3fcfQ==}