# Travis

Published articles for Travis.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Branch predictor: How many "if"s are too many? Including x86 and M1 benchmarks!

DevFeed: [Branch predictor: How many "if"s are too many? Including x86 and M1 benchmarks!](<https://devfeed.tech/articles/branch-predictor-how-many-if-s-are-too-many-including-x86-and-m1-benchmarks-38995.md>)

Original publisher: [Read original article](<https://idea.popcount.org/2021-05-06-branch-predictor-how-many-ifs-are-too-many-including-x86-and-m1-benchmarks>)

Author: Marek

Published: 2021-05-05T22:00:00Z

Content type: article

Language: en

Sources: [Marek Majkowski](<https://devfeed.tech/sources/marek-majkowski.md>)

Topics: [x86](<https://devfeed.tech/topics/x86.md>), [Cloudflare](<https://devfeed.tech/topics/cloudflare.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [article](<https://devfeed.tech/tags/article.md>), [benchmarks](<https://devfeed.tech/tags/benchmarks.md>), [blog](<https://devfeed.tech/tags/blog.md>), [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [discussion](<https://devfeed.tech/tags/discussion.md>), [hacker-news](<https://devfeed.tech/tags/hacker-news.md>), [travis](<https://devfeed.tech/tags/travis.md>), [x86](<https://devfeed.tech/tags/x86.md>)

### AI overview

The article examines how many conditional branches affect branch prediction, with benchmarks covering x86 and M1 systems. It also points to discussions about BTB behavior, M1 branch-predictor interactions with the iCache prefetcher, and related commentary.

### Source excerpt

Branch predictor: How many "if"s are too many? Including x86 and M1 benchmarks! I published an article on Cloudflare blog: Notable discussions mentioning this work: - Looking at BTB behavior and size: a comment on my work from Travis Downs, followed by response from Linus Torvalds. - Discussion on M1 architecture, with fascinating take on branch predictor interactions with iCache prefetcher. - Hacker News commentary

## Migrating a JS project from Travis to GitHub Actions

DevFeed: [Migrating a JS project from Travis to GitHub Actions](<https://devfeed.tech/articles/migrating-a-js-project-from-travis-to-github-actions-19083.md>)

Original publisher: [Read original article](<https://httptoolkit.com/blog/migrating-javascript-from-travis-to-github-actions/>)

Author: HTTP Toolkit; Tim Perry

Published: 2020-10-27T11:45:00Z

Content type: tutorial

Language: en

Sources: [HTTP Toolkit](<https://devfeed.tech/sources/http-toolkit.md>)

Topics: [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>), [ci](<https://devfeed.tech/topics/ci.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Chrome](<https://devfeed.tech/topics/chrome.md>), [Puppeteer](<https://devfeed.tech/topics/puppeteer.md>), [npm](<https://devfeed.tech/topics/npm.md>), [chmod](<https://devfeed.tech/topics/chmod.md>)

Tags: [chmod](<https://devfeed.tech/tags/chmod.md>), [chrome](<https://devfeed.tech/tags/chrome.md>), [ci](<https://devfeed.tech/tags/ci.md>), [cli](<https://devfeed.tech/tags/cli.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [js](<https://devfeed.tech/tags/js.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [testing](<https://devfeed.tech/tags/testing.md>), [travis](<https://devfeed.tech/tags/travis.md>), [typescript](<https://devfeed.tech/tags/typescript.md>)

### AI overview

This tutorial explains how to migrate a JavaScript/TypeScript project from Travis to GitHub Actions. It uses an HTTP Toolkit UI repository as an example, covering Node.js version selection, Chrome and XVFB setup for Puppeteer and Karma tests, dependency installation with npm ci, and test execution with npm test. It also discusses reproducing the cloud CI environment locally to debug environment-specific failures.

### Source excerpt

Travis has been the most popular place to build open-source code for a long time, but the world is moving on. GitHub Actions is modern, tightly integrated with the most popular code hosting platform in the world, flexible, fast, and free (for public repos). Travis has been popular for years though, there's still a lot of projects being built there, including many of HTTP Toolkit's own repos. Last week, I decided to bite the bullet, and start migrating. Travis was having a particularly bad build backlog day, and HTTP Toolkit is entirely open source on GitHub already, so it's super convenient. I've been looking longingly at GitHub Actions builds on other projects for a little while, and I'd already seen lots of useful extensions in the marketplace of drop-in action steps that'd make my life much easier. Unfortunately, I knew very little about GitHub actions, and I already had some Travis configuration that worked. In this post, I want to share how I converted my JavaScript (well, TypeScript) build from Travis to GitHub, so you can do the same. The Goal I decided to start with the simplest Travis setup I had: the HTTP Toolkit UI repo. Here's the previous travis.yml file: dist: xenial sudo: required language: node_js node_js: - '14' install: - npm ci services: - xvfb before_script: - sudo chown root /opt/google/chrome/chrome-sandbox - sudo chmod 4755 /opt/google/chrome/chrome-sandbox script: - npm test addons: chrome: stable There's a few notable things here: I want to build with a specific node version. I need Chrome & XVFB installed for testing with Puppeteer & Karma. There's some existing workarounds (before_script) for Travis.yml in here. The build itself is just npm ci to install dependencies and then npm test. Although not shown here, some of the npm dependencies include native node extensions, and need a working native build environment. One other feature I'd really like, and which I'd strongly recommend for everybody, is the option to run an equivalent CI enviro

## Validating OAS 3 specification in your CI build

DevFeed: [Validating OAS 3 specification in your CI build](<https://devfeed.tech/articles/validating-oas-3-specification-in-your-ci-build-21503.md>)

Original publisher: [Read original article](<https://mirocupak.com/validating-oas-3-specification-in-your-ci-build/>)

Published: 2019-02-15T17:29:41Z

Content type: tutorial

Language: en

Sources: [Miro Cupak](<https://devfeed.tech/sources/miro-cupak.md>)

Topics: [OpenAPI Specification](<https://devfeed.tech/topics/openapi.md>), [Continuous integration](<https://devfeed.tech/topics/continuous-integration.md>), [YAML](<https://devfeed.tech/topics/yaml.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [Swagger](<https://devfeed.tech/topics/swagger.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [pull-requests](<https://devfeed.tech/topics/pull-requests.md>)

Tags: [ci](<https://devfeed.tech/tags/ci.md>), [continuous-integration](<https://devfeed.tech/tags/continuous-integration.md>), [github](<https://devfeed.tech/tags/github.md>), [openapi](<https://devfeed.tech/tags/openapi.md>), [pull-requests](<https://devfeed.tech/tags/pull-requests.md>), [specifications](<https://devfeed.tech/tags/specifications.md>), [swagger](<https://devfeed.tech/tags/swagger.md>), [swagger-validator-badge](<https://devfeed.tech/tags/swagger-validator-badge.md>), [testing](<https://devfeed.tech/tags/testing.md>), [travis](<https://devfeed.tech/tags/travis.md>), [travis-ci](<https://devfeed.tech/tags/travis-ci.md>), [yaml](<https://devfeed.tech/tags/yaml.md>)

### AI overview

This tutorial explains how to validate an OpenAPI 3 specification on every pull request as part of continuous integration. It uses the Swagger Validator Badge tool in Travis CI, building version 2.0.0 locally because hosted support for OpenAPI 3 was incomplete at the time of writing.

### Source excerpt

As part of my work on standards under GA4GH, I frequently deal with API specifications, most often written in OpenAPI 3 (OAS 3). The setup is always similar - there's a public GitHub repository containing an OAS 3 YAML file and a few common auxiliary files (.gitignore, LICENSE, CONTRIBUTING.md, and README.md). Reference implementations of...

## Obtaining a URL to a file in a GitHub repository in a Travis CI build

DevFeed: [Obtaining a URL to a file in a GitHub repository in a Travis CI build](<https://devfeed.tech/articles/obtaining-a-url-to-a-file-in-a-github-repository-in-a-travis-ci-build-21502.md>)

Original publisher: [Read original article](<https://mirocupak.com/obtaining-a-url-to-a-file-in-a-github-repository-in-a-travis-ci-build/>)

Published: 2019-01-24T22:51:37Z

Content type: tutorial

Language: en

Sources: [Miro Cupak](<https://devfeed.tech/sources/miro-cupak.md>)

Topics: [ci](<https://devfeed.tech/topics/ci.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [pull-requests](<https://devfeed.tech/topics/pull-requests.md>), [OpenAPI Specification](<https://devfeed.tech/topics/openapi.md>), [Swagger](<https://devfeed.tech/topics/swagger.md>)

Tags: [ci](<https://devfeed.tech/tags/ci.md>), [continuous-integration](<https://devfeed.tech/tags/continuous-integration.md>), [devops](<https://devfeed.tech/tags/devops.md>), [github](<https://devfeed.tech/tags/github.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [openapi-specification](<https://devfeed.tech/tags/openapi-specification.md>), [pull-requests](<https://devfeed.tech/tags/pull-requests.md>), [swagger](<https://devfeed.tech/tags/swagger.md>), [travis](<https://devfeed.tech/tags/travis.md>), [travis-ci](<https://devfeed.tech/tags/travis-ci.md>)

### AI overview

A tutorial explaining how to construct a URL to a repository file in a Travis CI build while accounting for push builds, pull requests from forks, branches, and tags.

### Source excerpt

I'm a fan of Travis CI and use it for continuous integration across pretty much all my open-source projects on GitHub. From time to time, I need to obtain a URL to a file in the repository in my build, e.g. to point a particular tool to it, in a way that respects branches as well as pull requests...

## Travis CI Integration

DevFeed: [Travis CI Integration](<https://devfeed.tech/articles/travis-ci-integration-19618.md>)

Original publisher: [Read original article](<https://www.codenameone.com/blog/travis-ci-integration/>)

Author: Steve Hannah

Published: 2018-01-08T00:00:00Z

Content type: release

Language: en

Sources: [CodeName One](<https://devfeed.tech/sources/codename-one.md>)

Topics: [ci](<https://devfeed.tech/topics/ci.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [Emulator](<https://devfeed.tech/topics/emulator.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [ci](<https://devfeed.tech/tags/ci.md>), [emulator](<https://devfeed.tech/tags/emulator.md>), [github](<https://devfeed.tech/tags/github.md>), [integration](<https://devfeed.tech/tags/integration.md>), [ios](<https://devfeed.tech/tags/ios.md>), [simulator](<https://devfeed.tech/tags/simulator.md>), [test](<https://devfeed.tech/tags/test.md>), [travis](<https://devfeed.tech/tags/travis.md>), [travis-ci](<https://devfeed.tech/tags/travis-ci.md>), [unit-tests](<https://devfeed.tech/tags/unit-tests.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

### AI overview

Codename One added Travis CI support for automatically running unit tests on configured platforms whenever project changes are committed to GitHub. Projects can enable the integration in Codename One settings, push the generated Travis configuration, and activate the project on Travis.

### Source excerpt

We've just added support for Travis CI in your Codename One projects. Travis can be set up to automatically test your project (i.e. run unit tests) on a variety of different platforms every time you commit changes to github. There is a wiki page with full documentation of this feature, but the general idea and workflow are: Enable Travis CI for your project via Codename One settings Push your project (including .travis.yml and .travis directory, which are created for you when you enable Travis) to Github.

## Codename One 3.8 Code Freeze, Versioning Changes, and Test Updates

DevFeed: [Codename One 3.8 Code Freeze, Versioning Changes, and Test Updates](<https://devfeed.tech/articles/new-milestones-and-features-19406.md>)

Original publisher: [Read original article](<https://www.codenameone.com/blog/new-milestones-features/>)

Author: Shai Almog

Published: 2017-10-30T00:00:00Z

Content type: release

Language: en

Sources: [CodeName One](<https://devfeed.tech/sources/codename-one.md>)

Topics: [releases](<https://devfeed.tech/topics/releases.md>), [ci](<https://devfeed.tech/topics/ci.md>), [Travis CI](<https://devfeed.tech/topics/travis-ci.md>)

Tags: [ci](<https://devfeed.tech/tags/ci.md>), [releases](<https://devfeed.tech/tags/releases.md>), [travis](<https://devfeed.tech/tags/travis.md>)

### AI overview

Codename One plans a code freeze for version 3.8 and will move from 3.8 directly to 4.0 under a major-version milestone scheme. The post also reports an Eclipse Oxygen simulator issue, an overflow-menu regression fix, automated-test repository integration with Travis CI and GitHub, and the callSeriallyOnIdle method.

### Source excerpt

We will enter code freeze for Codename One 3.8 next week and have a lot of things to clear off the table in order to get there! The first order of business is that there will be no Codename One 3.9... Instead we will go right to 4.0 and switch to major version number update scheme only. This will align us better with industry standards. We spent ages in 3.x and far less in 1.x or 2.x numbering. That doesn't make sense. It's hard to tell what feature is big enough for a "major version number update" and it doesn't indicate as much with the fast pace of releases. So switching to major version numbers in terms of milestones will simplify and give a better indication of the work we put in.

## A 2016 Year-End Update on Work, a JavaScript Meetup, and Projects

DevFeed: [A 2016 Year-End Update on Work, a JavaScript Meetup, and Projects](<https://devfeed.tech/articles/looking-forward-to-the-2017-37307.md>)

Original publisher: [Read original article](<https://muffinman.io/blog/looking-forward-to-2017/>)

Author: Stanko

Published: 2016-12-21T00:00:00Z

Content type: opinion

Language: en

Sources: [Stanko Tadić](<https://devfeed.tech/sources/stanko-tadic.md>)

Topics: [Development](<https://devfeed.tech/topics/development.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Go](<https://devfeed.tech/topics/go.md>), [GitHub Pages](<https://devfeed.tech/topics/github-pages.md>), [Jekyll](<https://devfeed.tech/topics/jekyll.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [articles](<https://devfeed.tech/tags/articles.md>), [blog](<https://devfeed.tech/tags/blog.md>), [developer](<https://devfeed.tech/tags/developer.md>), [github-pages](<https://devfeed.tech/tags/github-pages.md>), [go](<https://devfeed.tech/tags/go.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [jekyll](<https://devfeed.tech/tags/jekyll.md>), [meetup](<https://devfeed.tech/tags/meetup.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [startup](<https://devfeed.tech/tags/startup.md>), [travis](<https://devfeed.tech/tags/travis.md>)

### AI overview

A personal year-end update covering the author's move into a Technology Director role at Work & Co, plans for a Belgrade winter tech meetup, recommended startup articles, and ongoing small projects. The post also notes that the blog is open source and powered by Jekyll, Travis, and GitHub Pages.

### Source excerpt

2016 was quite a ride. I just want to write a couple of random things, to close this year with one last post. Work & Co # Big news here, my company became a part of Work & Co. We're really excited about that, and I'm looking forward to the great stuff we are going to build. Our collaboration goes back for a few years now, it was very productive, and this is a great step forward. My current title is a Technology Director and I'm in charge of a tech team, here in the Belgrade office. Winter Meetup # We are preparing a new tech meetup, this time a bit bigger one, with four speakers. I'll talk about JavaScript, if it is going in the right direction. About it's problems, misunderstandings, fear and hate that are involved around it. Don't worry, I'll talk about the good parts too. All of the presentations include: Five senses in a business performance - Nikola Pantović Go fast with Web Workers - Ivan Nikitović Become more professional developer - Saša Ranisavljević State of a modern JavaScript development - Stanko Tadić (myself) It will probably happen on the first Saturday in February of 2017, but I'll post updates with the exact date and venue. So be sure to come to Work & Co Belgrade Winter Meetup. Few articles I want to share # I rarely find articles that I think are really worth sharing. But there are two that I like a lot. How to Make Wealth Short guide for Startup Software Engineers in 2nd/3rd World Countries The first one is a cliche in the startup world,. In case you haven't read it yet, and you are interested in making a startup, please do. The second one, unfortunately, is not online anymore, but I found it cached, and made a gist copy of it. It is written by a colleague Serbian, here in Belgrade. He really puts some light on how startup scene is totally different here, and in The valley and western world. To me, it was really an eye opener when I first read it. I hope original author won't mind I shared it. Here are links to the original blog, and the cached v

## Setting up Travis, Jekyll and GitHub pages

DevFeed: [Setting up Travis, Jekyll and GitHub pages](<https://devfeed.tech/articles/setting-up-travis-jekyll-and-github-pages-37366.md>)

Original publisher: [Read original article](<https://muffinman.io/blog/travis-jekyll-and-github-pages/>)

Author: Stanko

Published: 2016-10-24T00:00:00Z

Content type: tutorial

Language: en

Sources: [Stanko Tadić](<https://devfeed.tech/sources/stanko-tadic.md>)

Topics: [Jekyll](<https://devfeed.tech/topics/jekyll.md>), [Travis CI](<https://devfeed.tech/topics/travis-ci.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [GitHub Pages](<https://devfeed.tech/topics/github-pages.md>), [ci](<https://devfeed.tech/topics/ci.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>)

Tags: [ci](<https://devfeed.tech/tags/ci.md>), [github](<https://devfeed.tech/tags/github.md>), [github-pages](<https://devfeed.tech/tags/github-pages.md>), [github-personal-access-token](<https://devfeed.tech/tags/github-personal-access-token.md>), [jekyll](<https://devfeed.tech/tags/jekyll.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [security](<https://devfeed.tech/tags/security.md>), [travis](<https://devfeed.tech/tags/travis.md>), [travis-ci](<https://devfeed.tech/tags/travis-ci.md>)

### AI overview

This tutorial explains how to use Travis CI to build a Jekyll site and publish the generated files through GitHub Pages. It describes branch setup, webhook activation, a GitHub Personal Access Token, Ruby gem configuration, and a Rake task. The author warns that the setup may be outdated and no longer uses it.

### Source excerpt

Please note that I'm not using Jekyll anymore, so this post might be outdated. Update, November 2017 # I don't use this setup anymore, it might be outdated, proceed with caution. Original post # As I already mentioned, GitHub pages do not work with the Jekyll plugins. It is a security measure. So I researched it a bit, and colleague of mine proposed a simple solution - Travis CI. There is a great repo with instructions how to set everything up - jekyll-travis. But few steps are kinda confusing, and it took me 10 failed builds to make it work. So I'll try to help you with those. I copied the steps from the original repo and updated steps where I got stuck. Be sure to check the original readme as well. Flow # When you push to your GitHub repo, it triggers Travis Travis starts up a virtual machine and installs all required software (mostly Ruby gems). We use a custom rake task to tell Travis how to build our Jekyll site and push the updated content back to Github Travis clones a source branch (usually master or source, in my case source) Travis runs jekyll build on the source branch Travis does a git push to the branch holding static site files (usually gh-pages or master, in my case master) Github Pages starts serving the updated site Steps to make it work # Move your Jekyll source files to the source branch (name it as you like). We'll use master or gh-pages branch to host generated HTML website. Make sure you have enabled your source repo in the Travis CI admin dashboard so that the webhook is triggered Create a GitHub Personal Access Token from you profile page. If you haven't already, create a Gemfile, and add rake gem to it. source "http://production.cf.rubygems.org/" gem "rake", "~> 10.1.1" gem "jekyll-paginate" gem "jekyll-archives" We have seen intermittent timeouts fetching gems from Rubygems.org. install: bundle install lets Travis CI automatically retry, and we are using source "http://production.cf.rubygems.org/" in Gemfile to point to a different reposito

## Test gem with multiple dependencies on Travis CI

DevFeed: [Test gem with multiple dependencies on Travis CI](<https://devfeed.tech/articles/test-gem-with-multiple-dependencies-on-travis-ci-20081.md>)

Original publisher: [Read original article](<http://jollygoodcode.com/blog/2016/07/03/test-gem-with-multiple-dependencies-on-travis-ci.html>)

Published: 2016-07-03T05:27:56Z

Content type: tutorial

Language: en

Sources: [Jolly Good Code](<https://devfeed.tech/sources/jolly-good-code.md>)

Topics: [ci](<https://devfeed.tech/topics/ci.md>), [Travis CI](<https://devfeed.tech/topics/travis-ci.md>), [test](<https://devfeed.tech/topics/test.md>), [Tool](<https://devfeed.tech/topics/tool.md>)

Tags: [ci](<https://devfeed.tech/tags/ci.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [learn](<https://devfeed.tech/tags/learn.md>), [test](<https://devfeed.tech/tags/test.md>), [tool](<https://devfeed.tech/tags/tool.md>), [travis](<https://devfeed.tech/tags/travis.md>), [travis-ci](<https://devfeed.tech/tags/travis-ci.md>)

### AI overview

A tutorial on testing a Gem with multiple dependencies on Travis CI using thoughtbot's appraisal tool.

### Source excerpt

Learn how to test your Gem with multiple dependencies on Travis CI with thoughtbot's appraisal tool.

## semantic-release - @kentcdodds talks to @boennemann

DevFeed: [semantic-release - @kentcdodds talks to @boennemann](<https://devfeed.tech/articles/semantic-release-kentcdodds-talks-to-boennemann-21254.md>)

Original publisher: [Read original article](<https://juri.dev/blog/2015/08/link-semantic-release-talk/>)

Published: 2015-08-18T00:00:00Z

Content type: opinion

Language: en

Sources: [Juri Strumpflohner](<https://devfeed.tech/sources/juri-strumpflohner.md>)

Topics: [changelog](<https://devfeed.tech/topics/changelog.md>), [npm](<https://devfeed.tech/topics/npm.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [changelog](<https://devfeed.tech/tags/changelog.md>), [github](<https://devfeed.tech/tags/github.md>), [npm](<https://devfeed.tech/tags/npm.md>), [release](<https://devfeed.tech/tags/release.md>), [talks](<https://devfeed.tech/tags/talks.md>), [tests](<https://devfeed.tech/tags/tests.md>), [travis](<https://devfeed.tech/tags/travis.md>), [video](<https://devfeed.tech/tags/video.md>)

### AI overview

A short blog post highlights a talk about semantic-release, a tool that automates npm releases, determines semantic versions from conventional commit messages, generates GitHub changelogs, and can detect breaking changes through tests run on Travis.

### Source excerpt

Lorem ipsum dolor sit amet

## Objective-C on Travis-CI

DevFeed: [Objective-C on Travis-CI](<https://devfeed.tech/articles/objective-c-on-travis-ci-25388.md>)

Original publisher: [Read original article](<https://smileykeith.com/2013/04/11/objective-c-on-travis-ci/>)

Author: Keith Smiley

Published: 2013-04-11T22:58:00Z

Content type: tutorial

Language: en

Sources: [Keith Smiley](<https://devfeed.tech/sources/keith-smiley.md>)

Topics: [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [Continuous integration](<https://devfeed.tech/topics/continuous-integration.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [Jenkins](<https://devfeed.tech/topics/jenkins.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [apple](<https://devfeed.tech/tags/apple.md>), [ci](<https://devfeed.tech/tags/ci.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [continuous-integration](<https://devfeed.tech/tags/continuous-integration.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [github](<https://devfeed.tech/tags/github.md>), [ios](<https://devfeed.tech/tags/ios.md>), [jenkins](<https://devfeed.tech/tags/jenkins.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [self-hosted](<https://devfeed.tech/tags/self-hosted.md>), [submodules](<https://devfeed.tech/tags/submodules.md>), [testing](<https://devfeed.tech/tags/testing.md>), [travis](<https://devfeed.tech/tags/travis.md>), [travis-ci](<https://devfeed.tech/tags/travis-ci.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

A practical guide to configuring Travis CI for Objective-C projects targeting OS X and iOS. It covers repository setup, the .travis.yml configuration file, Xcode shared schemes and test targets, dependency handling, and additional scripts for projects using CocoaPods or submodules.

### Source excerpt

Recently Travis added support for Objective-C and there for OS X and iOS projects for continuous integration testing. I gather that people have previously done this with self-hosted dedicated Jenkins machines but since Apple is so aggressive about dropping support for previous versions of the OS it seems like a pain to have to replace your build server every few years. Enter Travis, a great hosted continuous integration server that hosts a huge amount of open source projects. I figured with this new support I could host some of my smaller libraries just to set how well it worked. The initial setup process was a bit tedious but I eventually got it to work. Assumtions: You have a test framework already integrated with your project (I like Specta/Expecta) You have your project on Github in a public repository. Travis offers a pro account if you'd rather Steps Create a .travis.yml file in the root of your repository (leading dot is intentional). For many projects a file may just look like: language: objective-c By default Travis runs this script for Objective-C projects I was informed on Twitter that the current script that runs Objective-C projects is actually located here. It was originally created by Justin Spahr-Summers here. This script seems to run my projects without any issue, they just occasionally require more initial setup (we'll get to that). Enable your repository in Travis' settings. From your Travis profile page (after signing in with Github) you should see a list of your repositories, you may have to press 'Sync now', where you can switch on the repository you're planning on adding. Configure your project within Xcode. As I assumed above you already have a test target setup. You do have to do a few things in Xcode to make everything work correctly. Go to 'Manage Schemes' in Xcode. Check the 'Shared' box for the scheme that needs to be run. Click 'Edit...' in the bottom left and go to your build action. On the row of your Tests target check the box in the '

## Raking Podspecs

DevFeed: [Raking Podspecs](<https://devfeed.tech/articles/raking-podspecs-25380.md>)

Original publisher: [Read original article](<https://smileykeith.com/2013/01/04/raking-podspecs/>)

Author: Keith Smiley

Published: 2013-01-04T19:09:00Z

Content type: article

Language: en

Sources: [Keith Smiley](<https://devfeed.tech/sources/keith-smiley.md>)

Topics: [Ruby](<https://devfeed.tech/topics/ruby.md>), [rubygems](<https://devfeed.tech/topics/rubygems.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [pull-requests](<https://devfeed.tech/topics/pull-requests.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [dependency](<https://devfeed.tech/tags/dependency.md>), [libraries](<https://devfeed.tech/tags/libraries.md>), [lint](<https://devfeed.tech/tags/lint.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [pull-requests](<https://devfeed.tech/tags/pull-requests.md>), [repo](<https://devfeed.tech/tags/repo.md>), [rewrite](<https://devfeed.tech/tags/rewrite.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [rubygems](<https://devfeed.tech/tags/rubygems.md>), [tool](<https://devfeed.tech/tags/tool.md>), [tools](<https://devfeed.tech/tags/tools.md>), [travis](<https://devfeed.tech/tags/travis.md>)

### AI overview

The article describes automating CocoaPods podspec linting across multiple Ruby versions with rbenv and a Rakefile.

### Source excerpt

I spend a decent amount of time these days helping maintain the CocoaPods specs repo by managing pull requests and issues. CococaPods is an awesome dependency manager similar to Rubygems for Objective-C projects. Unfortunately a lot of submitted podspecs haven't been correctly formatted or they're missing required information. CocoaPods has an awesome build in command pod spec lint that allows you to make sure the spec is valid and complete. Understandably people who are new to CocoaPods trying to submit their libraries are unaware of this awesome tool. Therefore when I look through the pull requests, I like to lint them myself (CocoaPods does utilize Travis but unfortunately it can't do everything). Since CocoaPods supports multiple versions of Ruby (1.8.7 and 1.9.3) to be complete ideally you'd lint them on both versions. Tools like RVM and rbenv(my tool of choice) make it easy to quickly switch between different versions of Ruby using .rvmrc and .rbenv-version respectively. As you can probably assume I wanted to automate this. So I wrote a quick Rakefile to do this for me. #!/usr/bin/env rake # NOTE: Must be using rbenv 4.0 to use `system` and `.ruby-version` ## Set your preferred ruby versions $V18 = 'system' $V19 = '1.9.3-p385' $RBENV = '.ruby-version' # The gem to use $GEM = 'cocoapods' task :default => :lint task :c => :clean desc "Lint podspecs on multiple versions of ruby with rbenv" task :lint do if Dir.glob('*.podspec').count < 1 puts "No podspecs in #{ Dir.pwd }" exit end existed = versionFileExists? if existed old_version = currentVersion end # Loop through all podspecs Dir.glob('*.podspec').each do |file| # Loop through ruby versions 2.times do |x| version = x == 0 ? $V18 : $V19 writeVersion(version) puts "Linting #{ file } on Ruby version #{ currentVersion }" puts lint(file) end end # If the dotfile already existed rewrite the original code if existed writeVersion(old_version) else File.delete($RBENV) if versionFileExists? end end desc "Delete all pod