GithubHelp home page GithubHelp logo

logerfo / gitflow-action Goto Github PK

View Code? Open in Web Editor NEW
24.0 3.0 15.0 372 KB

Automatically creates and merges pull requests from master to dev and from release to master.

License: MIT License

JavaScript 100.00%
actions gitflow

gitflow-action's Introduction

My projects

Visual Studio Code extensions

GitHub Apps/Actions

Back-end applications

Miscellaneous

My website

Projects I contributed to

Major Contributions

Minor contributions

Donate

BTC: 1LoGErFoNzE1gCA5fzk6A82nV6iJdKssSZ

gitflow-action's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

gitflow-action's Issues

Automate the release process

Just follow the roadmap. Actions before it (like bumping) and after it (like tagging) should stay manual.

Roadmap

  • Merge master -> release.
  • Run npm run-script build.

Merging release into master and dev

Is there a way to merge the changes from release to master and dev vs release -> master -> dev. The issue being if there is a merge conflict, we don't want to update with dev code that isn't ready to be in master.

Input to set a different head branch for the created PR

Useful when there are merge conflicts, since both branches can be restricted.
It will be needed two inputs: one for the release -> master and one for the master -> dev.
The branch should point to the same commit the original head does.

RFE: Provide a clear error message if the config references a branch that does not exist

Greetings!

In #33, I encountered a strange error message when I used a branch name that didn't exist in my repo in my gitflow-action configuration:

##[error]Validation Failed: {"resource":"PullRequest","field":"base","code":"invalid"}

I suggest detecting this condition and reporting a clearer error message. Something similar to this would be helpful:

Error: Setting 'dev' references a branch that does not exist: devel

##[error]Validation Failed: {"resource":"PullRequest","field":"base","code":"invalid"}

Greetings!

I've been experimenting with this action in https://github.com/rpbarlow/test and I've been receiving an error message:

##[error]Validation Failed: {"resource":"PullRequest","field":"base","code":"invalid"}

For example:

Screen Shot 2020-04-15 at 11 36 27 AM

That is with this config:

https://github.com/rpbarlow/test/blob/1a593e2c1b876c4a2f62d40e6151bcbc93fbe72c/.github/workflows/gitflow.yml

After some searching, it seems like this error can come from the GitHub API, but I am unsure of what is causing it. I'm curious if some of gitflow-action's dependencies might just need to be upgraded, or something along those lines?

Split auto-merge into two inputs

One for master->dev and one for release->master.
In order to make it non-breaking, the current input will still be acceptable and should be prioritized. A deprecation warning must be thrown, if possible. The input should be totally deprecated in the next major release.

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

npm
package.json
  • @actions/core 1.2.7
  • @actions/github 3.0.0
  • eslint 7.9.0
  • @zeit/ncc 0.22.3
travis
.travis.yml
  • node 12

  • Check this box to trigger a request for Renovate to run again on this repository

Exception on PR creation

Hi!

I am getting error when I run your latest Logerfo/[email protected].

My config:

name: Gitflow
on:
  push:
    branches:
      - rc
      - master

permissions:
  pull-requests: write

jobs:
  gitflow:
    name: Create PR
    runs-on: ubuntu-latest
    steps:
      - uses: Logerfo/[email protected]
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          release: rc
          master: master
          dev: develop
          auto-merge: false

logs:

2022-10-12T15:24:12.3098626Z Requested labels: ubuntu-latest
2022-10-12T15:24:12.3098666Z Job defined at: Goncho-space/goncho-id/.github/workflows/gitflow.yml@refs/heads/rc
2022-10-12T15:24:12.3098682Z Waiting for a runner to pick up this job...
2022-10-12T15:24:12.4830360Z Job is waiting for a hosted runner to come online.
2022-10-12T15:24:16.0473292Z Job is about to start running on the hosted runner: Hosted Agent (hosted)
2022-10-12T15:24:19.8164646Z ##[debug]Starting: ๐Ÿ”จ Create PR
2022-10-12T15:24:19.8188544Z ##[debug]Cleaning runner temp folder: /home/runner/work/_temp
2022-10-12T15:24:19.8500357Z ##[debug]Starting: Set up job
2022-10-12T15:24:19.8500809Z Current runner version: '2.298.2'
2022-10-12T15:24:19.8521388Z ##[group]Operating System
2022-10-12T15:24:19.8521889Z Ubuntu
2022-10-12T15:24:19.8522133Z 20.04.5
2022-10-12T15:24:19.8522394Z LTS
2022-10-12T15:24:19.8522664Z ##[endgroup]
2022-10-12T15:24:19.8522922Z ##[group]Runner Image
2022-10-12T15:24:19.8523277Z Image: ubuntu-20.04
2022-10-12T15:24:19.8523593Z Version: 20221002.2
2022-10-12T15:24:19.8524027Z Included Software: https://github.com/actions/runner-images/blob/ubuntu20/20221002.2/images/linux/Ubuntu2004-Readme.md
2022-10-12T15:24:19.8524621Z Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu20%2F20221002.2
2022-10-12T15:24:19.8525059Z ##[endgroup]
2022-10-12T15:24:19.8525345Z ##[group]Runner Image Provisioner
2022-10-12T15:24:19.8525655Z 2.0.78.1
2022-10-12T15:24:19.8526086Z ##[endgroup]
2022-10-12T15:24:19.8526660Z ##[group]GITHUB_TOKEN Permissions
2022-10-12T15:24:19.8527225Z Metadata: read
2022-10-12T15:24:19.8527558Z PullRequests: write
2022-10-12T15:24:19.8527820Z ##[endgroup]
2022-10-12T15:24:19.8531308Z Secret source: Actions
2022-10-12T15:24:19.8531813Z ##[debug]Primary repository: Goncho-space/goncho-id
2022-10-12T15:24:19.8532220Z Prepare workflow directory
2022-10-12T15:24:19.8606236Z ##[debug]Creating pipeline directory: '/home/runner/work/goncho-id'
2022-10-12T15:24:19.8608392Z ##[debug]Creating workspace directory: '/home/runner/work/goncho-id/goncho-id'
2022-10-12T15:24:19.8609230Z ##[debug]Update context data
2022-10-12T15:24:19.8611431Z ##[debug]Evaluating job-level environment variables
2022-10-12T15:24:19.9320231Z ##[debug]Evaluating job container
2022-10-12T15:24:19.9323898Z ##[debug]Evaluating job service containers
2022-10-12T15:24:19.9326216Z ##[debug]Evaluating job defaults
2022-10-12T15:24:19.9399490Z Prepare all required actions
2022-10-12T15:24:19.9581630Z Getting action download info
2022-10-12T15:24:20.1630727Z Download action repository 'Logerfo/[email protected]' (SHA:505fc1c9576dd7879613fa2ca9186cba80c96cc2)
2022-10-12T15:24:20.4780084Z ##[debug]Download 'https://api.github.com/repos/Logerfo/gitflow-action/tarball/505fc1c9576dd7879613fa2ca9186cba80c96cc2' to '/home/runner/work/_actions/_temp_e7bf60ec-1f10-454a-b74a-fa19d7c4994d/bbff8f86-983f-404d-bb00-db4f9770b8ae.tar.gz'
2022-10-12T15:24:20.5502712Z ##[debug]Unwrap 'Logerfo-gitflow-action-505fc1c' to '/home/runner/work/_actions/Logerfo/gitflow-action/0.0.5'
2022-10-12T15:24:20.5555891Z ##[debug]Archive '/home/runner/work/_actions/_temp_e7bf60ec-1f10-454a-b74a-fa19d7c4994d/bbff8f86-983f-404d-bb00-db4f9770b8ae.tar.gz' has been unzipped into '/home/runner/work/_actions/Logerfo/gitflow-action/0.0.5'.
2022-10-12T15:24:20.5717033Z ##[debug]action.yml for action: '/home/runner/work/_actions/Logerfo/gitflow-action/0.0.5/action.yml'.
2022-10-12T15:24:20.6521975Z ##[debug]Set step '__Logerfo_gitflow-action' display name to: 'Run Logerfo/[email protected]'
2022-10-12T15:24:20.6527833Z ##[debug]Collect running processes for tracking orphan processes.
2022-10-12T15:24:20.6755608Z ##[debug]Finishing: Set up job
2022-10-12T15:24:20.6965795Z ##[debug]Evaluating condition for step: 'Run Logerfo/[email protected]'
2022-10-12T15:24:20.7124182Z ##[debug]Evaluating: success()
2022-10-12T15:24:20.7130051Z ##[debug]Evaluating success:
2022-10-12T15:24:20.7159891Z ##[debug]=> true
2022-10-12T15:24:20.7167382Z ##[debug]Result: true
2022-10-12T15:24:20.7208431Z ##[debug]Starting: Run Logerfo/[email protected]
2022-10-12T15:24:20.7410055Z ##[debug]Loading inputs
2022-10-12T15:24:20.7456638Z ##[debug]Evaluating: secrets.GITHUB_TOKEN
2022-10-12T15:24:20.7457712Z ##[debug]Evaluating Index:
2022-10-12T15:24:20.7459771Z ##[debug]..Evaluating secrets:
2022-10-12T15:24:20.7460797Z ##[debug]..=> Object
2022-10-12T15:24:20.7475352Z ##[debug]..Evaluating String:
2022-10-12T15:24:20.7476153Z ##[debug]..=> 'GITHUB_TOKEN'
2022-10-12T15:24:20.7481121Z ##[debug]=> '***'
2022-10-12T15:24:20.7482842Z ##[debug]Result: '***'
2022-10-12T15:24:20.7496198Z ##[debug]Loading env
2022-10-12T15:24:20.7587092Z ##[group]Run Logerfo/[email protected]
2022-10-12T15:24:20.7587500Z with:
2022-10-12T15:24:20.7587980Z   github-token: ***
2022-10-12T15:24:20.7588295Z   release: rc
2022-10-12T15:24:20.7588625Z   master: master
2022-10-12T15:24:20.7588891Z   dev: develop
2022-10-12T15:24:20.7589194Z   auto-merge: false
2022-10-12T15:24:20.7589515Z   label: gitflow
2022-10-12T15:24:20.7589777Z   require-merge: false
2022-10-12T15:24:20.7590117Z ##[endgroup]
2022-10-12T15:24:20.9523925Z ##[debug]{"after":"18a7167eb48bfcdf08488fb270bb1ef33ac58146","base_ref":null,"before":"de467b38d8a213273cd93a9b91b9a03a7c147784","commits":[{"author":{"email":"[email protected]","name":"Alex Zima","username":"xzima"},"committer":{"email":"[email protected]","name":"Alex Zima","username":"xzima"},"distinct":true,"id":"18a7167eb48bfcdf08488fb270bb1ef33ac58146","message":"ci: fix gitflow.yml action","timestamp":"2022-10-12T18:24:49+03:00","tree_id":"814ea0e9a3a2dc20f8b1d8b1aa2eff535e4fbcf8","url":"https://github.com/Goncho-space/goncho-id/commit/18a7167eb48bfcdf08488fb270bb1ef33ac58146"}],"compare":"https://github.com/Goncho-space/goncho-id/compare/de467b38d8a2...18a7167eb48b","created":false,"deleted":false,"forced":false,"head_commit":{"author":{"email":"[email protected]","name":"Alex Zima","username":"xzima"},"committer":{"email":"[email protected]","name":"Alex Zima","username":"xzima"},"distinct":true,"id":"18a7167eb48bfcdf08488fb270bb1ef33ac58146","message":"ci: fix gitflow.yml action","timestamp":"2022-10-12T18:24:49+03:00","tree_id":"814ea0e9a3a2dc20f8b1d8b1aa2eff535e4fbcf8","url":"https://github.com/Goncho-space/goncho-id/commit/18a7167eb48bfcdf08488fb270bb1ef33ac58146"},"organization":{"avatar_url":"https://avatars.githubusercontent.com/u/105038379?v=4","description":null,"events_url":"https://api.github.com/orgs/Goncho-space/events","hooks_url":"https://api.github.com/orgs/Goncho-space/hooks","id":105038379,"issues_url":"https://api.github.com/orgs/Goncho-space/issues","login":"Goncho-space","members_url":"https://api.github.com/orgs/Goncho-space/members{/member}","node_id":"O_kgDOBkLCKw","public_members_url":"https://api.github.com/orgs/Goncho-space/public_members{/member}","repos_url":"https://api.github.com/orgs/Goncho-space/repos","url":"https://api.github.com/orgs/Goncho-space"},"pusher":{"email":"[email protected]","name":"xzima"},"ref":"refs/heads/rc","repository":{"allow_forking":false,"archive_url":"https://api.github.com/repos/Goncho-space/goncho-id/{archive_format}{/ref}","archived":false,"assignees_url":"https://api.github.com/repos/Goncho-space/goncho-id/assignees{/user}","blobs_url":"https://api.github.com/repos/Goncho-space/goncho-id/git/blobs{/sha}","branches_url":"https://api.github.com/repos/Goncho-space/goncho-id/branches{/branch}","clone_url":"https://github.com/Goncho-space/goncho-id.git","collaborators_url":"https://api.github.com/repos/Goncho-space/goncho-id/collaborators{/collaborator}","comments_url":"https://api.github.com/repos/Goncho-space/goncho-id/comments{/number}","commits_url":"https://api.github.com/repos/Goncho-space/goncho-id/commits{/sha}","compare_url":"https://api.github.com/repos/Goncho-space/goncho-id/compare/{base}...{head}","contents_url":"https://api.github.com/repos/Goncho-space/goncho-id/contents/{+path}","contributors_url":"https://api.github.com/repos/Goncho-space/goncho-id/contributors","created_at":1664801653,"default_branch":"master","deployments_url":"https://api.github.com/repos/Goncho-space/goncho-id/deployments","description":"keycloak fork with custom theme and plugins","disabled":false,"downloads_url":"https://api.github.com/repos/Goncho-space/goncho-id/downloads","events_url":"https://api.github.com/repos/Goncho-space/goncho-id/events","fork":false,"forks":0,"forks_count":0,"forks_url":"https://api.github.com/repos/Goncho-space/goncho-id/forks","full_name":"Goncho-space/goncho-id","git_commits_url":"https://api.github.com/repos/Goncho-space/goncho-id/git/commits{/sha}","git_refs_url":"https://api.github.com/repos/Goncho-space/goncho-id/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/Goncho-space/goncho-id/git/tags{/sha}","git_url":"git://github.com/Goncho-space/goncho-id.git","has_downloads":true,"has_issues":true,"has_pages":false,"has_projects":true,"has_wiki":true,"homepage":null,"hooks_url":"https://api.github.com/repos/Goncho-space/goncho-id/hooks","html_url":"https://github.com/Goncho-space/goncho-id","id":544908635,"is_template":false,"issue_comment_url":"https://api.github.com/repos/Goncho-space/goncho-id/issues/comments{/number}","issue_events_url":"https://api.github.com/repos/Goncho-space/goncho-id/issues/events{/number}","issues_url":"https://api.github.com/repos/Goncho-space/goncho-id/issues{/number}","keys_url":"https://api.github.com/repos/Goncho-space/goncho-id/keys{/key_id}","labels_url":"https://api.github.com/repos/Goncho-space/goncho-id/labels{/name}","language":"TypeScript","languages_url":"https://api.github.com/repos/Goncho-space/goncho-id/languages","license":null,"master_branch":"master","merges_url":"https://api.github.com/repos/Goncho-space/goncho-id/merges","milestones_url":"https://api.github.com/repos/Goncho-space/goncho-id/milestones{/number}","mirror_url":null,"name":"goncho-id","node_id":"R_kgDOIHqlWw","notifications_url":"https://api.github.com/repos/Goncho-space/goncho-id/notifications{?since,all,participating}","open_issues":0,"open_issues_count":0,"organization":"Goncho-space","owner":{"avatar_url":"https://avatars.githubusercontent.com/u/105038379?v=4","email":null,"events_url":"https://api.github.com/users/Goncho-space/events{/privacy}","followers_url":"https://api.github.com/users/Goncho-space/followers","following_url":"https://api.github.com/users/Goncho-space/following{/other_user}","gists_url":"https://api.github.com/users/Goncho-space/gists{/gist_id}","gravatar_id":"","html_url":"https://github.com/Goncho-space","id":105038379,"login":"Goncho-space","name":"Goncho-space","node_id":"O_kgDOBkLCKw","organizations_url":"https://api.github.com/users/Goncho-space/orgs","received_events_url":"https://api.github.com/users/Goncho-space/received_events","repos_url":"https://api.github.com/users/Goncho-space/repos","site_admin":false,"starred_url":"https://api.github.com/users/Goncho-space/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Goncho-space/subscriptions","type":"Organization","url":"https://api.github.com/users/Goncho-space"},"private":true,"pulls_url":"https://api.github.com/repos/Goncho-space/goncho-id/pulls{/number}","pushed_at":1665588221,"releases_url":"https://api.github.com/repos/Goncho-space/goncho-id/releases{/id}","size":408,"ssh_url":"[email protected]:Goncho-space/goncho-id.git","stargazers":0,"stargazers_count":0,"stargazers_url":"https://api.github.com/repos/Goncho-space/goncho-id/stargazers","statuses_url":"https://api.github.com/repos/Goncho-space/goncho-id/statuses/{sha}","subscribers_url":"https://api.github.com/repos/Goncho-space/goncho-id/subscribers","subscription_url":"https://api.github.com/repos/Goncho-space/goncho-id/subscription","svn_url":"https://github.com/Goncho-space/goncho-id","tags_url":"https://api.github.com/repos/Goncho-space/goncho-id/tags","teams_url":"https://api.github.com/repos/Goncho-space/goncho-id/teams","topics":[],"trees_url":"https://api.github.com/repos/Goncho-space/goncho-id/git/trees{/sha}","updated_at":"2022-10-11T18:18:12Z","url":"https://github.com/Goncho-space/goncho-id","visibility":"private","watchers":0,"watchers_count":0,"web_commit_signoff_required":false},"sender":{"avatar_url":"https://avatars.githubusercontent.com/u/57903499?v=4","events_url":"https://api.github.com/users/xzima/events{/privacy}","followers_url":"https://api.github.com/users/xzima/followers","following_url":"https://api.github.com/users/xzima/following{/other_user}","gists_url":"https://api.github.com/users/xzima/gists{/gist_id}","gravatar_id":"","html_url":"https://github.com/xzima","id":57903499,"login":"xzima","node_id":"MDQ6VXNlcjU3OTAzNDk5","organizations_url":"https://api.github.com/users/xzima/orgs","received_events_url":"https://api.github.com/users/xzima/received_events","repos_url":"https://api.github.com/users/xzima/repos","site_admin":false,"starred_url":"https://api.github.com/users/xzima/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xzima/subscriptions","type":"User","url":"https://api.github.com/users/xzima"}}
2022-10-12T15:24:21.1156496Z ##[debug][]
2022-10-12T15:24:21.5613174Z (node:1522) UnhandledPromiseRejectionWarning: TypeError: Converting circular structure to JSON
2022-10-12T15:24:21.5613994Z     --> starting at object with constructor 'TLSSocket'
2022-10-12T15:24:21.5614514Z     |     property '_httpMessage' -> object with constructor 'ClientRequest'
2022-10-12T15:24:21.5614989Z     --- property 'socket' closes the circle
2022-10-12T15:24:21.5615350Z     at JSON.stringify (<anonymous>)
2022-10-12T15:24:21.5615874Z     at run (/home/runner/work/_actions/Logerfo/gitflow-action/0.0.5/dist/index.js:433:25)
2022-10-12T15:24:21.5616320Z     at processTicksAndRejections (internal/process/task_queues.js:97:5)
2022-10-12T15:24:21.5617612Z (node:1522) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
2022-10-12T15:24:21.5618842Z (node:1522) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
2022-10-12T15:24:21.5669705Z ##[error]Validation Failed: {"resource":"PullRequest","code":"custom","message":"not all refs are readable"}
2022-10-12T15:24:21.5684143Z ##[debug]Node Action run completed with exit code 1
2022-10-12T15:24:21.5812002Z ##[debug]Finishing: Run Logerfo/[email protected]
2022-10-12T15:24:21.5930104Z ##[debug]Starting: Complete job
2022-10-12T15:24:21.5931940Z Uploading runner diagnostic logs
2022-10-12T15:24:21.6082256Z ##[debug]Starting diagnostic file upload.
2022-10-12T15:24:21.6082687Z ##[debug]Setting up diagnostic log folders.
2022-10-12T15:24:21.6085275Z ##[debug]Creating diagnostic log files folder.
2022-10-12T15:24:21.6105909Z ##[debug]Copying 1 worker diagnostic logs.
2022-10-12T15:24:21.6124694Z ##[debug]Copying 1 runner diagnostic logs.
2022-10-12T15:24:21.6126145Z ##[debug]Zipping diagnostic files.
2022-10-12T15:24:21.6166310Z ##[debug]Uploading diagnostic metadata file.
2022-10-12T15:24:21.6200994Z ##[debug]Diagnostic file upload complete.
2022-10-12T15:24:21.6201668Z Completed runner diagnostic log upload
2022-10-12T15:24:21.6202022Z Cleaning up orphan processes
2022-10-12T15:24:21.6709203Z ##[debug]Finishing: Complete job
2022-10-12T15:24:21.6830822Z ##[debug]Finishing: ๐Ÿ”จ Create PR

Missing index.js Error

Running your latest Logerfo/[email protected]. I get this error when executing:

Run Logerfo/[email protected]
with:
github-token: ***
release: test-13
release-regex: ^release/(.*)
dev: develop
master: main
label: gitflow
auto-merge: false
require-merge: false
Error: File not found: '/home/runner/work/_actions/Logerfo/gitflow-action/0.0.5/dist/index.js'

I did notice your main branch does not have the dist/index.js but release branch does?

[Question] Automerge changes from `release/*` to `master`

I'm new with setting up Github actions. I'd like to set up a flow where any changes to release/* gets merged down to master automatically. Would this configuration work with your action:

name: Gitflow
on: 
  push:
  pull_request_review:
  check_run:
    types: [completed]

jobs:
  build:
    name: Gitflow
    runs-on: ubuntu-16.04
    steps:
    - uses: Logerfo/[email protected]
      with:
        github-token: ${{ secrets.GITHUB_TOKEN }}
        release: release/*
        master: master
        label: gitflow
        auto-merge: true
        require-merge: false

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.